Sollte man FQDN in / etc / hostname anstelle von hostname verwenden?

10

Wie ich in der Manpage gelesen habe, wird empfohlen, den Hostnamen (ohne Domainnamen) anzugeben /etc/hostname. Beispiel: host anstelle von host.domainsub.domaintld. Aber wie ich weiß, ist einige Software darauf angewiesen, FQDNin /etc/hostname.

Was sollte man /etc/hostname auf Debian / Ubuntu-Maschinen angeben ?

Wenn nicht FQDN, wo sollte stattdessen FQDN angegeben werden?

Ich weiß, die Frage ist etwas alt, hat aber keine klare Antwort gefunden. Einige Leute sagen Hostname, andere - FQDN. Vielen Dank.

Bulat M.
quelle
1
Wo finden Sie Leute, die sagen, dass Sie den vollqualifizierten Domänennamen in die Datei / etc / hostname eingefügt haben? Diese Datei ist nur für den Hostnamen des Systems.
Terrance
Beim Lesen von Material darüber im Internet traf sich irgendwo. Und wo sollte man seinen FQDN angeben?
Bulat M.
@Terrance, eigentlich möchte ich Antworten von erfahrenen Leuten auf dem Gebiet bekommen, damit sie von Anfang an zeigen, wie man es "richtig" macht. Schreiben Sie als Antwort. Und was tun bei Distributionen ohne / etc / hostname?
Bulat M.

Antworten:

6

In der Datei / etc / hostname verwenden Sie nur den Hostnamen. Der FQDN, den Sie festlegen können: / etc / hosts, der möglicherweise wie folgt aussieht:

127.0.1.1        thishost.mydomain.org    thishost

Laut Handbuch der Hosts-Datei.

http://man7.org/linux/man-pages/man5/hosts.5.html

Adonist
quelle
1
UPDATE: Danke, es wäre jedoch wichtig, die Vor- und Nachteile der Angabe / Nichtangabe des FQDN in / etc / hostname zu kennen. Ich weiß über Ihre Lösung Bescheid: Es ist ein Stub für Programme, die FQDN in etwas auflösen möchten (egal zu welcher Adresse), um zu funktionieren.
Bulat M.
11

Überarbeitete Antwort:

Der Host selbst verarbeitet den tatsächlichen FQDN nicht. Das erledigt der DNS . FQDN (Fully Qualified Domain Name) wird von DNS verarbeitet, das Namen in IP-Adressen übersetzt. Mit der /etc/hostsDatei überschreiben Sie im Wesentlichen den DNS-Server. Der Computer überprüft zuerst die /etc/hostsDatei, um festzustellen, ob ein Eintrag für einen Hostnamen in eine IP-Adresse definiert ist. Die Einträge in sehen /etc/hostsfolgendermaßen aus:

127.0.0.1 localhost
127.0.1.1 terrance-ubuntu.local terrance-ubuntu

Diese Einträge sind nicht distro-spezifisch. Alle Betriebssysteme verwenden für diese Zeilen dasselbe Format. Nur der Speicherort der hostsDatei ändert sich. Linux befindet sich normalerweise im /etc/Ordner, während es sich in Windows normalerweise im C:\Windows\System32\drivers\etc\Ordner befindet.

Wenn Sie diese Zeile unterbrechen, können Sie sehen, dass ich beide zuweise terrance-ubuntu.local, nämlich meinen vollqualifizierten Domänennamen selbst, um DNS zu überschreiben, damit Anwendungen wissen, dass sie meinen Computer nicht verlassen, und terrance-ubuntu, was der Hostname ist, erneut, damit Anwendungen wissen, dass sie meinen Computer nicht verlassen oder 127.0.0.1 ( localhost ). Das Zuweisen meines Hostnamens zu meinem System 127.0.1.1hat keine Auswirkungen auf die übrigen Computer, die meinen Host im Netzwerk finden. Wenn DNS ordnungsgemäß funktioniert, wird mein Hostname als angezeigt 10.0.0.100. Der Grund für die Verwendung 127.0.1.1besteht darin, dass meine Anwendungen mein System schneller finden, da sie wissen, dass mein System nicht irgendwo anders in meinem Netzwerk verfügbar ist. Mein tatsächlicher Hostname mit dem .localFQDN, dem.local ist eigentlich meine Domain, die ich über meinen Router einrichte, der auch ein anderer DNS-Server in meinem Netzwerk ist.

Angenommen, die DNS-Dienste im lokalen Netzwerk weisen IP-Adressen keine Hostnamen oder FQDNs zu, Sie wissen jedoch, wie die IP-Adresse des Hosts im lokalen Netzwerk lautet. Sie würden diesen Host dann in Ihrer /etc/hostsDatei zuweisen, sodass Sie nicht jedes Mal die IP-Adresse des Hosts eingeben müssen, wenn Sie darauf zugreifen möchten. Der Host kann ein Tool-Server, ein Drucker oder ein anderes mit dem Netzwerk verbundenes System sein. Fügen Sie den Eintrag wie gewohnt zur /etc/hostsDatei hinzu.

Ich werde zum Beispiel meinen mit dem Netzwerk verbundenen Drucker verwenden. Es hat eine statische IP von 10.0.0.253. Ich kenne den Namen allerdings nicht. Dafür möchte ich es nennen hp_printer. Ich werde die IP und den Hostnamen dafür anpingen und dann hinzufügen /etc/hosts.

