दूरस्थ डोमेन के लिए स्थानीय DNS और दूरस्थ DNS सर्वर के समाधान के लिए स्थानीय DNS सर्वर का उपयोग करने के लिए systemd-Solve और systemd-networkd को कैसे कॉन्फ़िगर करें?


26

मैं प्रवेश द्वार के माध्यम से इंटरनेट तक पहुंच के साथ स्थानीय क्षेत्र नेटवर्क से जुड़ा हुआ हूं। स्थानीय नेटवर्क में DNS सर्वर है जो स्थानीय नेटवर्क से कंप्यूटर के होस्टनाम को हल करने में सक्षम है।

कॉन्फ़िगर करने के लिए मैं चाहूँगा systemd समाधान किया गया और systemd-networkd तो स्थानीय होस्ट नामों का है कि देखने अनुरोध निर्देशित किया जाएगा (कराई) विशेष रूप से स्थानीय DNS सर्वर और सभी अन्य होस्ट नामों का देखने अनुरोध, दूरस्थ DNS सर्वर से दूसरे करने के लिए विशेष रूप से निर्देशित किया जाएगा।

चलो मान लेते हैं कि मुझे नहीं पता है कि कॉन्फ़िगरेशन फ़ाइलें कहाँ हैं या क्या मुझे और फ़ाइलों को जोड़ना चाहिए और उत्तर में निर्दिष्ट करने के लिए उनके पथ की आवश्यकता होती है।

जवाबों:


28

स्थानीय नेटवर्क इंटरफ़ेस के लिए कॉन्फ़िगरेशन फ़ाइल में हमें या तो यह निर्दिष्ट करना होगा कि हम DHCP=विकल्प का उपयोग करके डीएचसीपी सर्वर से स्थानीय DNS सर्वर पता प्राप्त करना चाहते हैं :

[Network]
DHCP=yes

या स्पष्ट रूप से DNS=विकल्प का उपयोग करके अपना पता निर्दिष्ट करें :

[Network]
DNS=10.0.0.1

इसके अलावा हमें विकल्प का उपयोग करके (उसी अनुभाग में) स्थानीय डोमेन निर्दिष्ट करने की आवश्यकता हैDomains=

Domains=domainA.example domainB.example ~example

हम domainA.example domainB.exampleनिम्नलिखित व्यवहार प्राप्त करने के लिए स्थानीय सिस्टम निर्दिष्ट करते हैं ( सिस्टमड-सॉल्यूस्ड.सर्विस, सिस्टमड-सॉल्व्ड मैन पेज से):

प्रति इंटरफ़ेस डोमेन में से एक में समाप्त होने वाले होस्टनाम के लुकअप को विशेष रूप से मिलान इंटरफेस में रूट किया जाता है।

यह तरीका हमारे स्थानीय DNS सर्वर द्वारा विशेष रूप से hostX.domainA.exampleहल किया जाएगा ।

हम साथ निर्दिष्ट ~exampleहै कि सभी डोमेन में समाप्त होने वाले exampleमार्ग-केवल डोमेन (के वर्णन से निम्नलिखित व्यवहार प्राप्त करने के लिए के रूप में इलाज किया जा रहे हैं इस लिए प्रतिबद्ध):

DNS सर्वर जिनके पास रूट-ओनली डोमेन हैं, उन्हें केवल निर्दिष्ट डोमेन के लिए उपयोग किया जाना चाहिए।

यह तरीका हमारे वैश्विक, दूरस्थ DNS सर्वर द्वारा विशेष रूप से hostY.on.the.internetहल किया जाएगा ।

ध्यान दें

आदर्श रूप से, डीएचसीपी प्रोटोकॉल का उपयोग करते समय, ऊपर दिए गए नेटवर्क इंटरफेस की कॉन्फ़िगरेशन फ़ाइल में स्पष्ट रूप से निर्दिष्ट किए जाने के बजाय डीएचसीपी सर्वर से स्थानीय डोमेन नाम प्राप्त किए जाने चाहिए। UseDomains=विकल्प देखें । हालाँकि इस विशेषता के साथ अभी भी बकाया मुद्दे हैं - सिस्टमड-नेटवर्कड डीएचसीपी सर्च डोमेन विकल्प समस्या देखें।

