Vraag Hoe krijg ik resolvconf om resolv.conf opnieuw te genereren nadat ik / etc / network / interfaces heb gewijzigd?


Na het updaten /etc/network/interfaces met iets dat erg op elkaar lijkt, hoe krijg ik dat /etc/resolv.conf updaten? Ik heb geprobeerd (als root) resolver -u, service networking restart maar ze werkten niet. Ik heb ook de symlink voor opgelost resolv.conf en geprobeerd resolver -u nog een keer. Uiteindelijk ben ik in frustratie opnieuw opgestart, waardoor het probleem kon worden opgelost door opnieuw te bouwen /etc/resolv.conf.

Ubuntu 12.04, 64bit-server, alle nieuwste patches geïnstalleerd.

Voorbeeld /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

77
2017-12-03 12:59


oorsprong


Zien askubuntu.com/questions/156154/... - user68186
Wat probeerde je te doen dat resolv.conf je kon laten doen? - kingmilo


antwoorden:


service networking restart is niet altijd een betrouwbare manier om alle interfaces te verslaan.

De resolvconf -u commando alleen updates resolv.conf van de eigen database van resolvconf. U moet de database bijwerken.

Om de database bij te werken, moet u resolvconf bellen met de -a of -d keuze. Dat gebeurt achter de schermen als je ifup of ifdown uitvoert. Dus normaal gesproken, net als bij elke andere wijziging in /etc/network/interfaces, om wijzigingen in de dns- * opties te activeren, moet u de betreffende interface ifdownen en zo nodig opnieuw activeren. Of u kunt opnieuw opstarten.

Als u wijzigingen wilt aanbrengen in een interface zonder ifdownupping (misschien omdat u de machine op afstand beheert en toevallig bent verbonden via die interface, natch), dan kunt u hetzelfde resultaat bereiken door resolvconf rechtstreeks vanaf de opdrachtregel uit te voeren. Dit vereist een beetje meer kennis van de semantiek van resolvconf. Neem aan dat de relevante / e / n / i-strofe is

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

waarbij FFFF een adresfamilie is ("inet" of "inet6").

Om deze dns- * opties te activeren, voer je resolvconf als volgt uit (ja, met newlines in de string doorgestuurd naar resolvconf).

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

Voor de strofe die in de vraag wordt gegeven, zou dit het volgende zijn.

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

Raadpleeg de handleidingen van resolvconf (8) en het README-bestand van het resolvconf-pakket (/usr/share/doc/resolvconf/README.gz) voor meer informatie.


94
2017-12-03 19:23



"Do not do" herstart van servicenetwerken ", dat is geen betrouwbare manier om alle interfaces te down-meppen." Werkt prima voor mij. Goed om te weten hoe dat op een schone manier gebeurt. - Aki
Als u "opnieuw opstarten van het servicenetwerk" niet zou moeten doen, kan ik u voorstellen om het niet in de eerste regel van deze vraag te plaatsen? Toen ik haastig op zoek was naar een oplossing, was het eerste wat ik deed het kopiëren en plakken van het eerste commando dat ik zag. - Robin Winslow
@RobinWinslow +1 voor het maken van mijn dag - Pete
Dit antwoord is van de persoon die zich heeft ontwikkeld resolvconf  :) - heemayl
Opnieuw opstarten / opnieuw lezen /etc/network/interfaces, je kan dat doen : ifdown eth0 && ifup eth0 ; het werkt zelfs in een externe SSH-sessie. - Pierre-Damien


Hoewel de manpage niet standaard is geïnstalleerd, is het gedocumenteerd via de update scripts optie, voer gewoon uit:

sudo resolvconf -u

20
2018-04-10 21:32



manpages.ubuntu.com/manpages/precise/en/man8/resolvconf.8.html - NGRhodes


Voor degenen onder u die uw servers op afstand beheren, kunt u:

  1. werk het dns-nameservers regel binnen /etc/network/interfaces
  2. # ifdown eth01; ifup eth01

Merk op dat dit op één regel gedeeld moet zijn met; (het linux-opdrachtregelscheidingsteken). Je zou je huidige verbinding niet eens moeten verliezen. De uitzondering is het maken van een typfout in het interfacebestand. Als dit gebeurt ifup zal falen en je moet fysieke toegang hebben of een andere ethxx verbinding.


3
2018-01-23 23:14





service resolvconf restart zal regenereren /etc/resolv.conf bestand zonder veel gedoe.


2
2018-02-10 14:03



ik krijg Failed to restart resolvconf.service: Unit resolvconf.service not found. - Mobigital
opdracht voltooid, maar niet geregenereerd /etc/resolv.conf op ubuntu-server 14.04 - Jossef Harush


Dit antwoord is vergelijkbaar met het bovenstaande, maar gebruikt de configuratie van de vragenvoorbeelden om de vraag te beantwoorden. Plus dit verklaart waarom beide commando's noodzakelijk zijn.

Bewerk /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

Deze wijzigingen vinden niet plaats tenzij u het configuratiebestand opnieuw start of opnieuw laadt:

Om het interfacebestand live bij te werken, is het noodzakelijk om de volgende opdracht uit te voeren:

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

Dit maakt een update van de interface mogelijk zonder opnieuw op te starten of opnieuw te laden.

De bovenstaande opdrachtwijzigingen gaan echter verloren na een herstart als de wijzigingen in de /etc/network/interfaces zijn niet gemaakt.

Trouwens, het laatste antwoord van BDenis in deze lijst werkt eigenlijk in plaats van het laatste commando door het te ontleden /etc/network/interfacesbestand en leidingen die lijnen in de opdracht sudo resolvconf -a eth0  Het is eigenlijk de helft van het antwoord en een echt goed voorbeeld van inline sed parsing. Als u wilt zien hoe dit gebeurt, voert u gewoon het eerste deel van het commando uit en bekijkt u het /etc/network/interfaces bestand en spugen alle nodige informatie die u nodig hebt om de sudo resolvconf -a eth0 opdracht:

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

Merk op dat dit hetzelfde resultaat zou opleveren als het commando:

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com"

Op voorwaarde dat de /etc/network/interfaces bestand is geconfigureerd met deze informatie:

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

0
2018-06-22 21:37



Helaas kan dat niet gebruiken. Mijn interface wordt beheerd door netwerkmanager en DHCP, dus toevoegen aan /etc/network/interfaces is in dat geval geen geldige optie. (Ubuntu 14.04) - Tino


Eenvoudig antwoord:

Installeer resolvconf gewoon. apt install resolvconf

Daarna, ifup eth0 werkt de dns bij in etc/resolv.conf, volgens de dns-nameservers regel binnen /etc/network/interfaces.


0
2018-05-02 23:14





Dit werkte voor mij:

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

Pas dienovereenkomstig aan.


0
2017-09-07 23:21





Op 18.04 werkt het volgende betrouwbaar (uitgevoerd als root):

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

Belangrijk: Zorg ervoor dat je een pakket hebt resolvconf geïnstalleerd.
Het lijkt niet standaard te zijn en zonder dat veranderen er (!) Van /etc/network/interfaces worden stil genegeerd (bijv. dns-*).


0
2018-05-09 11:49