Frage Wie füge ich Zeilen in resolv.conf ein, die beim Neustart nicht verloren gehen?


Ich bin endlich von 07.10 auf 12.04 gewandert. Ich habe einen letzten Teil zu vervollständigen, aber ich bin ratlos. Ich benutze Puppet auf jedem Server, und in der Vergangenheit habe ich eine Nameserver-Adresse und einen Such-Domain-Namen für den Puppetmaster in resolv.conf aufgenommen.

search puppetmaster.com
nameserver 192.168.1.XXX

In 12.04 wird resolv.conf beim Neustart überschrieben. Ich kann keine statische IP für diese verwenden, also ist die Verwendung der / etc / network / interfaces, um mir zu helfen, ein Nullpunkt.

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

Gibt es eine Möglichkeit, um resolvconf entweder im Kopf, am Schwanz oder an der Basis zu behandeln? Wenn ja, gibt es Beispiele, die ich verwenden kann, um auf meinem Server zu optimieren.

Jede Hilfe wird sehr geschätzt.


148
2018-06-28 13:54


Ursprung




Antworten:


Es ist wahrscheinlich besser, wenn Ihr DNS-Server in der Lage ist, "Puppet" an die richtige Adresse aufzulösen, und entweder Ihren DHCP-Server die DNS-Nameserver-Adresse und die Suchliste ausgibt oder (wenn Sie statische IP-Adressen haben) das Folgende in / 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

Aber wenn Sie es über die Resolvconf-Konfigurationsdateien tun möchten, werden Sie es bearbeiten wollen /etc/resolvconf/resolv.conf.d/base. In dieser Datei, fügen Sie Ihre Informationen wie in resolv.conf.

nameserver 192.168.1.XXX

Dann sagen Sie resolvconf zu regenerieren resolv.conf.

sudo resolvconf -u

120
2018-06-28 15:35



Obwohl diese Antwort Stimmen hat und der erste Teil mehr oder weniger korrekt ist, ist der zweite Teil der Antwort falsch. (1) nicht Setzen Sie eine Suchzeile in /etc/resolvconf/resolv.conf.d/head. Wenn Sie dort eine "Such" -Zeile setzen, wird diese Zeile ignoriert, wenn resolvconf eine "Such" -Zeile im dynamischen Teil der resolv.conf-Datei enthält. Der Glibc-Resolver ignoriert alle bis auf die letzte "Such" - oder "Domänen" -Zeile. Siehe resolv.conf (5). (2) Wenn die resolvconf-Konfiguration geändert wird, sollten Sie den resolvconf-Job nicht neu starten, sondern nur ein Update ausführen, "resolvconf -u". - jdthood
Ich habe die Zeile entfernt. Die andere Möglichkeit wäre, Schwanz statt Kopf zu verwenden. - tgm4883
base, head oder tail (ab 12.04) werden alle wie resolv.conf neu geschrieben, damit ich bestätigen kann, dass @jdthood comment true ist. Also, vollständige Antwort würde sagen - Bearbeiten Sie keine der resolv.conf-Dateien, und führen Sie einfach: sudo /etc/init.d/networking Restart In der Tat, das wird Schnittstellenänderungen in resolv.conf schreiben. - tishma
@ tishma: Hallo. Erstens, um Missverständnisse zu vermeiden: Nichts schreibt in die Basis-, Kopf- oder Enddateien. Nichts schreibt zur Laufzeit in /etc/resolvconf/resolv.conf.d/ in Dateien. Diese Dateien werden von resolvconf gelesen, die ihren Inhalt in der Datei zusammenfasst, die sie schreibt --- /run/resolvconf/resolv.conf --- auf die der Symlink /etc/resolv.conf zeigt. Zweitens, was zu tun ist, nachdem dns-Optionen in / etc / network / interfaces geändert wurden. Machen nicht Führen Sie "/etc/init.d/networking restart" aus; das ist jetzt veraltet. Stattdessen ifdown die Schnittstelle in Frage und ifup es wieder. - jdthood
In 14.04 hat diese Antwort nichts für mich getan. - Jay Sullivan


