मैं 18.04 को स्थानीय वाइल्डकार्ड (127.0.0.1) डोमेन रिज़ॉल्यूशन कैसे सेट कर सकता हूं?


18

Ubuntu 14.04 पर मैं वाइल्डकार्ड example.com डोमेन को स्थानीय मशीन (घर पर डेस्कटॉप कंप्यूटर) को हल करने के लिए dnsmasq का उपयोग कर रहा हूं।

चारों ओर बहुत पढ़ने के बाद मैं अपने जीवन के लिए 18.04 की स्वच्छ स्थापना पर समान नहीं कर सकता।

मैं इस समय हासिल करना चाहता हूं:

  • के लिए ping example.com पिंग करने 127.0.0.1 और नहीं 93.184.216.34;
  • के ping anysubdomain.example.com लिए भी पिंग 127.0.0.1;
  • और ping google.com रूटर / आईपी डीएनएस के माध्यम से वास्तविक google.com को पिंग करने के लिए ।

निश्चित रूप से यह सरल होना चाहिए, यहां तक ​​कि तुच्छ भी?

लेकिन मैं स्टम्प्ड हूं। मैं example.com के संकल्प को प्राप्त कर सकता हूं लेकिन बाकी सब कुछ तोड़ने की कीमत पर।

मैं यह कैसे कर सकता हूँ?


1
जैसे आपने 14.04 को सिर्फ dnsmasq स्थापित क्यों नहीं किया?
विदरालो

1
@vidarlo खैर, जो मैंने किया था, वह पहला था, जैसा कि मैंने अपने प्रश्न में इंगित किया था। लेकिन 14.04 के विपरीत, जिसके परिणामस्वरूप "पोर्ट 53 के लिए सुनने का सॉकेट बनाने में विफल रहा: पहले से उपयोग में पता" त्रुटि। मैंने जो उत्तर स्वीकार किया है वह स्पष्ट रूप से dnsmasq को स्थापित किए बिना ठीक काम करता है।
निक राइस

जवाबों:


30

यहाँ ubuntu 18.04 के लिए कदम हैं। जब यह कॉन्फ़िगर किया गया है तो systemd-resolvedबहुत अच्छा नहीं है क्योंकि यह थोड़ा लंबा है ।NetworkManagerdnsmasq

फिर भी मैं अभी भी आरंभ करने की अनुशंसा dnsmasqसे NetworkManager, क्योंकि नेटवर्क कनेक्टिविटी परिवर्तन (वाईफ़ाई, तार, ...) पारदर्शी रूप से नियंत्रित किया जाएगा।

NetworkManager में dnsmasq सक्षम करें

फ़ाइल को संपादित करें /etc/NetworkManager/NetworkManager.conf, और लाइन dns=dnsmasqको [main]अनुभाग में जोड़ें , यह इस तरह दिखाई देगा:

[main]
plugins=ifupdown,keyfile
dns=dnsmasq

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

NetworkManager को प्रबंधित करने दें /etc/resolv.conf

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

कॉन्फ़िगर example.com

echo 'address=/.example.com/127.0.0.1' | sudo tee /etc/NetworkManager/dnsmasq.d/example.com-wildcard.conf

पुनः लोड करें NetworkManagerऔर परीक्षण करें

नेटवर्क मैनजर को प्रभावी होने के लिए पुनः लोड किया जाना चाहिए।

sudo systemctl reload NetworkManager

तब हम सत्यापित कर सकते हैं कि हम कुछ सामान्य साइट तक पहुँच सकते हैं:

dig askubuntu.com +short
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69

और अंत में सत्यापित करें कि example.comऔर उप-डोमेन इस प्रकार हल किए गए हैं 127.0.0.1:

dig example.com askubuntu.example.com a.b.c.d.example.com +short
127.0.0.1
127.0.0.1
127.0.0.1

आपका क्या मतलब है "Systemd- सॉल्यूशन NetworkManager के साथ बहुत अच्छा नहीं खेलता है"?
सेबेस्टियन स्टार्क

1
जब NetworkManager dns = dnsmasq का उपयोग करता है, तो उसे dnsmasq का उपयोग करने के लिए systemd- हल बताना चाहिए, स्वचालित हो सकता है।
पीआईएम

1
धन्यवाद, यह पूरी तरह से काम किया! ऐसा लगता है कि मैं आपको एक और घंटे के लिए इनाम नहीं दे सकता, और जैसा कि सुबह एक हो गया है यहाँ मैं अब बिस्तर पर हूँ और जब मैं कल को वापस आऊंगा तब करूँगा।
निक राइस

