जब resolv.conf ओवरराइट किया जा रहा है तो मैं अपना DNS कैसे सेट करूं?


279

मैं जो भी जानकारी ऑनलाइन देख रहा हूं, उनमें से अधिकांश को संपादित करने के लिए कहते हैं /etc/resolv.conf, लेकिन मैं जो भी बदलाव करता हूं, वह बस ओवरराइड हो जाता है।

$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- 
#     YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1

ऐसा लगता है कि 127.0.1.1 स्थानीय उदाहरण है dnsmasqdnsmasqडॉक्स संपादित करने के लिए कहते हैं /etc/resolv.conf। मैंने कस्टम नेमसर्वर डालने की कोशिश की /etc/resolv.conf.d/base, लेकिन /etc/resolv.confचलने के बाद भी बदलाव नहीं दिखा sudo resolvconf -u

FYI करें, मैं DNS को प्रति-कनेक्शन के आधार पर बदलना नहीं चाहता, मैं डिफ़ॉल्ट DNS सेटिंग्स को सभी कनेक्शन के लिए उपयोग करना चाहता हूं जब अन्यथा निर्दिष्ट नहीं किया जाता है।

अपडेट करें:

मैंने स्वयं इस प्रश्न का उत्तर दिया: https://unix.stackexchange.com/a/163506/67024

मुझे लगता है कि यह सबसे अच्छा समाधान है:

  1. यह काम करता हैं।
  2. इसमें कम से कम परिवर्तनों की आवश्यकता होती है और
  3. यह अभी भी dnsmasq के DNS कैश के साथ मिलकर काम करता है, बजाय इसे दरकिनार करने के।

अपने प्रश्न का अद्यतन करने के बजाय अपने प्रश्न का उत्तर दें मुझे लगता है कि ... आपकी समस्या का सही उत्तर देने में आसानी होगी
फिलिप गचौड

ऐसा लगता है कि अधिकांश उत्तर उबंटू-उन्मुख हैं, और अत्यधिक जटिल हैं। NetworkManager उपयोगकर्ताओं के लिए एक सार्वभौमिक समाधान केवल इसमें जोड़ना dns=noneहै /etc/NetworkManager/NetworkManager.conf(नीचे मेरे उत्तर में विवरण देखें)।
स्किप्पी ले ग्रैंड गौरौ

मुझे लगता है कि यह उत्तर स्पष्ट करता है कि क्यों संकल्प .conf ओवरराइट किया गया है, तो आप जानते हैं कि इसे कैसे कॉन्फ़िगर किया जाए।
foman

जवाबों:


250

मेरा मानना ​​है कि यदि आप DNS नेमसेवर को ओवरराइड करना चाहते हैं तो आप अपनी baseफाइल में इसके नीचे एक लाइन जोड़ सकते हैं resolv.conf.d

उदाहरण

$ sudo vim /etc/resolvconf/resolv.conf.d/base

फिर अपनी नाम सूची को इस तरह से रखें:

nameserver 8.8.8.8
nameserver 8.8.4.4

अंत में अपडेट करें resolvconf:

$ sudo resolvconf -u

यदि आप resolvconfइसके लिए विभिन्न फाइलों का वर्णन करते हैं , तो इसके लिए मैन पेज देखें /etc/resolvconf/resolv.conf.d/

   /etc/resolvconf/resolv.conf.d/base
          File  containing  basic  resolver  information.  The lines in this 
          file are included in the resolver configuration file even when no
          interfaces are configured.

   /etc/resolvconf/resolv.conf.d/head
          File to be prepended to the dynamically generated resolver 
          configuration file.  Normally this is just a comment line.

   /etc/resolvconf/resolv.conf.d/tail
          File to be appended to the dynamically generated resolver 
          configuration file.  To append nothing, make this  an  empty  
          file.   This file is a good place to put a resolver options line 
          if one is needed, e.g.,

              options inet6

हालांकि headफ़ाइल के शीर्ष पर एक चेतावनी है :

$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

यह चेतावनी वहाँ है कि जब इन फ़ाइलों का निर्माण किया जाता है, तो चेतावनी अंततः resolv.confउस फ़ाइल को बनाने के लिए उपयोग की जाने वाली परिणामी फ़ाइल में अपने तरीके से काम करेगी । तो आप बस आसानी से उन nameserverपंक्तियों को जोड़ सकते हैं जो baseफ़ाइल के लिए ऊपर वर्णित हैं , headफ़ाइल में भी।

