मैं बदलने / आदि / नेटवर्क / इंटरफेस के बाद resolvconf को पुनः प्राप्त करने के लिए मुझे कैसे resolvconf मिलता है?


92

/etc/network/interfacesनीचे बहुत कुछ के साथ अद्यतन करने के बाद , मुझे /etc/resolv.confअपडेट कैसे मिलेगा ? मैंने कोशिश की (रूट के रूप में) resolver -u, service networking restartलेकिन उन्होंने काम नहीं किया। मैंने इसके लिए सिमिलिंक भी ठीक किया resolv.confऔर resolver -uफिर से कोशिश की । अंत में हताशा में मैंने रिबूट किया, जिसने पुनर्निर्माण करके समस्या को ठीक किया /etc/resolv.conf

Ubuntu 12.04, 64 बिट सर्वर, सभी नवीनतम पैच स्थापित।

उदाहरण /etc/network/interfaces:

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


आप क्या करने की कोशिश कर रहे थे कि resolv.conf आपको करने से रोक रहा था?
किंगमिलो

जवाबों:


106

service networking restart हमेशा सभी इंटरफेस को डाउन-यूपिंग करने का एक विश्वसनीय तरीका नहीं है।

resolvconf -uआदेश केवल अद्यतन resolv.confresolvconf के अपने डेटाबेस से। आपको डेटाबेस को अपडेट करना होगा।

डेटाबेस को अपडेट करने के लिए आपको resolvconf को -aया -dविकल्प के साथ कॉल करना होगा । जब आप ifup या ifdown चलाते हैं तो पर्दे के पीछे ऐसा होता है। इसलिए, आम तौर पर, किसी भी अन्य परिवर्तन के साथ, जैसे /etc/network/interfacesकि dns- * विकल्पों को सक्रिय करने के लिए आपको इंटरफ़ेस को प्रश्नांकित करना है और यदि इसे फिर से करना है। या आप रिबूट कर सकते हैं।

यदि आप ifdownupping के बिना किसी इंटरफ़ेस में परिवर्तन करना चाहते हैं (शायद इसलिए कि आप मशीन को दूरस्थ रूप से नियंत्रित कर रहे हैं और उस इंटरफ़ेस के माध्यम से कनेक्ट किया जाना है, तो) आप कमांड लाइन से सीधे resolvconf चलाकर उसी परिणाम को प्राप्त कर सकते हैं। इसके लिए रेसोल्वोन्फ के शब्दार्थों के बारे में थोड़ा और ज्ञान होना चाहिए। मान लीजिए कि प्रासंगिक / ई / एन / मैं श्लोक है

iface IIII FFFF static
    address ...
    ...
    dns-nameservers X.X.X.X Y.Y.Y.Y
    dns-search SSSS

जहाँ FFFF एक पता परिवार ("inet" या "inet6") है।

इन डीएनएस को सक्रिय करने के लिए- * विकल्प आप रेज़ोल्वॉन्फ को चलाते हैं जो निम्नानुसार है (हाँ, रिओल्वॉन्कफ़ में पिरोए गए स्ट्रिंग में नए सिरे से)।

echo "nameserver X.X.X.X
nameserver Y.Y.Y.Y
search SSSS" | sudo resolvconf -a IIII.FFFF

प्रश्न में दिए गए श्लोक के लिए यह निम्नलिखित होगा।

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com" | sudo resolvconf -a eth0.inet

अधिक जानकारी के लिए resolvconf (8) मैनुअल पेज और Resolvconf पैकेज README फाइल (/usr/share/doc/resolvconf/README.gz) से परामर्श करें।


"सर्विस नेटवर्किंग रीस्टार्ट न करें"; यह सभी इंटरफेस को डाउन-अप करने का विश्वसनीय तरीका नहीं है। " मेरे लिए ठीक काम करता है। हालांकि इसे करने का साफ तरीका जानना अच्छा है।
अकी

11
यदि आपको "सेवा नेटवर्किंग पुनरारंभ" नहीं करना चाहिए, तो क्या मैं आपको यह सुझाव दे सकता हूं कि आप इसे इस प्रश्न की पहली पंक्ति में न रखें? जब जल्दी से एक समाधान की तलाश में, पहली चीज जो मैंने की थी, मैंने देखी गई पहली कमांड को कॉपी और पेस्ट किया था।
रॉबिन विंसलो

4
मेरा दिन बनाने के लिए @RobinWinslow +1
पीट

8
यह उत्तर उस व्यक्ति का है जो स्वयं विकसित हुआ है resolvconf :)
heemayl

2
पुनः आरंभ / पुनः आरंभ करने के लिए /etc/network/interfaces, आप ऐसा कर सकते हैं ifdown eth0 && ifup eth0:; यह दूरस्थ ssh सत्र में भी काम करता है।
पियरे-डेमियन


5

उन लोगों के लिए जो आपके सर्वर को दूरस्थ रूप से प्रबंधित कर सकते हैं:

  1. में dns-nameserversलाइन को अपडेट करें/etc/network/interfaces
  2. # ifdown eth01; ifup eth01

ध्यान दें कि इसके साथ विभाजित एक पंक्ति पर होना है; (linux कमांड लाइन सेपरेटर)। आपको अपना वर्तमान कनेक्शन भी नहीं खोना चाहिए। इंटरफ़ेस फ़ाइल में अपवाद टाइपो बना रहा है। यदि ऐसा होता है, तो यह ifupविफल हो जाएगा और आपके पास भौतिक पहुँच या कोई अन्य ethxxकनेक्शन होना चाहिए।


2

