Wie lege ich den vollqualifizierten Hostnamen unter CentOS 7.0 fest?

Wie lege ich den vollqualifizierten Hostnamen unter CentOS 7.0 fest?

Wie lege ich den vollqualifizierten Hostnamen unter CentOS 7.0 fest?

Ich habe online einige Posts gesehen, in denen beispielsweise Folgendes stand:

$ sudo hostnamectl set-hostname nodename.domainname

Das Ausführen von domainname gibt jedoch nichts zurück:

$ domainname
(none)

Auch:

$ 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

Antwort1

Um dieHostname Tunverwenden hostnamectl, aber nur mit dem Hostnamen, etwa so:

hostnamectl set-hostname nodename

Um die(DNS) DomänennameBearbeiten Sie /etc/hostsdie Datei und stellen Sie Folgendes sicher:

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

(none)Beachten Sie, dass die richtige Ausgabe beim Ausführen des Befehls ist , sofern Sie nicht NIS verwenden domainname.

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

NIS vs. DNS-Domäne

Dieses Problem hat mich verwirrt, als ich es zum ersten Mal sah. Es scheint, dass der domainnameBefehl schon vor der Popularität des Internets existierte. Statt des DNS-Domänennamens zeigt er den DNS des Systems an oder legt ihn fest.NIS (Netzwerkinformationsdienst)auch bekannt als YP-Domänenname (Yellow Pages) (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. ( nisdomainnameund ypdomainnamesind alternative Namen für diesen Befehl.)

Anzeigen des FQDN- oder DNS-Domänennamens

Um dieDNS(Internet-)Domänennamen möchten, sollten Sie den dnsdomainnameBefehl oder hostnamemit den -d, --domainOptionen ausführen. (Beachten Sie, dass der dnsdomainnameBefehl nicht zum Festlegen des DNS-Domänennamens verwendet werden kann – er dient nur zur Anzeige.)

Zum Anzeigen derFQDN (Vollqualifizierter Domänenname)des Systems, hostnamemit den -f, --fqdn, --longOptionen ausführen (ebenso kann dieser Befehl nicht verwendet werden, um den Domänennamenteil festzulegen).

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 FQDN zu bestimmen.

Namensauflösung

In modernen Betriebssystemen wie RHEL 7 wird der hostsEintrag in /etc/nsswitch.confzur Auflösung von Hostnamen verwendet. In Ihrer CentOS 7-Maschine ist diese Zeile wie folgt konfiguriert (Standard für CentOS 7):

hosts:      files dns

Das bedeutet, dass die Resolver-Funktionen bei der Suche nach Hostnamen oder IP-Adressen zunächst nach einem Eintrag in der/etc/hosts Dateiund dann versuchen Sie dieDNS-Serverdie in aufgeführt sind /etc/resolv.conf.

Beim Abrufen hostname -fdes FQDN eines Hosts versuchen die Resolver-Funktionen, den FQDN für den Hostnamen des Systems abzurufen. Wenn der Host nicht in der /etc/hostsDatei oder vom entsprechenden DNS-Server aufgeführt ist, schlägt der Versuch fehl und hostnamees wird eine entsprechende Meldung ausgegeben Name or service not known.

Wenn hostname -dzum Abrufen des Domänennamens ausgeführt wird, werden dieselben Vorgänge ausgeführt und der Domänennamenteil wird bestimmt, indem der Hostnamenteil und der erste Punkt aus dem FQDN entfernt werden.

Konfigurieren des Domänennamens

  1. Aktualisieren Sie den entsprechenden DNS-Nameserver

    In meinem Fall hatte ich bereits einen Eintrag für meine neue CentOS 7-Maschine im DNS-Server für mein lokales LAN hinzugefügt, sodass die lokalen DNS-Dienste den FQDN für meinen neuen Hostnamen vollständig auflösen konnten, als der FQDN /etc/hostsbeim Ausführen hostnamemit der Option -d„oder“ nicht in der Datei gefunden wurde.-f

  2. Verwenden Sie die /etc/hostsDatei

    Wenn der DNS-Server nicht konfiguriert wurde, kann der vollqualifizierte Domänenname in der /etc/hostsDatei angegeben werden. Die gängigste Methode hierfür ist die Angabe der primären IP-Adresse des Systems, gefolgt von seinem FQDN und seinem kurzen Hostnamen. Beispiel:

     172.22.0.9  nodename.domainname nodename
    

Ausschnitt aushostnamemanpage

Sie können den FQDN nicht mit hostnameoder ändern dnsdomainname.

Die empfohlene Methode zum Festlegen des FQDN besteht darin, den Hostnamen mithilfe von DNS oder NIS als Alias ​​für den vollqualifizierten Namen festzulegen /etc/hosts,. Wenn der Hostname beispielsweise „ursula“ lautet, könnte eine Zeile mit /etc/hostsfolgendem Inhalt vorhanden sein:

127.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. Normalerweise wird die Hosts-Datei vor DNS oder NIS analysiert, daher ist es am üblichsten, den FQDN in zu ändern /etc/hosts.

Antwort2

Unter Centos7 liefert die Verwendung von nmtui zum Festlegen des Hostnamens und die Angabe des Formats nodename.domainname / FQDN konsistente Ergebnisse. Hostname [d/f/s] liefert alle korrekten erwarteten Ergebnisse. Es wird nicht in /etc/resolv.conf ODER /etc/hosts gespeichert. Aber der FQDN wird als einzeiliger Eintrag in /etc/hostname geschrieben.

Antwort3

Bei mir enthielt die Datei /etc/hostname den FQDN statt des Hostnamens (z. B. Hostname statt hostname.example.com). Nachdem ich die Domäne aus dem Hostnamen in /etc/hostname entfernt hatte, funktionierte der Befehl „hostname -f“ normal.

Ich glaube, dies wurde eingeführt, als ich die CentOS 7-VM installiert habe. Ich hätte nur den Hostnamen eingeben sollen, nicht den vollqualifizierten Domänennamen.

Antwort4

Ähnliches Problem wie OP (RHEL7), gelöst durch Entfernen eines nachstehenden Leerzeichens aus dem in der /etc/hostnameDatei aufgeführten kurzen Hostnamen. Gefolgt von systemctl restart systemd-hostnamed. Jetzt wird FQDN mit hostname -fBefehl angezeigt.

verwandte Informationen