जवाबों:
dnsmasq
पैकेज अभी भी 16.10 और 17.04 में उपलब्ध हैं।
dnsmasq
अक्षम करने से पहलेsystemd-resolved
स्थापित करें और निर्भरता (या कम से कम उनके पैकेज डाउनलोड करें) :
sudo apt-get install dnsmasq
अक्षम systemd-resolved
और सत्यापित dnsmasq
हो रहा है:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
systemctl status dnsmasq
dnsmasq
स्वाद के लिए मौसम । अपनी सेटिंग लागू करने के बाद, पुनरारंभ करें dnsmasq
:
sudo systemctl stop dnsmasq
sudo systemctl start dnsmasq
चरण 2 के बाद आप चरण 3 के पूरा होने तक एक कार्य प्रणाली रिज़ॉल्वर के बिना हो सकते हैं। आपको dnsmasq
डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ कार्य करने के लिए नेटवर्किंग सबसिस्टम (या केवल रीबूट) को पुनरारंभ करने की आवश्यकता हो सकती है । मेरे परीक्षण में, एक ज्ञात डीएनएस सर्वर को जोड़ना /etc/dnsmasq.conf
और पुनः आरंभ dnsmasq
करना इसे लाइवसीडी वातावरण में काम करने के लिए पर्याप्त था।
dns=dnsmasq
है/etc/NetworkManager/NetworkManager.conf
इसके जवाब में @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
और यह ठीक काम करता है क्योंकि मेरे पास नामांकित व्यक्ति हैं जो तब नेटवर्क मैनजर द्वारा परिभाषित किया गया था बजाय कि डैनसमैक में परिभाषित किए; यह मेरे लिए काम करता है - एनएम ने केडीई के एनएम कॉन्फ़िगरेशन में सिस्टम ट्रे के माध्यम से की गई सेटिंग्स से नेमवेर्सर्स प्राप्त करता है। मैं अपने घर नेटवर्क एफडब्ल्यूआईडब्ल्यू पर निश्चित आईपी का उपयोग करता हूं।
सिस्टमड-सॉल्यूड के मैनुअल के अनुसार , सिस्टमड-सॉल्वड तीन अलग-अलग इंटरफेस के माध्यम से नाम समाधान सेवाओं के साथ प्रदान करता है:
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 :))
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