सिस्टम को हल करने और DNS को dnsmasq के साथ कैसे निष्क्रिय करें?


32

Ubuntu 16.10+ systemd-resolvedDNS रिज़ॉल्वर के रूप में उपयोग करता है ।

मैं सेटअप 16.04 का उपयोग करता हूं, dnsmasqरिसोल्वर के रूप में।

मैं 16.10+ पर, विशेषकर 17.04 को कैसे कर सकता हूं?


शायद यह मदद कर सकता है: askubuntu.com/questions/1032450/…
cmak.fr

जवाबों:


35

dnsmasq पैकेज अभी भी 16.10 और 17.04 में उपलब्ध हैं।

  1. dnsmasqअक्षम करने से पहलेsystemd-resolved स्थापित करें और निर्भरता (या कम से कम उनके पैकेज डाउनलोड करें) :

    sudo apt-get install dnsmasq
    
  2. अक्षम systemd-resolvedऔर सत्यापित dnsmasqहो रहा है:

    sudo systemctl stop systemd-resolved
    sudo systemctl disable systemd-resolved
    
    systemctl status dnsmasq
    
  3. dnsmasqस्वाद के लिए मौसम । अपनी सेटिंग लागू करने के बाद, पुनरारंभ करें dnsmasq:

    sudo systemctl stop dnsmasq
    sudo systemctl start dnsmasq
    

चरण 2 के बाद आप चरण 3 के पूरा होने तक एक कार्य प्रणाली रिज़ॉल्वर के बिना हो सकते हैं। आपको dnsmasqडिफ़ॉल्ट कॉन्फ़िगरेशन के साथ कार्य करने के लिए नेटवर्किंग सबसिस्टम (या केवल रीबूट) को पुनरारंभ करने की आवश्यकता हो सकती है । मेरे परीक्षण में, एक ज्ञात डीएनएस सर्वर को जोड़ना /etc/dnsmasq.confऔर पुनः आरंभ dnsmasqकरना इसे लाइवसीडी वातावरण में काम करने के लिए पर्याप्त था।


शानदार जवाब, और NetworkManager को अक्षम करने के दौरान केवल एक ही समाधान स्वीकार्य नहीं है!
bogl

3
मेरे लिए, यह एक शानदार उत्तर था, लेकिन @ ब्लाबला के उत्तर से अतिरिक्त चरणों की आवश्यकता थी, जो कि इसमें शामिल dns=dnsmasqहै/etc/NetworkManager/NetworkManager.conf
रॉबर्टो टेले

मुझे भी। सिस्टम-सॉल्यूड और अनबाउंड स्विचिंग से dnsmasq से जूझने के बाद ubuntu 17.10 पर ट्रिक किया। मुझे हालांकि ब्लाब्ला के अतिरिक्त का उपयोग करना था।
अल्बर्टो एल। बोनफिग्लियो

17

इसके जवाब में @quixotic:

सुनिश्चित करें कि आपके पास /etc/NetworkManager/NetworkManager.conf है:

[main]
dns=dnsmasq

यदि आपको इसे जोड़ने की आवश्यकता है, तो NetworkManager को इस तरह से पुनरारंभ करें:

sudo systemctl restart NetworkManager

और इसके /etc/resolv.confलिए एक सहजीवन होना चाहिए /var/run/NetworkManager/resolv.conf। इस तरह किया जा सकता है

sudo rm /etc/resolv.conf; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

वास्तव में मैंने इसे निर्धारित किया है dns=defaultऔर यह ठीक काम करता है क्योंकि मेरे पास नामांकित व्यक्ति हैं जो तब नेटवर्क मैनजर द्वारा परिभाषित किया गया था बजाय कि डैनसमैक में परिभाषित किए; यह मेरे लिए काम करता है - एनएम ने केडीई के एनएम कॉन्फ़िगरेशन में सिस्टम ट्रे के माध्यम से की गई सेटिंग्स से नेमवेर्सर्स प्राप्त करता है। मैं अपने घर नेटवर्क एफडब्ल्यूआईडब्ल्यू पर निश्चित आईपी का उपयोग करता हूं।
pbhj

1
यह कदम मेरे लिए @ क्विक्सोटिक के उत्तर के लिए एक आवश्यक जोड़ था (ubuntu 17.04, पूर्ण स्थापना, लाइवसीडी नहीं)।
रॉबर्टो टेले

0

सिस्टमड-सॉल्यूड के मैनुअल के अनुसार , सिस्टमड-सॉल्वड तीन अलग-अलग इंटरफेस के माध्यम से नाम समाधान सेवाओं के साथ प्रदान करता है:

  1. "बस में पूरी तरह से चित्रित एपीआई सिस्टेम-सॉल्व्ड एक्सपोज़"
  2. "स्थानीय लूपबैक इंटरफेस पर आईपी एड्रेस 127.0.0.53 पर एक स्थानीय डीएनएस स्टब श्रोता"
  3. RFC3493 द्वारा परिभाषित glibc getaddrinfo (3) API और इसके संबंधित रिज़ॉल्वर फ़ंक्शन, gethostbyname (3) सहित। यह एपीआई व्यापक रूप से समर्थित है, जिसमें लिनक्स प्लेटफॉर्म से परे भी शामिल है। अपने वर्तमान स्वरूप में, हालांकि यह DNSSEC सत्यापन स्थिति की जानकारी को उजागर नहीं करता है, और केवल तुल्यकालिक है। यह API glibc नाम सेवा स्विच (nss (5)) द्वारा समर्थित है। ग्लिबेक के एनएसएस रिवाल्वर कार्यों को सिस्टमड-सॉल्वड के माध्यम से होस्ट नामों को हल करने की अनुमति देने के लिए ग्लिब्स एनएसएस मॉड्यूल एनएसएस-रिज़ॉल्यूशन (8) का उपयोग आवश्यक है।