संदर्भ


21
Ubuntu 14.04 - जब मैंने नेमसर्वर्स को रखा baseऔर चलाया resolvconf -u, तो नेमसर्वरों को resolv.conf में नहीं रखा गया था - जब मैंने नेमसर्वर्स को रखा head, तो वे थे
HorusKol

7
उबंटू 14.04 - इसके साथ ही कॉन्फ़िगरेशन सेट को भी निर्धारित करना था/run/resolvconf/interface/NetworkManager
बिट्सऑफ़्लॉजिक

3
प्रकार nslookup google.comऔर सूची में पहला आईपी आपका नया नाम होना चाहिए, यदि नहीं, तो आपने गलत किया है
frazras

6
उबंटू 16.04: अगर /etc/resolvconf/resolv.conf.d/headकेवल के साथ संलग्न है , तो काम किया base। के साथ पुष्टि की nslookup google.com
एक्यूमेनस

3
प्रारंभ में, आपने resolvconfस्थापित किया होगा। आप इसे करके स्थापित कर सकते हैं sudo apt-get install resolvconf
मचिट्ठार्गा १५'१ha को

79

मुझे इस सवाल में भी दिलचस्पी है और मैंने @sim के प्रस्तावित समाधान की कोशिश की।

इसे परखने के लिए, मैंने डाला

nameserver 8.8.8.8

में /etc/resolvconf/resolv.conf.d/baseऔर

nameserver 8.8.4.4

में /etc/resolvconf/resolv.conf.d/head

फिर मैंने नेटवर्क को फिर से चालू किया

sudo service network-manager restart

परिणाम यह है कि /etc/resolv.confजैसा दिखता है

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1

और nm-toolबताता है कि डांसर हैं

DNS:             208.67.222.222
DNS:             208.67.220.220

जो मेरे राउटर द्वारा प्रदान किए गए हैं। दूसरी ओर एक पता खोदना बताता है कि

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

यदि मैं सही हूं, तो मैं इस सब से निष्कर्ष निकालता हूं

  1. केवल "सिर" भाग को रेसोल्वोन्फ द्वारा पढ़ा जाता है: "बेस" भाग को किसी तरह से dnsmasq द्वारा नियंत्रित किया जाता है
  2. dnsserver को वास्तव में 8.8.4.4 के लिए मजबूर किया जाता है, dhcp द्वारा प्रदान किए गए सर्वर की परवाह किए बिना, लेकिन आप dnsmasq द्वारा प्रदान की गई कैशिंग को ढीला कर देते हैं, क्योंकि अनुरोध हमेशा 8.8.4.4 को भेजा जाता है।
  3. dnsmasq अभी भी dhcp द्वारा प्रदान किए गए केवल dnsserver का उपयोग कर रहा है।

सब सब में, यह काम करता है, लेकिन मुझे नहीं लगता कि यह अपेक्षित परिणाम है। एक और घनिष्ठ समाधान मुझे लगता है कि निम्नलिखित है। संपादित करें

sudo vim /etc/dhcp/dhclient.conf

फिर जोड़िए

supersede domain-name-servers 8.8.8.8;

परिणाम निम्नलिखित है: resolv.conf में केवल 127.0.0.1 शामिल है, जिसका अर्थ है कि dnsmasq cache को आमंत्रित किया गया है और nm-tool कहते हैं

DNS:             8.8.8.8

जिसका अर्थ है कि यदि खोजा गया नाम कैश में नहीं है, तो यह 8.8.8.8 पर मांगा जाता है, न कि dhcp द्वारा प्रदान किए गए सर्वर पर।

एक और (शायद बेहतर) विकल्प "सुपरस्पेड" के बजाय "प्रीपेन्ड" का उपयोग करना है: इस तरह, यदि नाम 8.8.8.8 द्वारा हल नहीं किया जाता है, तो अनुरोध दूसरे सर्वर पर वापस आ जाता है। वास्तव में, एनएम-उपकरण कहते हैं

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220

4
NS कॉन्फिग में हैक करने से ज्यादा बेहतर जवाब है। विशेष रूप से dhcp के सामने किसी सर्वर को प्रस्तुत करने का विकल्प दिया गया है। नए को बनाने के बिना, समस्या को हल करने के सही संतुलन की तरह लगता है!
स्टीव मिडगले

