it-swarm.com.de

Wie setze ich den vollständig qualifizierten Hostnamen unter CentOS 7.0?

Wie setze ich den vollständig qualifizierten Hostnamen unter CentOS 7.0?

Ich habe einige Online-Beiträge gesehen, zum Beispiel mit:

$ Sudo hostnamectl set-hostname nodename.domainname

Das Ausführen des Domänennamens gibt jedoch nichts zurück:

$ domainname
(none)

Ebenfalls:

$ hostname
nodename.domainname

Jedoch,

$ hostname -f
hostname: Name or service not known
$ hostname -d
hostname: Name or service not known

Einige Debug-Ausgaben:

$ cat /etc/hostname
nodename.domainname

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns
20
Chris Snow

Um den Hostnamen do festzulegen, verwenden Sie hostnamectl, jedoch nur mit dem Hostnamen, wie folgt:

hostnamectl set-hostname nodename


Um den (DNS) -Domänennamen festzulegen, bearbeiten Sie die Datei /etc/hosts Und stellen Sie Folgendes sicher:

  1. Dort steht eine Zeile <machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
  2. Es gibt KEINE anderen Zeilen mit <some IP> <hostname>, Und dies schließt Zeilen mit den Adressen 127.0.0.1 Und ::1 (IPv6) ein.

Beachten Sie, dass (none) Die richtige Ausgabe ist, wenn Sie den Befehl domainname ausführen, es sei denn, Sie verwenden NIS.

Um zu überprüfen, ob Ihr DNS-Domänenname richtig eingestellt ist, verwenden Sie den Befehl dnsdomainname und überprüfen Sie die Ausgabe von hostname vs hostname -f (FQDN).


NIS vs. DNS-Domain

Dieses Problem hat mich verwirrt, als ich es zum ersten Mal entdeckte. Es scheint, dass der Befehl domainname vor der Popularität des Internets liegt. Anstelle des DNS-Domänennamens wird der NIS (Netzwerkinformationsdienst) aka YP (Gelbe Seiten) -Domänenname (eine Gruppe von) angezeigt oder festgelegt Computer, deren Dienste von einem Master-NIS-Server bereitgestellt werden). Dieser Befehl zeigt einfach den Namen an, der von der Standardbibliotheksfunktion getdomainname(2) zurückgegeben wird. (nisdomainname und ypdomainname sind alternative Namen für diesen Befehl.)

Zeigen Sie den FQDN- oder DNS-Domänennamen an

Um den Domänennamen [~ # ~] dns [~ # ~] (Internet) zu überprüfen, sollten Sie den Befehl dnsdomainname oder hostname ausführen mit den Optionen -d, --domain. (Beachten Sie, dass der Befehl dnsdomainname nicht zum Festlegen des DNS-Domänennamens verwendet werden kann. Er wird nur zum Anzeigen verwendet.)

Um den FQDN (Fully Qualified Domain Name) des Systems anzuzeigen, führen Sie hostname mit den Optionen -f, --fqdn, --long Aus (dieser Befehl kann dies ebenfalls nicht verwendet werden, um den Domainnamen-Teil festzulegen).

Die obigen Befehle verwenden den Resolver des Systems (implementiert durch die Funktion gethostbyname(3) 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 Eintrag hosts in /etc/nsswitch.conf Zum Auflösen von Hostnamen verwendet. In Ihrem CentOS 7-Computer ist diese Zeile wie folgt konfiguriert (Standard für CentOS 7):

hosts:      files dns

Das heißt, wenn die Resolver-Funktionen nach Hostnamen oder IP-Adressen suchen, suchen sie zuerst nach einem Eintrag in der /etc/hosts Datei und versuchen dann als nächstes den DNS-Server ( s) die in /etc/resolv.conf aufgeführt sind.

Wenn Sie hostname -f Ausführen, um den vollqualifizierten Domänennamen eines Hosts abzurufen, versuchen die Resolver-Funktionen, den vollqualifizierten Domänennamen für den Hostnamen des Systems abzurufen. Wenn der Host nicht in der Datei /etc/hosts Oder vom entsprechenden DNS-Server aufgeführt ist, schlägt der Versuch fehl und hostname meldet, dass Name or service not known.

Wenn hostname -d Ausgeführt wird, um den Domänennamen zu erhalten, werden dieselben Vorgänge ausgeführt, und der Domänennamen-Teil wird durch Entfernen des Hostnamen-Teils und des ersten Punkts aus dem vollqualifizierten Domänennamen bestimmt.

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, als der vollqualifizierte Domänenname nicht in der Datei /etc/hosts Gefunden wurde, als ich hostname ausführte Mit der Option -d oder -f konnten die lokalen DNS-Dienste den vollqualifizierten Domänennamen für meinen neuen Hostnamen vollständig auflösen.

2. Verwenden Sie die Datei /etc/hosts

Wenn der DNS-Server nicht konfiguriert wurde, kann der vollständig qualifizierte Domänenname in der Datei /etc/hosts Angegeben werden. Am häufigsten geben Sie dazu die primäre IP-Adresse des Systems an, gefolgt von seinem vollqualifizierten Domänennamen und seinem kurzen Hostnamen. Z.B.,

172.22.0.9  nodename.domainname nodename

Auszug aus der Manpage hostname

Sie können den vollqualifizierten Domänennamen nicht mit hostname oder dnsdomainname ändern.

Die empfohlene Methode zum Festlegen des vollqualifizierten Domänennamens 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" war, könnte in /etc/hosts Eine Zeile stehen, die lautet:

27.0.1.1    ursula.example.com ursula

Technisch: Der vollqualifizierte Domänenname 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 ab (normalerweise in /etc/Host.conf), Wie Sie ihn ändern können. Normalerweise wird die Hosts-Datei vor DNS oder NIS analysiert, daher ist es am häufigsten, den vollqualifizierten Domänennamen in /etc/hosts Zu ändern.

32

Unter Centos7 führt die Verwendung von nmtui zum Festlegen des Hostnamens und die Angabe des Formats nodename.domainname/FQDN zu konsistenten Ergebnissen. Hostname [d/f/s] liefern alle korrekte erwartete Ergebnisse. Es wird nicht in /etc/resolv.conf OR/etc/hosts gespeichert. Der vollqualifizierte Domänenname wird jedoch als einzeiliger Eintrag in/etc/hostname geschrieben.

1
Ponn Dk

Für mich enthielt die Datei/etc/hostname den vollqualifizierten Domänennamen anstelle des Hostnamens (z. B. Hostname anstelle von hostname.example.com). Nachdem ich die Domäne 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 vollständig qualifizierten Domainnamen.

0
KenR