हमें अपने वैश्विक, सिस्टम-वाइड DNS सर्वर के रूप में दूरस्थ DNS सर्वर को निर्दिष्ट करने की आवश्यकता है। हम इसे /etc/systemd/resolved.confफ़ाइल में कर सकते हैं :

[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

कॉन्फ़िगरेशन को फिर से लोड करने और सेवाओं को पुनरारंभ करने के लिए मत भूलना:

$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd
$ sudo systemctl restart systemd-resolved

सावधान!

ऊपर की गारंटी देता है ही लागू होगा जब नामों के द्वारा हल किया जा रहा है systemd समाधान किया - देखने के लिए आदमी पेज एनएसएस-संकल्प, libnss_resolve.so.2 और systemd-resolved.service के लिए आदमी पृष्ठ, systemd समाधान किया गया

यह भी देखें:

संदर्भ:


6
क्या आपने .localइस उदाहरण में उपयोग नहीं किया है ? निश्चित रूप से अवही के साथ, यह एमडीएनएस के लिए आरक्षित होना चाहिए था और इसका दुरुपयोग करना बड़ी संख्या में नहीं था। यह मेरे लिए उपयोग example.comया .example के लिए स्पष्ट होगा ।
sourcejedi

1
@sourcejedi संदर्भ के लिए .localRFC 6762 में विशेष डोमेन के रूप में परिभाषित किया गया है - मल्टीकास्ट DNS अनुभाग में मल्टीकास्ट DNS नाम । धन्यवाद, निश्चित।
पायोत्र डोब्रोगोस्ट

असंबंधित नोट: आप स्वयं भी उत्तर स्वीकार कर सकते हैं।
intelfx

2
मुझे लगता है कि स्थानीय नेटवर्क इंटरफ़ेस के लिए कॉन्फ़िगरेशन फ़ाइल के स्थान को जोड़ना उपयोगी होगा । सही होना निश्चित नहीं है /etc/systemd/network/*.network? यहां पाया गया सुपरयुसर
पियरे कॉर्डियर

1
मैं देखता हूं कि यह उत्तर "कॉन्फ़िगरेशन फ़ाइल में ..." ओपी के "गैर-जिम्मेदाराना है" चलो मान लेते हैं कि मुझे पता नहीं है कि कॉन्फ़िगरेशन फाइलें कहां हैं ... "के रूप में किसी के बारे में अज्ञानता की स्थिति में यहां पहुंचे हैं विशेष कॉन्फ़िगरेशन फ़ाइलों का स्थान, यह उत्तर अधूरा है।
एरिक टावर्स

1

बस @piotrDobrogost के उत्कृष्ट उत्तर पर विस्तार करने के लिए, DNS रिज़ॉल्यूशन स्रोत के रूप में /etc/nsswitch.confउपयोग करने के लिए कॉन्फ़िगर करना न भूलें systemd-resolved। आपके hostsनिर्देश को आपके विशेष उपयोग के मामले में निम्न प्रकार से देखना चाहिए:

/etc/nsswitch.conf

hosts:  files resolve dns

तो अगर आप केवल उन डोमेन में निर्दिष्ट करने के लिए संकल्प की सीमा Domainsमें निर्देश /etc/systemd/resolved.confपायोत्र ऊपर विवरण के रूप में, डीएनएस अगले नाम संकल्प निर्दिष्ट सूत्रों के क्रम में परामर्श किया जाना चाहिए /etc/nsswitch.confजब डोमेन रहे हैं नहीं में पाया Domainsनिर्देश:

निम्न लिंक में निर्दिष्ट करने की आवश्यकता को संदर्भित करता है /etc/nsswitch.confताकि systemd-resolvedनाम समाधान के दौरान सलाह दी जाए :

https://github.com/systemd/systemd/issues/940

SystemD प्रलेखन मुझे भयंकर लगता है। मुझे कई लिंक से एक समझ को एक साथ मिलाना था, जिसमें ऊपर Piotr का उत्तर ;-)


सिस्टमड-सॉल्व्ड के संचालन की अनुशंसित मोड का उपयोग करते समय, जहां फाइल के /etc/resolve.confलिए एक सिमलिंक /run/systemd/resolve/stub-resolv.confहोता है, जिसमें सिस्टमड-रिज़ॉल्यूशन के DNS स्टब रिज़ॉल्वर का पता होता है resolve, /etc/nsswitch.confफ़ाइल में डायरेक्टिव लगाने की आवश्यकता नहीं होती है क्योंकि डीएनएस अनुरोधों को निर्देशित किया जाएगा (मानक nss-dnsनिर्देश के कारण ) स्टब रिसॉल्वर जो सिस्टमड-सॉल्यूड के नियमों के अनुसार कार्य करता है।
पियोट्र डोब्रोगोस्ट

@PiotrDobrogost कैसे आप DNS रिज़ॉल्यूशन के आदेश स्रोतों को नियंत्रित कर सकता है का उपयोग किए बिना परामर्श /etc/nsswitch.conf``? In the specimen config above, / etc / hosts` ( " फ़ाइलें ") स्थिर के लिए जाँच की जाएगी आईपी: नाम मैपिंग और अगर कोई नहीं मिला, संकल्प लिया systemd समाधान किया ठूंठ अगले परामर्श किया जाएगा । मैं यह नहीं देख सकता कि बिना उपयोग किए DNS रिज़ॉल्यूशन के चरण स्रोतों को कैसे संभव होगा /etc/nsswitch.conf। क्या मुझे यहाँ एक चाल याद आ रही है?
F1Linux

मैं नहीं कह रहा हूँ की /etc/nsswitch.confजरूरत नहीं है। मैं कह रहा हूं कि जब कोई सिस्टम-सॉल्यूड के स्टब डीएनएस रिज़ॉल्वर का उपयोग करता है, तो यह dnsनिर्देशन hosts:लाइन में सूचीबद्ध होने के लिए पर्याप्त है (संभवतः fileनिर्देशन के बाद )। resolveनिर्देशन की कोई आवश्यकता नहीं है क्योंकि यह स्टब रिज़ॉल्वर है जो सिस्टमड-सॉल्यूस्ड लॉजिक का एंट्री पॉइंट है न कि प्लग-इन मॉड्यूल ...nss-resolve
Piotr Dobrogost

... दूसरे शब्दों में आप कर सकते हैं तक पहुँचने systemd समाधान किया गया के तर्क या तो के माध्यम से resolveनिर्देश ➟ एनएसएस-संकल्प एनएसएस प्लग में मॉड्यूल ➟ systemd समाधान किया गया या के माध्यम से dnsनिर्देश ➟ एनएसएस-DNS मॉड्यूल ➟ एनएसएस प्लग-इन systemd समाधान किया गया है 'ठूंठ DNS रिसोल्वर ➟ सिस्टमड-
सॉल्व्ड

@PiotrDobrogost मुझे लगता है कि मैं आपके प्रश्न के दूसरे भाग से filesतत्कालीन resolveबात पर आया था /etc/nsswitch.conf। इसे फिर से पढ़ना, ऐसा लगता है जैसे आप सिर्फ एक आईपी ​​के लिए स्थानीय कैश की जांच करने के बारे में बात कर रहे थे : नाम मैपिंग फिर एक फारवर्डर तक पहुंचने-न मिलने पर। मैंने आमतौर पर filesरिज़ॉल्यूशन का पहला डीएनएस स्रोत सेट किया, जिससे मुझे डीएस को बायपास करने की अनुमति मिली और उत्पादन मेजबानों को हिट न करने की अनुमति दी- टी
एफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.