So stellen Sie den Hostnamen do Verwendung hostnamectl
, sondern nur mit dem Hostnamen, wie folgt aus :
hostnamectl set-hostname nodename
So legen Sie die Bearbeitungsdatei für den (DNS-) Domainnamen fest/etc/hosts
und stellen Folgendes sicher:
- Es gibt eine Linie
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
dort
- Es gibt KEINE anderen Leitungen mit
<some IP> <hostname>
, und dies schließt Leitungen mit 127.0.0.1
und ::1
(IPv6) -Adressen ein.
Beachten Sie, dass es sich (none)
bei der Ausführung des domainname
Befehls um die richtige Ausgabe handelt , es sei denn, Sie verwenden NIS .
Um zu überprüfen, ob Ihr DNS-Domänenname richtig eingestellt ist, verwenden Sie den dnsdomainname
Befehl und überprüfen Sie die Ausgabe von hostname
vs hostname -f
(FQDN).
NIS vs. DNS Domain
Dieses Problem hat mich verwirrt, als ich darauf stieß. Es scheint, dass der domainname
Befehl älter ist als die Popularität des Internets. Anstelle des DNS-Domänennamens wird der NIS- Domänenname (Network Information Service) (Yellow Pages) des Systems angezeigt oder festgelegt (eine Gruppe von Computern, deren Dienste von einem Master-NIS-Server bereitgestellt werden). Dieser Befehl zeigt einfach den von der getdomainname(2)
Standardbibliotheksfunktion zurückgegebenen Namen an . ( nisdomainname
und ypdomainname
sind alternative Namen für diesen Befehl.)
Zeigen Sie den FQDN- oder DNS-Domänennamen an
Um den DNS (Internet) -Domänennamen zu überprüfen , sollten Sie den dnsdomainname
Befehl oder hostname
mit den -d, --domain
Optionen ausführen . (Beachten Sie, dass der dnsdomainname
Befehl nicht zum Festlegen des DNS-Domänennamens verwendet werden kann - er wird nur zum Anzeigen verwendet.)
Führen Sie zum Anzeigen des vollqualifizierten Domänennamens (FQDN) des Systems hostname
die -f, --fqdn, --long
Optionen aus (ebenfalls kann dieser Befehl nicht zum Festlegen des Domänennamens verwendet werden).
Die obigen Befehle verwenden den Resolver des Systems (implementiert durch die gethostbyname(3)
Funktion aus der Standardbibliothek, wie von POSIX angegeben), um den DNS-Domänennamen und den vollqualifizierten Domänennamen zu bestimmen.
Namensauflösung
In modernen Betriebssystemen wie RHEL 7 wird der hosts
Eintrag in /etc/nsswitch.conf
zum Auflösen von Hostnamen verwendet. Auf Ihrem CentOS 7-Computer ist diese Zeile wie folgt konfiguriert (Standardeinstellung für CentOS 7):
hosts: files dns
Dies bedeutet , dass , wenn , wenn die Resolver - Funktionen Host - Namen nachzuzuschlagen oder IP - Adresse, sie zum ersten Mal in der für einen Eintrag überprüft /etc/hosts
Datei und versucht neben dem DNS - Server (n) , die in aufgeführt sind /etc/resolv.conf
.
Wenn hostname -f
die Resolver-Funktionen ausgeführt werden , um den FQDN eines Hosts abzurufen, versuchen sie, den FQDN für den Hostnamen des Systems abzurufen. Wenn der Host nicht in der /etc/hosts
Datei oder auf dem entsprechenden DNS-Server aufgeführt ist, schlägt der Versuch fehl und hostname
meldet dies Name or service not known
.
Wenn ausgeführt hostname -d
wird, um den Domänennamen zu erhalten, werden dieselben Vorgänge ausgeführt, und der Domänennamenteil wird bestimmt, indem der Hostnamenteil und der erste Punkt vom FQDN entfernt werden.
Konfigurieren Sie den Domainnamen
1. Aktualisieren Sie den entsprechenden DNS-Nameserver
In meinem Fall hatte ich bereits einen Eintrag für meinen neuen CentOS 7-Computer im DNS-Server für mein lokales LAN hinzugefügt. Wenn der vollqualifizierte Domänenname bei Ausführung mit der Option oder nicht in der /etc/hosts
Datei gefunden wurde , war dies für die lokalen DNS-Dienste möglich Lösen Sie den FQDN für meinen neuen Hostnamen vollständig auf.hostname
-d
-f
2. Verwenden Sie die /etc/hosts
Datei
Wenn der DNS-Server nicht konfiguriert wurde, kann der vollständig qualifizierte Domänenname in der /etc/hosts
Datei angegeben werden. Die gebräuchlichste Methode hierfür ist die Angabe der primären IP-Adresse des Systems, gefolgt von dessen FQDN und dessen kurzem Hostnamen. Z.B,
172.22.0.9 nodename.domainname nodename
Auszug aus der hostname
Manpage
Sie können den FQDN nicht mit hostname
oder ändern dnsdomainname
.
Die empfohlene Methode zum Festlegen des FQDN besteht darin, den Hostnamen mithilfe von /etc/hosts,
DNS oder NIS als Alias für den vollständig qualifizierten Namen festzulegen. Wenn der Hostname beispielsweise "ursula" /etc/hosts
lautet , könnte eine Zeile mit folgendem Inhalt vorhanden sein:
27.0.1.1 ursula.example.com ursula
Technisch: Der FQDN ist der Name, den getaddrinfo (3) für den von gethostname (2) zurückgegebenen Hostnamen zurückgibt. Der DNS-Domänenname ist der Teil nach dem ersten Punkt.
Daher hängt es von der Konfiguration des Resolvers (normalerweise in
/etc/host.conf
) ab, wie Sie ihn ändern können. In der Regel wird die Hosts-Datei vor DNS oder NIS analysiert. Daher wird am häufigsten der vollqualifizierte Domänenname geändert
/etc/hosts
.
hostname -f
funktioniert der Befehl auf meinem CentOS vm nicht./etc/hostname
und die Ausgabe von enthältgrep ^hosts: /etc/nsswitch.conf
? Ich weiß nicht viel über Network Manager , aber ich habe auch bemerkt , dass meine/etc/NetworkManager/NetworkManager.conf
eine Linie in seinem enthält[keyfile]
Abschnitt:hostname=<nodename>
.hostnamectl set-hostname nodename.domainname
legt den DNS-Domänennamen nicht fest (und es ist auch nicht so, dass er den NIS-Domänennamen festlegt).Unter Centos7 führt die Verwendung von nmtui zum Festlegen des Hostnamens und das Bereitstellen des Formats nodename.domainname / FQDN zu konsistenten Ergebnissen. Hostname [d / f / s] liefern alle die korrekten erwarteten Ergebnisse. Es ist nicht in /etc/resolv.conf ODER / etc / hosts gespeichert. Der FQDN wird jedoch als einzeiliger Eintrag in / etc / hostname geschrieben.
quelle
Für mich enthielt die Datei / etc / hostname den FQDN anstelle des Hostnamens (z. B. hostname anstelle von hostname.beispiel.com). Nachdem ich die Domain aus dem Hostnamen in / etc / hostname entfernt hatte, funktionierte der Befehl 'hostname -f' normal.
Ich denke, dies wurde eingeführt, als ich die CentOS 7 VM installiert habe. Ich hätte nur den Hostnamen eingeben sollen, nicht den vollqualifizierten Domainnamen.
quelle