
CentOS7. Netzwerk ist alles in Ordnung.
# cat /etc/resolv.conf
nameserver 192.168.1.1
Dann entscheide ich mich, den Hostnamen zu ändern.
# hostnamectl set-hostname host.domain
# reboot
# cat /etc/resolv.conf
# Generated by NetworkManager
search domain
# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
Warum bringt hostnamectl set-hostname
mich das durcheinander /etc/resolv.conf
?
Antwort1
Um als offizielle Antwort noch einmal zu wiederholen, was MikeA in den Kommentaren zur Frage sagt:
Es muss nicht unbedingt dhcpclient sein, aber es kann auch NetworkManager sein. Wenn Sie DNS1, DNS2 und DOMAIN in derselben Datei angeben, sollte die richtige /etc/resolv/conf für Sie erstellt werden.
Wenn DNS1, DNS2 und DOMAIN nicht in dieser Datei enthalten sind, müssen Sie die richtigen Zeilen manuell zu Ihrer /etc/resolv.conf hinzufügen (also Suche und Nameserver) - MikeA
Ich bin seinen Kommentaren gefolgt und hatte Erfolg (weitere Einzelheiten finden Sie weiter unten).
NetworkManager (CentOS 7 – aktuelle Methode)
- Fügen Sie folgende Zeilen hinzu
/etc/sysconfig/network-scripts/ifcfg-<inf>
:DNS1=8.8.8.8 DNS2=8.8.4.4 DOMAIN=mydomain.com
- Neustart
„statische“ resolv.conf (die alte Methode)
PEERDNS=no
In/etc/sysconfig/network-scripts/ifcfg-<inf>
- Manuelles Hinzufügen korrekter Zeilen zu
/etc/resolv.conf
(z. B. Suche, Nameserver) (Dies ist im Wesentlichen wie
Weitere Informationen und Details
Aufgrund eines Netzwerkfehlers bin ich auf diese Frage gestoßen.
Der Server ist eine virtuelle CentOS 7-Maschine, die in einer KVM-Umgebung ausgeführt wird.
Das Betriebssystem wurde über die SolusVM-Systemsteuerungsvorlage installiert.
Nach der Installation von CentOS 7 habe ich den Hostnamen auf eine von zwei Arten geändert, kann mich aber nicht erinnern, welche:
hostname myserver.mydomain.com
; oder- Verwendete Registerkarte „Hostname“ des SolusVM-Systemsteuerungspanels
Ich bin ziemlich sicher, dass ich nur Letzteres getan habe, da ich ein GIT-Init-Commit habe, das den alten Hostnamen anzeigt hostname
und verwendet, aber einen einzelnen Eintrag mit statischer IP und neuem Hostnamen/neuer Domäne hat. Unterschiede finden Sie unten.resolv.conf
hosts
Es scheint, dass diese Änderung aus dem einen oder anderen Grund nicht bestehen blieb, denn als die VM über SolusVM (oder den KVM-Manager) angehalten wurde, was zu einem Neustart führte, wurde der Hostname wieder auf den ursprünglichen Namen zurückgesetzt systemd
.
Dann habe ich herausgefunden, dass in CentOS 7 der Hostname mit gesetzt werden muss hostnamectl set-hostname myserver.mydomain.com
. [1]
Nachdem ich dies getan und einen Neustart durchgeführt hatte, stellte ich fest, dass ich keine DNS-Auflösung hatte, nslookup google.com
was beispielsweise ping google.com
zu DNS-/keine Auflösungsfehlern führte.
Es scheint, als ob die DNS-Konfiguration, die möglicherweise über die SolusVM CentOS 7-Installationsvorlage festgelegt wurde, vom NetworkManager gelöscht wurde. Ich kann zwar nicht mit Sicherheit sagen, wer oder was die Änderungen verursacht hat, aber aus GIT geht definitiv hervor, dass Änderungen an und direkt nach dem Ausführen des Befehls vorgenommen wurden /etc/hostname
( /etc/resolv.conf
siehe /etc/machine-info
erneut hostnamectl ...
unten die Unterschiede).
Hier sind die genauen Schritte, die ich für jeden in einer ähnlichen Situation, zur Fehlerbehebung oder als explizites Beispiel durchgeführt habe:
Ziel: Hostname.Domänenname (FQDN) aktualisieren
(explizit: meinALTERHostname.meinALTEDomain.com -> meinNEUERHostname.meinENEUEDomain.com)
Ausgangszustand:
hostname
:myOLDhostname.myOLDdomain.com
resolv.conf
:
# Generated by NetworkManager search myOLDdomain.com nameserver 8.8.8.8 nameserver 8.8.4.4
machine-info
:/dev/null
(dh nicht vorhanden)
Befehl ausgeführt
hostnamectl set-hostname myNEWhostname.myNEWdomain
- Neustart. Nach dem Neustart melde ich mich per SSH wieder bei der VM an.
- Versuchen Sie es mit
nslookup google.com
,ping google.com
, Sie erhalten Fehler wie:ping: unknown host google.com
cat /etc/resolv.conf
zeigt jetzt:
# Generated by NetworkManager
search myNEWdomain.com
# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
- Nach der Suche stelle ich fest,
/etc/sysconfig/network-scripts/ifcfg-eth0
dass keineDNS1
,DNS1
, undDOMAIN
Einträge vorhanden sind. Dies führt zu fehlendennameserver
Einträgen in/etc/resolv.conf
. - Ich füge folgendes an via
sudoedit /etc/sysconfig/network-scripts/ifcfg-eth0
:
DNS1=8.8.8.8
DNS2=8.8.4.4
DOMAIN=myNEWdomain.com
- Ich führe erneut den Befehl aus
hostnamectl set-hostname myNEWhostname.myNEWdomain
- Ich habe jedoch immer noch kein DNS
nslookup
undping
es fehlschlägt immer noch. - Ich versuche, NetworkManager wie empfohlen neu zu starten
systemctl restart NetworkManager.service
- Immer noch kein DNS, also führe ich den Befehl aus
reboot
- Nach dem Neustart melde ich mich erneut per SSH an und ES FUNKTIONIERT.
ping
Undnslookp
beides ist erfolgreich. - Jetzt prüfe ich
cat /etc/resolv.conf
und sehe die enthaltenennameserver
Einträge:
# Generated by NetworkManager
search myNEWdomain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
Für GIT verwende ich etckeeper
(verwaltet im Wesentlichen ein GIT-Repository in /etc
) und es zeigt die anfängliche Konfiguration und dass explizit keine anderen Änderungen an den netzwerkbezogenen Dateien von vorgenommen wurden, /etc/{hostname,resolv.conf,hosts}
bis der hostnamectl
Befehl ausgeführt wurde.
Antwort2
Sie können Networkmanager anweisen, keine Änderungen vorzunehmen, resolv.conf
indem Sie nodns
im Hauptabschnitt einen Codeausschnitt hinzufügen /etc/NetworkManager/conf.d/nodns.conf
:
[main]
dns=none
(nicht vergessen systemctl restart NetworkManager
)