Inkonsistente Domänennamen von Hostname -f und Domänenname

Inkonsistente Domänennamen von Hostname -f und Domänenname

Ich richte einen Postfix-Mailserver mit dem Hostnamen „letters“ ein, um E-Mails für die Domäne „example.net“ zu verarbeiten. Ich habe versucht, den Domänennamen von letters mithilfe von nis auf example.net festzulegen, aber ich erhalte inkonsistente Ausgaben von hostname -f („letters.stuff.comcast.net“) und domainname („example.net“). Wie lege ich den Domänennamen fest, damit der Befehl hostname -f „example.net“ meldet? Wie wichtig ist dies für die ordnungsgemäße Funktion von Postfix?

Der Host letters läuft unter Ubuntu und stellt über einen OpenWRT-Router per Kabelmodem eine Verbindung zum Internet mit Comcast her. Der Nameserver für die Domäne example.net befindet sich auf einem Remote-Debian-Computer, der noch nicht so konfiguriert wurde, dass ein Host oder Alias ​​für letters erstellt werden kann.

Ich nehme an, dass der Domänenname in der Hostnamenausgabe den Domänennamen widerspiegelt, den der DHCP-Client der Box vom Comcast-Server erhalten hat, und die Idee widerspiegelt, dass die Box ein Client in diesem Netzwerk ist. Besteht die Lösung darin, den Host „letters“ auf dem Nameserver für example.net zu erstellen? Ist das außerdem erforderlich, diesen Nameserver zu den in der resolv.conf-Datei von letters aufgeführten Nameservern hinzuzufügen?

Antwort1

Stellen Sie sicher, dass Ihre /etc/hosts(oder NIS-)Einträge korrekt sind.

Ich wollte versuchen, es zu erklären, aber die Manpage erzählt die Geschichte besser:

THE FQDN
    You can't change the FQDN (as returned by hostname --fqdn) or  the  DNS
    domain  name (as returned by dnsdomainname) with this command. The FQDN
    of the system is the name that the resolver(3)  returns  for  the  host
    name.

    [..]

    Therefore  it  depends on the configuration (usually in /etc/host.conf)
    how you can change it. Usually (if the hosts file is parsed before  DNS
    or NIS) you can change it in /etc/hosts.

Antwort2

Ich bin gestern auf dieses Problem gestoßen, als ich an einer Serveraktualisierung gearbeitet habe, die jemand anderes gestartet hatte ... Die Ausgabe von „hostname -f“ hatte nie die richtige Enddomäne (fehlendes .org).

# hostname foobar.example.org
# hostname -f
foobar.example
#

# cat /etc/hosts
10.20.11.244    foobar.example foobar

Die Lösung:

Der Domänenteil von hostname -f scheint aus einem /etc/hosts-Eintrag für diesen Host zu stammen. Nachdem ich den Hostnamen in /etc/hosts korrigiert hatte, gab hostname -f die richtige Domäne zurück:

# hostname foobar
# hostname
foobar
# hostname -f
foobar.example.org

Ihre Anfrage kann abweichen.

Antwort3

Wenn Ihre IP nicht statisch ist, /etc/hostsfunktioniert das bei Ihnen nicht (oder nur vorübergehend, bis Sie eine neue IP erhalten). Ich bin nicht sicher, ob das funktioniert, aber hier ist etwas, das Sie versuchen können:

  1. Konfigurieren Sie Ihren DHCP-Client so, dass er den Domänennamen nicht vom DHCP-Server anfordert. Oder sagen Sie ihm einfach, dass er resolv.conf überhaupt nicht berühren soll, was Sie möglicherweise bereits getan haben, wenn Sie benutzerdefinierte Nameserver haben.
  2. Legen Sie Ihren Domänennamen auf example.net fest in/etc/resolv.conf
  3. Stellen Sie sicher, dass Ihr Nameserver auflösen kann letters.example.net. Ich nehme an, Sie müssen eine Art dynamischen DNS-Dienst verwenden, da diese Lösung für nicht statische IPs gedacht ist.

Das könnte bedeuten, dass meine Antwort auf Ihre Frage einfach „Ja“ ist.

Antwort4

Dies ist ein häufig missverstandenes Problem mit „Domainname“. Hier ist der Anfang der Manpage auf meinem Mac OS X-System, aber Ihres wird ähnlich sein:

DOMAINNAME(1)             BSD General Commands Manual            DOMAINNAME(1)

NAME
     domainname -- set or print the name of the current NIS domain

Dieser Befehl wird nicht für die DNS-Konfiguration verwendet!

verwandte Informationen