ऐसा लगता है कि पहले दो इंटरफेस सामान्य DNS रिज़ॉल्यूशन में हस्तक्षेप नहीं करेंगे और मेरे लिए समस्या तीसरे पर निवास करने की संभावना है।

Nss- संकल्प के मैनुअल में :

एनएसएस मॉड्यूल को सक्रिय करने के लिए, "मेजबानों:" के साथ /etc/nsswitch.conf पर शुरू होने वाली लाइन में "रिज़ॉल्यूशन" जोड़ें। विशेष रूप से, इसे "रीसेट" को /etc/nsswitch.conf के "होस्ट्स": "लाइन (लेकिन" फाइल "या" मायमाचीन्स "प्रविष्टियों) के ठीक बाद रखने की सलाह दी जाती है, यदि मौजूद है तो" डीएनएस "प्रविष्टि से ठीक पहले। "([UNAVAIL = वापसी]", यह सुनिश्चित करने के लिए कि DNS प्रश्न हमेशा सिस्टम-सॉल्यूड (8) के माध्यम से रूट किए जाते हैं यदि यह चल रहा है, लेकिन अगर यह सेवा उपलब्ध नहीं है तो nss-dns पर रूट किया जाता है

तो क्या जरूरत है "मेजबान में" डीएनएस "पूर्व" संकल्प "बनाने के लिए: /etc/nsswitch.conf की लाइन" । और फिर getaddrinfoबस /etc/resolv.conf का पालन करना चाहिए ।

यह समाधान केवल सिस्टम रिज़ॉल्यूशन को सभी DNS रिज़ॉल्यूशन अनुरोधों को संभालने से रोकता है और एक विशिष्ट नेटवर्क प्रबंधक तक सीमित नहीं है। और यह सुनिश्चित करता है कि LLMNR और mDNS सेवा सामान्य रूप से काम कर रहे हैं।

(मैं इस बात से परिचित नहीं हूं कि लिनक्स के तहत नाम रिज़ॉल्यूशन कैसे काम करता है और इस बारे में भी अनिश्चित है कि मुझे इन मैनुअल से क्या समझ में आया है। यदि मुझे कुछ गलत मिला है तो बिंदु बताते हैं। Thx :))


0

For (X) Ubuntu 18.04 ( stackexchange पर मेरा उत्तर देखें )।

यहाँ इसकी प्रति है (क्या मुझे इसकी प्रति बनानी चाहिए?)

यहाँ (X) Ubuntu 18.04 बायोनिक के लिए समाधान है।

Dnsmasq स्थापित करें

sudo apt install dnsmasq

पोर्ट 53 पर सिस्टेम-सॉल्व्ड डिसेबल श्रोता को अक्षम करें (/etc/systemd/resolved.conf को न छुएं, क्योंकि यह अपग्रेड पर अधिलेखित हो सकता है):

$ cat /etc/systemd/resolved.conf.d/noresolved.conf 
[Resolve]
DNSStubListener=no

और इसे पुनः आरंभ करें

$ sudo systemctl restart systemd-resolved

(वैकल्पिक रूप से इसे पूरी तरह से अक्षम करें $ sudo systemctl disable systemd-resolved.service)

/Etc/resolv.conf हटाएं और फिर से बनाएं। यह महत्वपूर्ण है, क्योंकि resolv.conf डिफ़ॉल्ट रूप से /run/systemd/resolve/stub-resolv.conf का एक प्रतीकात्मक लिंक है। यदि आप प्रतीकात्मक लिंक को नहीं हटाएंगे, तो सिस्टम रिबूट पर सिस्टमड द्वारा अधिलेखित हो जाएगा (भले ही हमने अक्षम-हल किया गया हो!)। साथ ही NetworkManager (NM) यह जाँचता है कि यह सिस्टमड-सॉल्यूस्ड कॉन्फ़िगरेशन का पता लगाने के लिए एक प्रतीकात्मक लिंक है या नहीं।

$ sudo rm /etc/resolv.conf
$ sudo touch /etc/resolv.conf

NM द्वारा /etc/resolv.conf की ओवर राइटिंग अक्षम करें (एक विकल्प rc-manager भी है, लेकिन यह काम नहीं करता है, इसके बावजूद यह एक मैनुअल में वर्णित है):

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

और इसे पुनः आरंभ करें:

$ sudo systemctl restart NetworkManager

NM से resolv.conf का उपयोग करने के लिए dnsmasq बताएं:

$ cat /etc/dnsmasq.d/nmresolv.conf 
resolv-file=/var/run/NetworkManager/resolv.conf

और इसे पुनः आरंभ करें:

$ sudo systemctl restart dnsmasq

समाधान के लिए dnsmasq का प्रयोग करें:

$ cat /etc/resolv.conf 
# Use local dnsmasq for resolving
nameserver 127.0.0.1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.