Ich denke, die Antwort ist dein /etc/dhcp/dhclient.conf, d. h. nicht anfordern dns-nameservers von deiner dhcp Klient.

Dann aktualisiere deine /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip

Dann dein resolv.conf wird automatisch so konfiguriert, wie Sie es wollen.

Fügen Sie dem hinzu dns-search und dann a laufen lassen /etc/init.d/networking restart  (Obwohl dieses Skript veraltet ist, funktioniert es immer noch).


32
2017-11-26 01:58



Dhclient Regeln über alle Resolvconf-Einstellungen, so sollte dies die beste Antwort sein. - Alex R
/etc/init.d/networking restart funktionierte nicht auf meiner Maschine, aber sudo ifdown -a und dann sudo ifup -a hat getan. (Außerdem brauchte ich ein bisschen um zu erkennen, dass ich ersetzen musste dnsserverip mit etwas wie 8.8.8.8; Ich fühle mich ein bisschen albern.) - Jason Gross
Versuchen systemctl restart networking.service - Pavel Sayekat


Dies wird wahrscheinlich bei der ersten Installation von Ubuntu durch die DHCP-Konfiguration verursacht. Probieren Sie diesen 3-stufigen Prozess aus, um dieses Problem mit der automatischen Konfiguration zu lösen.

Zuerst

Bearbeiten Sie Ihre Schnittstellenkonfiguration, die sich in folgendem befindet: /etc/network/interfaces

Fügen Sie diese Zeile unten hinzu iface lo inet loopback:

dns-nameservers yourdns youraltdns

Als Beispiel für Google DNS möchten Sie Folgendes verwenden:

dns-nameservers 8.8.8.8 8.8.4.4

Zweite

Bearbeiten Sie Ihre DHCP-Konfigurationsdatei unter:

/etc/dhcp/dhclient.conf

Markieren Sie die Syntax als Kommentar mit # in jeder Zeile oder einfach jeden Request-Nameserver entfernen. In 16.04 müssen Sie hier möglicherweise keine Änderungen vornehmen.

Dritte

Starten Sie Ihr Netzwerk mit diesem Befehl neu:

/etc/init.d/networking restart

In 16.04:

sudo ifdown -a
sudo ifup -a

18
2018-06-20 01:50



/etc/init.d/networking restart funktionierte nicht auf meiner Maschine, aber sudo ifdown -a und dann sudo ifup -a hat getan. - Jason Gross
Dies ist einfach und es funktioniert, obwohl es ein bisschen hacky ist! Das Problem mit Dingen wie Ubuntu ist, 1000 Möglichkeiten zu haben, eine Sache zu tun! - Willa O Ng'wana
Und dann kannst du das überprüfen /etc/resolv.conf enthält diese 2 neuen DNS-Einträge in den ersten nützlichen Zeilen. - ROMANIA_engineer


Bitte sieh dir ... an resolvconfMan-Seite. Sie können die Aufnahme bestimmter DNS-Einstellungen erzwingen, indem Sie z. /etc/resolvconf/resolv.conf.d/base:

  /etc/resolvconf/resolv.conf.d/base
          File containing basic resolver information.  The lines  in  this
          file  are  included in the resolver configuration file even when
          no interfaces are configured.

Es gibt andere spezielle Dateien (Kopf und Schwanz), diese können Ihnen helfen, das zu erreichen, was Sie wollen.


7
2017-09-04 14:26



Sie können Zeilen zu /etc/resolvconf/resolv.conf.d/base hinzufügen, aber da jeder Nameserver über eine Schnittstelle zugänglich ist und nur zugänglich ist, wenn diese Schnittstelle aktiv ist, ist es am besten, die Nameserver-Informationen mit dieser Schnittstelle zu verknüpfen. Wenn die Schnittstelle mit ifup konfiguriert ist, bedeutet dies: die Informationen in die Zeilen "dns-search" und "dns-nameservers" in die Zeilengruppen "/ etc / network / interfaces" einfügen. Wenn die Schnittstelle über DHCP konfiguriert ist, bedeutet dies: Konfigurieren Sie den DHCP-Server so, dass er den Clients Suchnamen und Nameserveradressen zur Verfügung stellt. Usw. Verwenden Sie die "Basis" -Datei nur als temporären Hack oder als letzten Ausweg. - jdthood


