मैक ओएस एक्स पर टर्मिनल सर्वर (या स्क्रिप्ट) से डीएनएस सर्वर बदलें


29

मैं मैक ओएस एक्स पर टर्मिनल से अपना डीएनएस सर्वर कैसे बदल सकता हूं? [मुझे इसकी आवश्यकता है क्योंकि मेरा DNS मेरे वीपीएन के साथ सही तरीके से काम नहीं कर रहा है। कभी-कभी यह मेरे मुख्य कनेक्शन के लिए डीएनएस का उपयोग कर रहा है, और कभी-कभी यह वीपीएन (जो इसे होना चाहिए) के लिए निर्दिष्ट डीएनएस का उपयोग कर रहा है।

जवाबों:


15

आप scutilटर्मिनल से अंतःक्रियात्मक रूप से उपयोग कर सकते हैं । sudo scutilजहां उपयुक्त हो, अपने DNS सर्वरों की अदला-बदली करके इन कमांडों को चलाएं और चलाएं :

> खुला
> d.init
> d.add ServerAddresses * 8.8.8.8 9.9.9.9
> सेट राज्य: / नेटवर्क / सेवा / PRIMARY_SERVICE_ID / DNS
> छोड़ दिया

इसके बजाय अपने DNS सर्वर का उपयोग 8.8.8.8और 9.9.9.9उपयोग करें।

एकमात्र समस्या यह है कि रिबूट के पार लगातार नहीं है । यदि आप स्थायी परिवर्तन चाहते हैं, तो आप ncutil चाहते हैं । /etc/resolv.confओएस एक्स के नए संस्करणों में कारण संपादन पर्याप्त नहीं है, क्योंकि कॉन्फ़िगर अब वर्तमान सेटिंग्स की जानकारी संग्रहीत करने के लिए एक डेटाबेस का उपयोग करता है, जिसे अन्य एप्लिकेशन पढ़ते हैं। कुछ एप्लिकेशन अभी भी पढ़ेंगे /etc/resolv.conf (उदाहरण के लिए होस्ट), हालांकि यह सभी अनुप्रयोगों के लिए नहीं है।


2
8.8.8.8 हालांकि एक वैध है। Google का सार्वजनिक DNS 8.8.4.4 द्वितीयक है। :-)
भूल गए अर्धविराम

मुझे पता है, मैं इसका इस्तेमाल करता हूं :)
जॉन टी

1
यह होना चाहिए। आप scutil --dnsपुष्टि करने के लिए उपयोग कर सकते हैं।
जॉन टी

2
यह मेरे मैक OSX 10.7.5 एमबीपी पर काम नहीं करता है, कम से कम जब सचमुच किया जाता है तो नहीं। क्या मुझे set State:/Network/Service/PRIMARY_SERVICE_ID/DNSलाइन में कुछ भी बदलना चाहिए या क्या मैं इसका उपयोग कर सकता हूं? नए DNS सर्वरों scutil --dnsको बदलाव के बाद आउटपुट में दिखाना चाहिए ?
30:57

2
PRssary_SERVICE_ID को बदलने के लिए कुंजी खोजने के लिए @ssc रन का scutilअनुसरण किया जाता > listहै।
जे। मोनी

46

आप उपयोग कर सकते हैं networksetup:

sudo networksetup -setdnsservers <networkservice> DNS1, DNS2, DNS3

जैसे (हवाई अड्डे का कनेक्शन Google के DNS सर्वर का उपयोग करना)

sudo networksetup -setdnsservers AirPort 8.8.8.8 8.8.4.4

आप चलाकर नेटवर्क सेवा का नाम जान सकते हैं networksetup -listallnetworkservices। यह शायद 'वाई-फाई' होगा।

यह वैसा ही है जैसा कि आप सिस्टम वरीयता में नेटवर्क वरीयता फलक में एंट्रेस को संपादित करने के लिए थे, इसलिए यह विद्रोहियों के लिए लगातार है।

आप स्नो लेपर्ड पर एक DNS मुद्दे में चल रहे हो सकते हैं जो तब होता है जब ऑर्डर डीएनएस सर्वर में परिवर्तन होते हैं (प्रश्न 84144 देखें )


वाह, 84144 समस्या मैं कर रहा हूँ। अभी भी यह सब संसाधित कर रहा है .... बहुत बहुत धन्यवाद!
दान रोसेनस्टार्क

6
DNS को हटाने के इच्छुक किसी को भी नोट करें, बस DNS के बजाय "खाली" (बिना उद्धरण के) sudo networksetup -setdnsservers <networkservice> empty
लिखें

14

मेरे पास चीलियन के पोस्ट का जवाब देने के लिए पर्याप्त अंक नहीं हैं, लेकिन इसे जोड़ने के लिए मैं इंटरफेस को सूचीबद्ध करने के साथ शुरू करूंगा

networksetup -listallnetworkservices

एक बार आपके पास इंटरफ़ेस है जिसे आप बदलना चाहते हैं आप नीचे कर सकते हैं (मैं वाई-फाई का उपयोग कर रहा हूं लेकिन आप कोई अन्य इंटरफ़ेस कर सकते हैं)

sudo networksetup -setdnsservers Wi-Fi empty
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
sudo killall -HUP mDNSResponder

ऊपर की पहली पंक्ति डीएनएस सेटिंग्स को खाली कर देगी और उसके बाद डीएनएस सर्वर का उपयोग करना चाहते हैं और डीएनएस कैश को बारीक करना चाहते हैं।

DNS परिवर्तन को सत्यापित करने के लिए आप पहले या बाद में या बस बाद में ऐसा कर सकते हैं

scutil --dns | grep 'nameserver\[[0-9]*\]'

जो भी इस पृष्ठ पर ठोकर खाई है। मेरे पास GitHub पर एक Gist है जो अब मदद करनी चाहिए। gist.github.com/dkittell/34fe7b7422323fba546948b7448933a5
डेविड किटेल

1

resolv.conf OSX पर अब काम नहीं करता है। उस फ़ाइल के शीर्ष पर सूचना इस प्रकार है:

#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#

इसके अलावा, networksetup -listallnetworkservicesसभी वीपीएन इंटरफेस को सूचीबद्ध नहीं करता है।

यहाँ सही इंटरफ़ेस को लक्षित करने के लिए स्कूटिल का उपयोग करने का एक तरीका है: 1. commands.txtइंटरैक्टिव स्कूटिल टूल के लिए अपने कमांड के साथ एक फ़ाइल बनाएं । जैसे मेरे मामले में पल्स सुरक्षित इंटरफ़ेस के लिए सामग्री:

get State:/Network/Service/net.pulsesecure.pulse.nc.main/DNS
d.add ServerAddresses * 8.8.8.8 9.9.9.9
set State:/Network/Service/net.pulsesecure.pulse.nc.main/DNS
  1. में पाई गई कमांड के साथ स्कूटिल चलाएं (आपको इसके लिए sudo चाहिए set)
sudo scutil < commands.txt

0

आपको इसे संपादित करने में सक्षम होना चाहिए /etc/resolv.conf (रिबूट के बाद रीसेट होना याद रखें), आशा है कि यह मदद करता है - http://developer.apple.com/mac/library/documentation/Darwin/Reference/ manpages / man5 / resolver.5.html


5
ओएस एक्स (10.2 और पूर्व) के पुराने संस्करणों के रूप में, यह जाने का तरीका है। हालांकि नए रिलीज के साथ नहीं।
जॉन टी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.