2
जवाब में इतनी स्पष्टता और विचार और न सिर्फ एक आदेश।
इगौरव

3
यो मैन! "सुपरसीड डोमेन-नाम-सर्वर 8.8.8.8;" जवाब है
जैक

यह ध्यान देने योग्य है कि एनएम-टूल को nmcli
Fiddy Bux

59

मुझे पता चला कि आप dnsmasqनिम्नलिखित पंक्तियों को जोड़कर उपयोग करने वाले नेमसर्वर को बदल सकते हैं /etc/dnsmasq.conf:

server=8.8.8.8
server=8.8.4.4

मेरे पास /etc/dnsmasq.confहालांकि कोई फ़ाइल नहीं है , क्योंकि यह dnsmasq पैकेज द्वारा स्थापित है, लेकिन Ubuntu केवल dnsmasq-base के साथ आता है। मैं भागा sudo apt-get install dnsmasq, फिर संपादित /etc/dnsmasq.conf, फिर sudo service dnsmasq restartऔर sudo service network-manager restart

मैं sudo tail -n 200 /var/log/syslogअपने syslog की जाँच करने और यह सत्यापित करने के लिए भागा कि dnsmasqमेरे द्वारा निर्दिष्ट नेमसर्वर का उपयोग कर रहा था:

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53

4
वहाँ एक कारण है कि यह सबसे अच्छा जवाब के रूप में चिह्नित है ... क्योंकि यह वास्तव में है! बहुत बहुत धन्यवाद! मुझे लगता है कि, आपके द्वारा बताए गए सभी चरणों के बाद, नेटवर्क रीस्टार्ट सब कुछ सुचारू रूप से काम करने के लिए आवश्यक हो सकता है (यह मेरे लिए था .... sudo service network-manager restart)
क्लिंट ईस्टवुड

3
उबंटू 14.04 सर्वर पर आधे समय के लिए एक कोल्ड बूट एक URL का उपयोग करके कोई इंटरनेट कनेक्टिविटी नहीं देगा, लेकिन एक आईपी-एड्रेस काम करेगा। मैंने इसे ठीक करने में बहुत समय व्यतीत किया, महीनों तक साथ दिया, फिर इस समाधान को पाया। मुझे भी लगता है कि यह सबसे अच्छा जवाब है।
नैट लॉकवुड

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

22

स्थिर IP स्थितियों के लिए, Ubuntu सर्वर गाइड फ़ाइल / etc / नेटवर्क / इंटरफेस को बदलने के लिए कहता है, जो इस तरह दिख सकता है:

iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10

आप 8.82.8 जैसे लोगों के लिए IPs 192.168.3.45 192.168.8.10 बदलते हैं

https://help.ubuntu.com/14.04/serverguide/serverguide.pdf पृष्ठ 38


यह निश्चित रूप से सही लगता है, लेकिन मैं अब resolv.conf को कैसे पुन: उत्पन्न करता हूं?
जोएल बर्जर

3
@JoelBerger ifdown eth0; ifup eth0
डेज़ामो नॉर्टन

17
  1. 'नेटवर्क कनेक्शन' खोजें
  2. खोलो इसे

                        यहां छवि विवरण दर्ज करें

  3. फिर वाईफाई या ईथरनेट, या जो भी आप उपयोग कर रहे हैं, उसे चुनें और एडिट पर क्लिक करें। आप इसे प्राप्त करेंगे:

                  यहां छवि विवरण दर्ज करें

  4. टैब में ipv4 चुनें

  5. केवल विधि में पते चुनें
  6. नीचे अपना DNS नाम दर्ज करें, और इसे सहेजें

  7. हो गया


मैं हालांकि प्रत्येक नेटवर्क कनेक्शन के लिए यह करना होगा। अतीत में आप सभी कनेक्शनों के लिए डिफ़ॉल्ट बदल सकते थे, जो कि मैं यहां करना चाह रहा था।
१।

2
मैं तुमसे प्यार करता हूँ! इस UI सेटिंग ने मेरी गांड को सुडोल और विम गड़बड़ से बचाया: '(
ल्यूक

मिंट का उपयोग करना (उबंटू 14.04 पर) - लेकिन इसे केडीई के साथ भी देखा गया है, किसी कारण से - जीयूआई नेटवर्क मैनेजर में डीएनएस सर्वर स्थापित करने से टर्मिनल में उपयोग होने वाली डीएनएस सेटिंग्स प्रभावित नहीं होती हैं
होरसोल