Für mich waren die obigen Antworten aus folgenden Gründen unzureichend:

  • Ich benutze nicht resolvconf, ohne alles /etc/resolv.conf.
  • Verwenden chattr +i absperren resolv.conf scheint zu hacky. Ich brauche Puppet, um bei Bedarf Änderungen vornehmen zu können.
  • AFAIK, Bearbeitung /etc/network/interfaces verhindert nicht resolv.conf vor dem Überschreiben; Es gibt einfach die Namenserver an, die geschrieben werden sollen. Für mich war die Angabe der Nameserver nicht der Punkt. Ich versuche zu setzen options timeout:1 und options attempts:1 in meinem resolv.conf Datei.

Das beste Lösung Ich habe festgestellt, dass das Standardverhalten von dhclient mit seinen dokumentierten Haken.

Erstelle eine neue Datei unter /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate mit folgendem Inhalt:

#!/bin/sh
make_resolv_conf() {
    :
}

Dann mache die Datei ausführbar:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Jetzt, wenn dhclient ausgeführt wird - entweder beim Neustart oder wenn Sie manuell ausgeführt werden sudo ifdown -a ; sudo ifup -a - Es lädt dieses Skript nodnsupdate. Dieses Skript überschreibt eine interne aufgerufene Funktion make_resolv_conf() das würde normalerweise überschreiben resolv.conf und tut stattdessen nichts.

Das hat bei Ubuntu 12.04 für mich funktioniert.


4
2018-03-05 22:12



Funktioniert gut auf Debian 8. Elegante Lösung! - Artur Bodera
nur der Vollständigkeit halber: Manpage Dhclient-Skript enthält die Informationen zum DHCP-Client-Netzwerkkonfigurationsskript, die oben erwähnt wurden. - hecke
Dies funktionierte nicht am 16.04, ich fügte auch Dinge zu /etc/network/interfaces.d hinzu, ohne Effekt, fügte eine leere Überschreibung von make_resolv_conf hinzu, die hier empfohlen wurde, keine Wirkung .... aber änderte nicht / etc / dhcp / dhclient.conf - Muss ich wirklich eine statische Konfigurationsdatei ändern, um das zu beheben? - silverjam


Wie viele andere Antworten haben dies zu tun resolvconf in Ihrem System installiert werden.

Also der beste Weg, etwas zu behalten resolv.conf Das geht beim Neustart nicht verloren, wenn man es in resolvconf-Konfigurationsdateien einfügt, die sich in

/etc/resolvconf/resolv.conf.d/

Dorthin geh 'für die head Datei. Was immer du da hingestellt hast, wird oben geschrieben /etc/resolv.conf

Also wird alles so gehen:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u

3
2017-10-17 13:59





Fügen Sie Ihren Nameserver der Datei /etc/resolvconf/resolv.conf.d/head hinzu. Die Datei enthält die Nachricht, die Sie erhalten haben:

Diese Datei sollte nach dem Hinzufügen von 8.8.8.8 so aussehen

root@hvnatvcc: ~ # cat /etc/resolvconf/resolv.conf.d/head 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8

2
2017-10-23 10:43



Das Hinzufügen von Zeilen zu /etc/resolvconf/resolv.conf.d/head ist eine schlechte Lösung, noch schlimmer als das Hinzufügen von Zeilen zu /etc/resolvconf/resolv.conf.d/base. Die richtige Lösung für Schnittstellen, die mit ifup konfiguriert werden, ist das Hinzufügen von Zeilen "dns-search" und "dns-nameservers" zu Zeilengruppen in / etc / network / interfaces. Siehe auch meine Kommentare zu den anderen Antworten. - jdthood
Es ist das einzige, was tatsächlich für mich funktioniert hat ... und es ist schwer zu verstehen, warum keine der "richtigen" Lösungen funktioniert. - silverjam