service resolvconf restart/etc/resolv.confबहुत उपद्रव के बिना फ़ाइल पुनर्जीवित करेगा ।


2
मुझे मिलता हैFailed to restart resolvconf.service: Unit resolvconf.service not found.
मोबिजील

कमांड पूरी हो गई लेकिन /etc/resolv.confubuntu सर्वर 14.04
जोसेफ हारुश

1

यह उत्तर उपरोक्त के समान है लेकिन प्रश्न का उत्तर देने के लिए प्रश्न उदाहरण विन्यास का उपयोग करता है। प्लस यह बताता है कि दोनों कमांड क्यों आवश्यक हैं।

संपादित करें /etc/network/interfaces:

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

जब तक आप कॉन्फ़िगरेशन फ़ाइल को रिबूट या पुनः लोड नहीं करते हैं, तब तक ये परिवर्तन नहीं होंगे:

इंटरफेस फ़ाइल को अपडेट करने के लिए, यह आवश्यक है कि निम्नलिखित कमांड को चलाएं:

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com" | sudo resolvconf -a eth0.inet

यह रिबूट या पुनः लोड किए बिना इंटरफ़ेस को अपडेट करने की अनुमति देता है।

हालाँकि, उपरोक्त आदेश परिवर्तन रिबूट के बाद खो जाएंगे यदि इसमें परिवर्तन /etc/network/interfacesनहीं किए गए हैं।

इस सूची में BDenis से अंतिम उत्तर के अनुसार वास्तव में /etc/network/interfacesफ़ाइल को पार्स करके और कमांड में उन पंक्तियों को पाइप करके कमांड का काम करता है sudo resolvconf -a eth0 यह वास्तव में आधा उत्तर है और इनलाइन sed पार्सिंग का वास्तव में अच्छा उदाहरण है। यदि आप यह देखना चाहते हैं कि यह कैसे करता है तो यह केवल कमांड के पहले भाग को चलाता है और इसे /etc/network/interfacesफाइल को पार्स करके देखें और sudo resolvconf -a eth0कमांड चलाने के लिए आवश्यक सभी आवश्यक जानकारी को बाहर थूक दें :

sed 's/#.*$//' /etc/network/interfaces | grep dns- | sed 's/dns-//g'

ध्यान दें कि यह कमांड के समान ही होगा:

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com"

बशर्ते कि /etc/network/interfacesफ़ाइल इस जानकारी से कॉन्फ़िगर की गई हो:

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

दुख की बात है कि उपयोग नहीं कर सकते। मेरा इंटरफ़ेस नेटवर्क मैनेजर और डीएचसीपी द्वारा प्रबंधित है, इसलिए इसे जोड़ना /etc/network/interfacesउस मामले में एक वैध विकल्प नहीं है। (उबंटू 14.04)
टिनो

1

सरल उत्तर:

बस resolvconf स्थापित करें। apt install resolvconf

उसके बाद, में लाइन के अनुसार ifup eth0dns को अपडेट करता है ।etc/resolv.confdns-nameservers/etc/network/interfaces


अज्ञात इंटरफ़ेस। हर कोई वास्तव में जानता है कि यहां विवरणों को कैसे बाधित किया जाए ... मुझे लगता है कि हमें सभी आदेशों को कंटेनरीज़ करना चाहिए। प्रत्येक के लिए पूर्ण स्क्रिप्ट, कोई गद्य नहीं।
मैथिक

1

18.04 को, निम्नलिखित कार्य मज़बूती से (रूट के रूप में चलाएँ):

systemctl stop networking
ip address flush dev <device> # just to be safe
systemctl start networking

महत्वपूर्ण: सुनिश्चित करें कि आपने पैकेज resolvconfस्थापित किया है।
यह डिफ़ॉल्ट रूप से प्रतीत नहीं होता है, और इसके बिना कुछ (!) परिवर्तनों /etc/network/interfacesको चुपचाप अनदेखा किया जाता है (जैसे dns-*)।


0

यह मेरे लिए काम किया:

sed -re '/nameservers|dns-search/ !d' -e 's/dns-nameservers/nameserver/' -e 's/dns-search/search/' /etc/network/interfaces  | resolvconf -a eth0.inet && resolvconf -u

तदनुसार समायोजित करें।


0

उबंटू 18.04 के डेस्कटॉप संस्करण पर, जहां कोई सेवा नहीं है networking, और resolvconfडिफ़ॉल्ट रूप से स्थापित नहीं है, मैं resolv.confपुनरारंभ करके पुन network-manager: बनाने में सफल रहा हूं :

sudo service network-manager restart

-3

इसके अलावा आप इस कमांड को आजमा सकते हैं:

cat /etc/network/interfaces |sed 's/#.*$//'|grep dns-|sed 's/dns-//g'|sudo resolvconf -a eth0.inet

3
क्या आप बता सकते हैं कि यह कमांड क्यों काम करना चाहिए?
α atsнιη 13

1
यदि आपके पास पंक्ति में एक से अधिक नेमसर्वर IP हैं, तो यह सही तरीके से काम नहीं करता है dns-nameserver IP1 IP2। लाइन को फिर से दोहराया जाना चाहिए resolv.conf, लेकिन ऐसा नहीं है।
टीनो

इसके अलावा, /etc/network/interfacesका उपयोग करता है dns-nameservers(नोटिस sजबकि अंत में) resolvconfका उपयोग करता है nameserver। कमांड इससे निपटती नहीं है। और यहां तक ​​कि अगर सब कुछ सही था, तो पाइपलाइन sed | grep | sedनिश्चित रूप से सबसे कुशल तरीका नहीं होगा।
मेलेबियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.