2
सबसे अच्छा जवाब imho। उबंटू 14.04 पर मुझे DNS के लिए 2 बाहरी आईपी-पते मिले जो मेरे होम नेटवर्क के अंदर क्लाइंट्स को पहचान नहीं पाएंगे। वायर्ड कनेक्शन के लिए 'ऑटोमैटिक (डीएचसीपी)' पर विधि छोड़ना मेरे राउटर के आईपी-एड्रेस को मौजूदा सूची में जोड़ देता है । Wlan0 पर वायरलेस कनेक्शन के लिए, यह काम नहीं किया, लेकिन 'ऑटोमैटिक (डीएचसीपी) पतों' पर मेथड ने मेरे राउटर आईपी के साथ बाहरी पतों को बदल दिया और फिर वह भी काम कर गया। के साथ परिवर्तन लागू करें sudo service network-manager restart, थोड़ा प्रतीक्षा करें, के साथ सत्यापित करें nmcli d list | grep 'DNS\|IP-IFACE'। और अपने आंतरिक ग्राहक को नाम से पिंग करें।
रॉल्फबली

13

एक त्वरित और गंदा वर्कअट जिसका उल्लेख अभी तक नहीं किया गया था, resolv.confउसे संपादित करने के बाद फ़ाइल पर अपरिवर्तनीय ध्वज सेट किया जा रहा है।

$ sudo nano /etc/resolv.conf

इसे जोड़ें और सहेजें:

nameserver 8.8.8.8

फिर:

$ sudo chattr +i /etc/resolv.conf

यह ट्रिक काम आना चाहिए। मैं अपने सिस्टम पर भी ऐसा करता हूं।


18
किसी भी समय आपके समाधान में chattr शामिल है, यह वास्तव में समाधान नहीं है।
जेफ जिरसा

1
यह वही है जो मैं उन प्रणालियों पर करता हूं जहां मुझे किसी कारण से DNS को अस्थायी रूप से बदलने की आवश्यकता है और कॉन्फ़िगरेशन को संशोधित नहीं करना चाहता। एक स्थायी समाधान के रूप में मैं इसकी सिफारिश नहीं करूंगा।
hochl

3
"क्विक एंड डर्टी वर्कअराउंड"
यूनीस बेंसला

10
यह गंदा नहीं है। प्रोग्राम जो स्थानीय कॉन्फ़िगरेशन को नष्ट कर देते हैं क्योंकि उन्हें लगता है कि वे जानते हैं कि वे गंदे हैं।

11

DNS विन्यास लिनक्स के तहत

लिनक्स पर डीएनएस का उपयोग सी लाइब्रेरी में रूटीन के सेट पर किया जाता है जो इंटरनेट डोमेन नेम सिस्टम (डीएनएस) तक पहुंच प्रदान करता है। रिज़ॉल्वर कॉन्फ़िगरेशन फ़ाइल ( resolv.conf) में ऐसी जानकारी होती है जो किसी प्रक्रिया द्वारा पहली बार मंगाई गई रिज़ॉल्वर रूटीन द्वारा पढ़ी जाती है। संक्षेप में प्रत्येक प्रक्रिया अनुरोध करती है कि डीएनएस /etc/resolv.confपुस्तकालय से अधिक पढ़ेगा । एनएसएस इसके शीर्ष पर स्तरित है, और इसके द्वारा कॉन्फ़िगर किया गया है /etc/nsswitch.conf

लिनक्स DNS कॉन्फिगरेशन फाइल में स्थित है /etc/resolv.conf लेकिन BUT में कई प्रोग्राम / सर्विसेज हैं जो DNS कॉन्फिगरेशन फाइल को अपने आप मैनेज करना और हैंडल करना चाहते हैं /etc/resolv.conf। कुछ स्थितियों में आप इस फ़ाइल को स्वयं प्रबंधित करना चाह सकते हैं। DNS को प्रबंधित करने वाले प्रत्येक प्रोग्राम / सेवा की अपनी स्वयं की कॉन्फ़िगरेशन फ़ाइलें होती हैं जैसे /etc/dnsmasq.conf(dnsmasq सेवा के लिए) और कनेक्शन परिवर्तन और / या अन्य घटनाओं पर DNS कॉन्फ़िगर को जोड़ना ... एक त्वरित समाधान DNS कॉन्फ़िगरेशन फ़ाइल को लॉक करना है, chattr +i /etc/resolv.confलेकिन इसकी अनुशंसा नहीं की जाती है निश्चित मामले में, एक बेहतर समाधान यह है कि DNS (dnsmasq / network-manager / resolvconf / etc) का उपयोग करके सभी प्रोग्राम / सेवाओं को सही ढंग से सेटअप किया जाए।