2
बहुत बढ़िया। मैंने कई अलग-अलग तकनीकों को पढ़ा है। यह वह है जिसने आखिरकार काम किया।
Redsandro

3
उन लोगों के लिए जो सिस्टम-सॉल्यूड पर वापस लौटना पसंद करते हैं, डिफ़ॉल्ट रूप /etc/resolv.confसे इंगित करते हैं /run/systemd/resolve/stub-resolv.conf
पोथी कालीमुथु

2

पहले सुनिश्चित करें /etc/NetworkManager/NetworkManager.confकि निम्नलिखित पंक्ति मौजूद नहीं है या टिप्पणी नहीं की गई है:

dns=dnsmasq

नेटवर्क प्रबंधक को पुनरारंभ करें:

sudo systemctl restart NetworkManager

सुनिश्चित करें कि NetworkManager नियंत्रित dnsmasq अब नहीं चल रहा है, या तो प्रक्रिया को मार कर या आपके सिस्टम को रिबूट करके।

फिर dnsmasq स्थापित करें:

sudo apt install dnsmasq

निम्नलिखित जोड़ें /etc/dnsmasq.d/example.com:

address=/example.com/127.0.0.1

पुनः आरंभ करें

sudo systemctl restart dnsmasq

अब आपके पास example.com के लिए एक वाइल्डकार्ड डीएनएस ओवरराइड होना चाहिए।


1
मुझे यह काम नहीं मिला। तुरंत एक साफ न्यूनतम इंस्टॉल ("मिटा डिस्क" विकल्प के साथ) के बाद sudo apt install dnsmasq"पोर्ट 53 के लिए सुनने का सॉकेट बनाने में विफल रहा है: पता पहले से ही उपयोग में" त्रुटि। मैं वैसे भी अंत तक जारी रहा जब बाद में एक कदम ने यह हल किया, लेकिन यह नहीं हुआ और यह काम नहीं किया।
निक राइस

तब NetworkManager द्वारा शुरू किया गया dnsmasq अभी भी चल रहा था। तो इसे पहले निष्क्रिय किया जाना चाहिए, अंततः मार दिया जाना चाहिए, और उसके बाद ही dnsmasq पैकेज स्थापित किया जाना चाहिए।
सेबस्टियन स्टार्क

धन्यवाद, सेबस्टियन। हालाँकि मैंने पहले ही पिम के उत्तर को स्वीकार कर लिया है जो त्रुटिपूर्ण रूप से काम करता है, इसलिए मैं इसके साथ बिना किसी और खेल के अब आगे बढ़ने में सक्षम हूं।
निक राइस

@NickRice इससे कोई समस्या नहीं है, लेकिन शायद अन्य लोग कोशिश करना चाहते हैं
सेबस्टियन स्टार्क

हां, सेबस्टियन। मैंने पहले आपके उत्तर की कोशिश की क्योंकि यह सबसे सरल था, और अगर इसकी सभी जरूरतें एक जोड़ा प्रारंभिक कदम है तो यह बहुत अच्छा है।
निक राइस

0

यह मेजबान फ़ाइल को संपादित करने के रूप में सरल नहीं होगा। आपके पास विकल्पों की एक जोड़ी है:

यह अजगर डीएनएस प्रॉक्सी जो वाइल्डकार्ड्स को / etc / होस्ट्स में हैंडल करेगा

DNSmasq का उपयोग करना


धन्यवाद। DNSmasq प्रश्न के लिए आपका लिंक 14.04 में मैं क्या कर रहा हूं। केवल एक नए 18.04 इंस्टॉलेशन में एक पोर्ट संघर्ष के कारण काम नहीं कर रहा है। बॉक्स से बाहर कुछ और की तुलना में कर की जरूरत है। अजगर डीएनएस प्रॉक्सी के लिए आवश्यक सभी कोड को देखते हुए, मुझे विश्वास नहीं हो सकता है कि सभी आवश्यक हैं। यह पहले नहीं था सिवाय, मुझे लगता है, उन लोगों के लिए जो / आदि / मेजबानों का उपयोग करने पर जोर देते थे।
निक राइस

क्या आप यह netstat -tulpnजांच सकते हैं कि पोर्ट का उपयोग क्या है? EDIT: नेवरमाइंड, स्वीकृत उत्तर को देखा। समस्या प्रणालीगत-संकल्प है।
हरिकृष्णन आर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.