Dies könnte nur eine seltsame Eigenart in meiner Maschine sein, aber jemand anderes könnte den gleichen Eckfall haben.

Ich habe viele Möglichkeiten ausprobiert, meine ISP-Nameserver ohne Erfolg in /etc/resolv.conf einzubinden:

  • Ich habe sie aufgenommen /etc/network/interfaces und Neustart der Vernetzung. Sie sind nicht aufgetaucht /etc/resolv.conf.

  • Ich lege sie hinein /etc/resolv.conf explizit, aber natürlich wurden sie überschrieben. Sie sind dort aufgetaucht /run/resolvconf/interface/eth0.inet, hat es aber nie geschafft /etc/resolv.conf.

  • Ich habe versucht, resolvconf für dynamische Updates zu konfigurieren. Keine Änderung.

Endlich habe ich irgendwo gelesen, dass wenn der lokale Rechner (127.0.0.1) auftaucht /etc/resolv.conf Alle anderen Nameserver sind nicht enthalten.

In meiner Verzweiflung habe ich bearbeitet /run/resolvconf/interface/lo.namedlöschte die einzige Zeile darin (nameserver 127.0.0.1) und neu gestartet: ifdown eth0 && ifup eth0.

/etc/resolv.conf hat dann zum ersten Mal meine ISP-Nameserver eingebunden! ich rannte service network-manager restart um zu sehen, ob es stabil war und /etc/resolv.conf enthält immer noch meine ISP Nameserver. Rebooted nur um sicherzustellen, und es ist immer noch da aber  /run/resolvconf/interface/lo.named wurde zurückgesetzt auf: nameserver 127.0.0.1.

Das seltsame Neustarten des Netzwerks funktioniert immer noch: /etc/resolv.conf enthält immer noch meine ISP Nameserver. Ich kann das nicht erklären (kann jemand?), Aber das könnte jemandem helfen, der an derselben Stelle feststeckt.


2
2018-06-26 05:18



Dies wird wahrscheinlich verursacht durch dnsmasq. Sie können es einfach mit entfernen apt-get remove dnsmasq oder aktualisiere die Konfiguration in /etc/dnsmasq.conf. - Tombart


Die anderen Lösungen funktionierten bei mir auf meinem Fedora 20 System nicht. Mein besonderes Problem war, dass die Zeile "Suchen" in /etc/resolv.conf überschrieben wurde. Hier ist was es behoben hat. (Dies setzt voraus, dass NetworkManager die Linie produziert search rn.yourcompany.com  und du willst es haben search rn.yourcompany.com yourcompany.com intnet.yourcompany.com:

1.Verwenden Sie den Befehl "ifconfig", um herauszufinden, welche Schnittstelle von Interesse ist:

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2.Wohnen Sie root und wechseln Sie in das Netzwerkverzeichnis der Systemkonfiguration:

$ sudo su -[sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices`
  1. Verwenden Sie Ihren bevorzugten verfügbaren Editor, um einen hinzuzufügen Domain Linie mit den zusätzlichen zu suchenden Domains:

DOMAIN="yourcompany.com intnet.yourcompany.com"

Speichern, abmelden und erneut anmelden. NetworkManager sollte jetzt die Zeile enthalten \etc\resolve.conf:

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com

1
2017-08-29 14:54



Nicht auf deiner Parade zu regnen, aber das ist Ask Ubuntu, und so ist Fedora off-topic. - Flimm


füge die letzte Zeile hinzu, zB:

nameserver 8.8.8.8

Öffnen Sie ein Terminal und geben Sie ein

sudo chattr +i /etc/resolv.conf

Das + i sorgt dafür, dass die Datei beim Booten nicht zurückgesetzt wird.

Um das oben genannte rückgängig zu machen

sudo chattr -i /etc/resolv.conf

Für mehr

man chattr

0
2018-02-23 17:42