DNS का नियंत्रण वापस लेना

यहाँ resolv.conf के नियंत्रण को वापस पाने के लिए और इसे ओवरराइट करने से कैसे बचें ( resolv.conf के अलावा अन्य स्थान से DNS को सेटअप / अक्षम कैसे करें) से बचने के लिए यहाँ सेटअप की एक विस्तृत सूची है, ध्यान दें कि resolvconf resolv.conf से भी एक स्वतंत्र कार्यक्रम है। आपके सिस्टम / कॉन्फ़िगरेशन के आधार पर आपके पास यहां सूचीबद्ध कार्यक्रमों में से एक या कई नहीं हो सकते हैं।

1. Resolvconf:

फ़ाइलों को कॉन्फ़िगर करें

cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4

कॉन्फिगर को अपडेट करें

sudo resolvconf -u

Resolvconf को अक्षम करें

systemctl disable --now resolvconf.service 

2. Dnsmasq सेवा:

फ़ाइलों को कॉन्फ़िगर करें

cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4

कॉन्फिगर को अपडेट करें

sudo systemctl restart dnsmasq.service

3. नेटवर्क प्रबंधक:

फ़ाइलों को कॉन्फ़िगर करें

/etc/NetworkManager/*

डीएनएस को अक्षम करें

$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none

DNS सक्षम करें

$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default

[global-dns]
searches=example.com

[global-dns-domain-*]

सुलझी हुई सेवा का उपयोग करें

$ cat /usr/lib/NetworkManager/conf.d/resolved.conf 
[main]
dns=systemd-resolved

रिजोल्वोन्फ का उपयोग करें

$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf 
[main]
rc-manager=resolvconf

कॉन्फिगर को अपडेट करें

systemctl restart NetworkManager.service

4. नेटवर्क इंटरफेस:

फ़ाइलों को कॉन्फ़िगर करें

$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

विन्यास को अद्यतन करें

reboot

5. डीएचसीपी ग्राहक:

फ़ाइलों को कॉन्फ़िगर करें

$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

विन्यास को अद्यतन करें

reboot

6. Rdnssd सेवा:

Rdnssd को अक्षम करें

systemctl disable --now rdnssd.service

7. हल की गई सेवा:

निराकरण किया गया

systemctl disable --now systemd-resolved.service

8. Netconfig:

फ़ाइलों को कॉन्फ़िगर करें

/etc/sysconfig/network/config

Netconfig अक्षम करें

cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""

विन्यास को अद्यतन करें

reboot

DNS सर्वर सेट करना

एक /etc/resolv.confविन्यास का उदाहरण

#Cloudflare
nameserver 1.0.0.1

#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4

#Cloudflare 
#nameserver 1.1.1.1

#Classic Config
#nameserver 192.168.1.1
#search lan

10

मेरा मुद्दा थोड़ा अलग था, मैं अपने राउटर डीएनएस सर्वर को ओवरराइड करना चाहता था। मुझे यह लिंक उबंटू से मिला: https://wiki.ubuntu.com/OverrideDNSServers

यह कहता है: यदि आप डीएचसीपी सर्वर द्वारा दी गई DNS सेटिंग्स को ओवरराइड करना चाहते हैं, तो खोलें

/etc/dhcp3/dhclient.conf

और निम्नलिखित पंक्ति जोड़ें:

supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

<dns_ip_address*>उचित सामग्री के साथ आइटम की जगह ।


यह वह उत्तर है जिसने मेरे मुद्दे को हल किया।
माइकल

उत्तम। बस यह जोड़कर कि आपको परिवर्तनों को सक्षम करने के लिए सर्विस नेटवर्किंग को फिर से शुरू करना चाहिए।
निक ट्रायंटाफिलो

यदि हमारे पास वह dhcp3फ़ोल्डर नहीं है तो क्या होगा ? मेरे पास ज़ुबांटू 17.10 है, क्या यह /etc/dhcpबस चले गए हैं ?
प्लाज़्माबिन्टुरॉन्ग

4

हो सकता है कि मुझे कुछ याद आ रहा हो, लेकिन https://help.ubuntu.com/14.04/serverguide/network-configuration.html पर दिए गए निर्देशों के अनुसार आप जो कुछ भी कर रहे हैं, वह निम्न अद्यतन है। मैं एक प्रॉक्सी नहीं चला रहा हूं - बस एक फ़ायरवॉल और स्थानीय DNS के पीछे एक मशीन (उदाहरण Googles दिखाता है, लेकिन आपको जो कुछ भी ज़रूरत है उसे सेट करें)।

nano /etc/network/interfaces

चूक:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
auto eth0
iface eth0 inet dhcp

अपडेट:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
#iface eth0 inet dhcp
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x

#nameservers
# you may not need dns-search
# I use it because I'm running this on a Windows network 
# so its useful to have
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

रिबूट, यदि आप कर सकते हैं।


3

dns-nameservers XXX.XXX.XXX.Xअपनी /etc/networking/interfacesफ़ाइल में जोड़ने का प्रयास करें ।


एक टिप्पणी छोड़ दो जब आप नीचे, कृपया। यह मैनुअल में दी गई विधि है , पृष्ठ 38.
ज़ूक

1
अप्रमाणित मैनुअल सभी IP को एक पंक्ति में दिखाता है। यह उत्तर एक पंक्ति जोड़ने का सुझाव देता है। और अंतिम संख्या केवल एक X चौड़ी क्यों है? मुझे लगता है कि यह ज्यादातर अनौपचारिक और अनिश्चित छोटी चैट-शैली लेखन था जिसने डाउनवोट्स, @ ज़ूक को जन्म दिया।
सेस टिम्मरमैन

2

यहाँ कुछ उत्तर ठीक काम करते हैं। हालांकि मैं इस तथ्य मैं मैन्युअल रूप से सिर्फ "उचित" स्थापित करने के लिए विन्यास फाइल के माध्यम से जाने के लिए है से खुश नहीं था DNSजो मैं पहले से ही अधिक प्राप्त कर रहा DHCPसाथ NetworkManager

मैंने थोड़ी खुदाई की और देखा कि /etc/resolv.confफाइल वास्तव में एक लिंक है और यह इंगित कर रहा है /run/systemd/resolve/stub-resolv.conf। कुछ प्रयोग करने के बाद यह प्रतीत होता है कि /run/systemd/resolve/निर्देशिका में एक और फ़ाइल है, resolv.confजिसमें पहले से ही आपके द्वारा प्राप्त सेटिंग्स शामिल हैं DHCP। इसलिए, मैन्युअल रूप से कॉन्फ़िगरेशन फ़ाइलों को अधिलेखित / बनाने के बजाय /etc/, आप बस फ़ाइल /etc/resolv.confको इंगित करने के लिए पुनः लिंक कर सकते हैं /run/systemd/resolve/resolv.confऔर सभी को बस ठीक होना चाहिए:

# sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

अब आपको Gnome में नेटवर्क प्रबंधक से भी सेटिंग संपादित करने में सक्षम होना चाहिए। :)

यकीन नहीं है कि यह पुराने ubuntu पर काम करेगा, लेकिन यह Ubuntu 17.10 पर करता है।


जब हम systemd-resolve --flush-cacheमूल लिंक की गई फ़ाइल को
हटाते हैं

1

EDIT MAY 6,2016

मैंने /etc/Network-Manager/system-connections/निर्देशिका में सिस्टम कनेक्शन के लिए सभी सेटिंग्स को अपडेट करने के लिए एक स्क्रिप्ट लिखी है । जीयूआई जिसे आप व्यक्तिगत कनेक्शन संपादित करने के लिए उपयोग करते हैं, उस निर्देशिका में एक विशेष फ़ाइल को संपादित करता है। स्क्रिप्ट सभी फ़ाइलों को अपडेट करती है - यह सिर्फ उन लोगों को खोजती है जिनके पास grep के साथ सेट नहीं है और इसे awk के साथ सेट करता है।

चूंकि उन फ़ाइलों को sudoएक्सेस करने के लिए एक्सेस की आवश्यकता होती है , इस स्क्रिप्ट को sudoफिर से चलाएँ - नेटवर्क मैनेजर को पुनरारंभ करें

#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in 
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script

set -x

for file in /etc/NetworkManager/system-connections/* ; do
        grep 'dns=208.67.220.220;' "$file"  || ( awk '{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220.
220;\nignore-auto-dns=true"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done

कार्रवाई में स्क्रिप्ट:

यहां छवि विवरण दर्ज करें

मूल पोस्ट यहां कुछ उपयोगकर्ताओं ने बताया कि DNS किसी तरह नियंत्रित होता है dnsmasq। यह वास्तव में सच है। मुझे कुछ हद तक एक छोटी सी समस्या का सामना करना पड़ा है, जहां कोई फर्क नहीं पड़ता कि मैं कैसे बदल गया headया bodyअंदर आया /etc/resolvconf/resolv.conf.d, मेरा कंप्यूटर वास्तव में डोमेन नाम से नजरबंद नहीं हो सका - केवल आईपी पते के साथ काम करना।

मैंने जो किया वह /etc/NetworkManager/NetworkManager.confफ़ाइल को संपादित करना है। मूल रूप से, यह कहा dns=dnsmasqलेकिन मैंने इसे बदल दिया dns=208.67.222.222:। हालाँकि यह तरीका nm-tool208.67.222.222 का उल्लेख नहीं करता है, फिर भी मैं केवल आईपी पते ही नहीं, डोमेन नाम का भी उपयोग कर पा रहा था।

यहां बताया गया है कि मेरी NetworkManager.confफ़ाइल अब कैसी दिखती है:

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222

[ifupdown]
managed=false

नोट: मेरी समस्या और इस समाधान के बारे में अधिक जानकारी के लिए, मेरी पोस्ट askubuntu.com पर देखें ।

अद्यतन # 1

आज विश्वविद्यालय से घर लौटने के बाद, मुझे पता चला कि मैं अपने घर के वाईफाई से नहीं जुड़ सकता। मैंने पढ़ा-अप किया है एक छोटे से पर man NetworkManager.confहै और यह पता चला है कि dns=में [main]वास्तव में प्लग-इन के लिए एक लाइन है, इसलिए लाइन dns=dnsmasqवास्तव में NetworkManager को dnsmasq प्लगइन जोड़ने, जाहिरा तौर पर किया जाता है।

इसलिए मेरा समाधान अभी भी काम कर रहा है, जैसा कि मैंने उम्मीद की थी। यहाँ आदमी पृष्ठ से अंश है:

dns=plugin1,plugin2, ... List DNS plugin names separated by ','. 

DNS प्लगइन्स का उपयोग स्थानीय कैशिंग नेमेस्टर कार्यक्षमता प्रदान करने के लिए किया जाता है (जो DNS प्रश्नों को गति देता है) और DNS डेटा को उपयोग करने वाले अनुप्रयोगों पर धकेलने के लिए।

इसलिए dns=208.67.222.222मैंने सेटिंग करके , मूल रूप से NetworkManager को उस प्लगइन का उपयोग करने से रोका, जो अन्यथा स्थानीय DNS सर्वर का उपयोग करता था (जो कि स्पष्ट रूप से काम नहीं करता है)।


1

कर रहे हैं दो तरीकों

विधि 1

उपयोग करने के लिए DNS सर्वर को headअंडर में फाइल अपडेट करके बदला जा सकता हैresolv.conf.d

$ echo 'nameserver 1.1.1.1' | sudo tee /etc/resolvconf/resolv.conf.d/base

और फिर चला

$ sudo resolvconf -u

ऊपर निर्देशिका resolv.confमें एक जेनेरिक फ़ाइल उत्पन्न करेगा /etc। आपके सभी संकल्प अनुरोधों को उपरोक्त नामांकित व्यक्ति को भेजा जाएगा। हल किया।

हालाँकि इसके निहितार्थ हैं। पते के प्रस्तावों के लिए resolvconfसीधे क्वेरी का उपयोग करते समय 1.1.1.1, dnsmasq द्वारा प्रदान की गई कैशिंग की शक्ति चली गई है। हर अनुरोध पर जाएंगे1.1.1.1

विधि 2

यदि आप ऊपर नहीं चाहते हैं और DNS प्रस्तावों के लिए dnsmasq का उपयोग करें तो इस उत्तर को देखें । इसका उत्तर केवल यहाँ दिया गया है।

/etc/dnsmasq.confफ़ाइल में निम्न सामग्री जोड़ें ।

सर्वर = 1.1.1.1

फिर dnsmasq सेवा को पुनरारंभ करें

$ sudo systemctl restart dnsmasq.service

चीजें ठीक होंगी। हल किया।


0

DNS को बदलने का आसान तरीका:

$ sudo nano /etc/network/interfaces

यदि समस्याएँ आती हैं, तो स्थापित करें nano:

$ sudo apt-get install nano -y

फिर ..

  1. इसे खोजो: dns-nameservers
  2. अगर आपको यह नहीं मिलता है तो इसे वहां टाइप करें
  3. मैंने अपना काम इस तरह किया: dns-nameservers 199.85.126.10 199.85.127.10

मुझे उम्मीद है कि यह सबसे अच्छा तरीका है, मैंने इसे एक VPS पर इस तरह से किया।


0

जड़ पर:

  1. dns=dnsmasqपर टिप्पणी करें/etc/NetworkManager/NetworkManager.conf
  2. supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;के अंत में जोड़ें/etc/dhcp/dhclient.conf
  3. sudo service network-manager restart

निम्नलिखित ऊपर दिखाए गए परिवर्तन करता है:

$ sudo sed -i 's/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/' \
   /etc/NetworkManager/NetworkManager.conf

$ echo 'supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;' | \
   sudo tee --append /etc/dhcp/dhclient.conf

$ sudo service network-manager restart

पुनरारंभ करने की प्रक्रिया को पूरा करने के लिए 7/10 सेकंड प्रतीक्षा करें, "nslookup nist.gov" के साथ अपने कॉन्फ़िगरेशन की जांच करें। उबंटू LTS 14.04 पर अच्छी तरह से काम करता है।


0

NB: अधिकांश उत्तरों की तरह, यह एक NetworkManager के उपयोग को मानता है। हालांकि अधिकांश अन्य उत्तर के विपरीत, यह के उपयोग ग्रहण नहीं करता है resolvconf, dhclientया कुछ और - सावधान रहना है कि वे हालांकि (अद्यतन देखें), घेर सकते हैं।

इस प्रश्न के विचारों की संख्या को देखते हुए यह बहुत अविश्वसनीय है कि यह 8 वर्ण समाधान अभी तक पोस्ट नहीं किया गया है: के अनुसार man NetworkManager.conf,

dns: […] कोई नहीं: NetworkManager resolv.conf को संशोधित नहीं करेगा। इसका तात्पर्य आरसी-प्रबंधक अप्रबंधित है

इसलिए जोड़ते हैं

dns=none

में [main]की धारा /etc/NetworkManager/NetworkManager.confतो NetworkManager को पुनः आरंभ और इसे संशोधित नहीं होगा /etc/resolv.confअब और।

ध्यान दें कि सेटिंग के rc-manager=unmanagedबराबर होना चाहिए dns=none, और एक प्रतीकात्मक लिंक के रूप में rc-manager=symlinkहोने के साथ-साथ सेटिंग /etc/resolv.confएक बेहतर विचार हो सकता है (ऊपर उल्लेखित मैनपेज पढ़ें)।

अपडेट करें :

NetworkManager द्वारा ओवरराइटिंग बंद करने के बाद /etc/resolv.conf, मुझे लगा dhcpcdकि /etc/resolv.confबूट पर एक बेकार खाली फ़ाइल पहले से ही बदल रही है। dhcpcd.confमदद का मेनपेज , यह जोड़ने के लिए पर्याप्त है

nohook resolv.conf

आपके dhcpcd.conf(मेरा है /etc/dhcpcd.conf) में है।


0

मेरे लिनक्स सेंटोस 7 सर्वर पर इस विकल्प का उपयोग करने का सबसे अच्छा तरीका मैं बदल सकता था

nmtui

कमांड जो यहां किसी भी उत्तर में नहीं सुझाई गई है। आप इस उपकरण में नेमसर्वर को संपादित कर सकते हैं और जब आप इस उपयोगिता से नेटवर्कमैन के विकल्प बदलते हैं तो वे /etc/resolv.confरिबूट के बाद स्वचालित रूप से लागू हो जाएंगे । यहां आप अधिक जानकारी पा सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.