terrance@terrance-ubuntu:~$ ping -c 2 10.0.0.253
PING 10.0.0.253 (10.0.0.253) 56(84) bytes of data.
64 bytes from 10.0.0.253: icmp_seq=1 ttl=255 time=0.326 ms
64 bytes from 10.0.0.253: icmp_seq=2 ttl=255 time=0.334 ms

terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
ping: unknown host hp_printer

terrance@terrance-ubuntu:~$ sudo vi /etc/hosts
10.0.0.253 hp_printer.local hp_printer

terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
PING hp_printer.local (10.0.0.253) 56(84) bytes of data.
64 bytes from hp_printer.local (10.0.0.253): icmp_seq=1 ttl=255 time=0.334 ms
64 bytes from hp_printer.local (10.0.0.253): icmp_seq=2 ttl=255 time=0.303 ms

Jetzt kann ich auch auf die Webseite für mein Drucker-Setup unter dem von mir angegebenen Namen anstelle der IP-Adresse zugreifen, die möglicherweise leichter zu merken ist:

Geben Sie hier die Bildbeschreibung ein

Ihre Datei /etc/resolv.conf wird auch von DNS verwendet, um Hostnamen zu finden. Dies ist die Konfigurationsdatei für den Resolver. Es bietet die Suchdomäne, sodass Sie Ihren FQDN nicht immer angeben müssen, wenn Sie nach einem Host suchen. Es liefert auch die IP-Adresse für den DNS oder Nameserver Ihres lokalen Netzwerks. Die folgende searchZeile zeigt den Namen, localder mein Domainname ist.

terrance@terrance-ubuntu:~$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.0.1
search local

Hoffentlich hilft dies dabei, die Funktionsweise von DNS und FQDNs besser zu verstehen.

Terrance
quelle
Warum ordnen Sie FQDN in / etc / hosts 127.0.1.1 zu?
Bulat M.
1
@BulatM. Bitte beachten Sie meine überarbeitete Antwort.
Terrance
Könnten Sie bitte den Unterschied zwischen Such- und Domain-Keywords in /etc/resolv.conf erklären? Ich lese die Manpage von resolv.conf, immer noch nicht sehr klar.
Bulat M.
Und könnte man sie beide einbeziehen? Könnten Sie als Antwort einen nützlichen gültigen Fall präsentieren? Vielen Dank.
Bulat M.
1
@BulatM. Klicken Sie auf die Links in meiner Antwort, um zu weiteren Informationen zu gelangen. Wie en.wikipedia.org/wiki/Resolv.conf gibt es viel mehr Informationen. Ich bin hier, um zu helfen, nicht um dich zu unterrichten. Ich werde nicht bezahlt, da dies alles freiwillig ist. Bitte lerne selbst.
Terrance
4

Die Manpage vonhostname(1) diskutiert dies (der fett gedruckte Absatz wird von mir hervorgehoben):

DER FQDN
   Der FQDN (Fully Qualified Domain Name) des Systems ist der Name, der
   Der Resolver (3) gibt den Hostnamen zurück, z. B. ursula.example.com .
   Dies ist normalerweise der Hostname, gefolgt vom DNS-Domänennamen (dem Teil)
   nach dem ersten Punkt). Sie können den vollqualifizierten Domänennamen mit dem Hostnamen --fqdn   oder überprüfen
   der Domainname mit dnsdomainname .

   Sie können den vollqualifizierten Domänennamen nicht mit dem Hostnamen oder dem DNS-Domänennamen ändern .

   Die empfohlene Methode zum Festlegen des vollqualifizierten Domänennamens besteht darin, den Hostnamen festzulegen
   Ein Alias ​​für den vollständig qualifizierten Namen unter Verwendung von / etc / hosts, DNS oder NIS.
   Wenn der Hostname beispielsweise "ursula" war, könnte eine Zeile in sein
   / etc / hosts, die liest

          127.0.1.1 ursula.example.com ursula

   Technisch: Der vollqualifizierte Domänenname ist der Name, den getaddrinfo (3) für den Host zurückgibt
   Name wird von gethostname (2) zurückgegeben. Der DNS-Domänenname ist der Teil danach
   der erste Punkt.

   Daher hängt es von der Konfiguration des Resolvers ab (normalerweise in
   /etc/host.conf) wie Sie es ändern können. Normalerweise wird die Hosts-Datei analysiert
   vor DNS oder NIS, daher ist es am häufigsten, den FQDN in zu ändern
   / etc / hosts.

Wenn Sie während der Installation einen vollqualifizierten Domänennamen als Hostnamen angeben, schreibt dieser nur die erste Komponente in /etc/hostnameden vollqualifizierten Domänennamen und behält diesen bei /etc/hosts.

Lassen Sie in diesem Fall das Installationsprogramm einfach das tun, was es tut.

muru
quelle
Ist es (Aufnahme von 127.0.1.1 ursula.example.com ursula in / etc / hosts) Debian \ Ubuntu spezifisch oder könnte es genauso gut auf jedes andere Distr angewendet werden?
Bulat M.
1
Keine Ahnung von anderen Distributionen. Sie können dies jedoch auch in Arch und Cent OS tun. Fragen zu anderen Distributionen sollten unter Unix & Linux gestellt werden .
Muru