Czy należy używać nazwy FQDN w / etc / hostname zamiast nazwy hosta?

10

Jak czytam na stronie podręcznika, zalecane jest umieszczenie nazwy hosta (bez nazwy domeny) na /etc/hostname. Na przykład host zamiast host.domainsub.domaintld. Ale, co wiem, niektóre oprogramowanie opiera się na posiadaniu FQDNw /etc/hostname.

Co należy określić /etc/hostname na maszynach Debian / Ubuntu?

Jeśli nie FQDN, gdzie zamiast tego należy podać FQDN?

Wiem, pytanie jest trochę stare, ale nie znalazłem jasnej odpowiedzi. Niektórzy mówią nazwę hosta, niektórzy - FQDN. Dzięki.

Bulat M.
źródło
1
Gdzie znajdujesz osoby, które mówią, że umieściłeś nazwę FQDN w pliku / etc / hostname? Ten plik jest tylko dla nazwy hosta systemu.
Terrance,
Podczas czytania materiałów na ten temat w Internecie gdzieś się spotkałem. A gdzie należy podać jego FQDN?
Bulat M.,
@Terrance, tak naprawdę chcę uzyskać odpowiedzi od doświadczonych ludzi w tej dziedzinie, więc od samego początku pokazują, jak to zrobić. Napisz jako odpowiedź. A co robić w dystrybucjach, które nie mają / etc / hostname?
Bulat M.,

Odpowiedzi:

7

W pliku / etc / hostname używasz tylko nazwy hosta. Nazwa FQDN, którą możesz ustawić na: / etc / hosts, która może wyglądać tak:

127.0.1.1        thishost.mydomain.org    thishost

Zgodnie z instrukcją pliku hosts.

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

Adonista
źródło
1
POPRAWKA: Dzięki, ale byłoby to wiedzieć o zaletach i wadach określania / nieokreślania FQDN w / etc / hostname. Wiem o twoim rozwiązaniu: jest to odgałęzienie dla programów, które chcą, aby FQDN zostało rozwiązane na coś (bez względu na adres), aby działało.
Bulat M.
12

Poprawiona odpowiedź:

Sam host nie obsługuje faktycznej nazwy FQDN. Obsługuje to DNS . FQDN (w pełni kwalifikowana nazwa domeny) jest obsługiwany przez DNS tłumaczący nazwy na adresy IP. Korzystając z /etc/hostspliku, zasadniczo zastępujesz serwer DNS. Komputer /etc/hostsnajpierw sprawdza plik, aby sprawdzić, czy zdefiniowano pozycję dla nazwy hosta na adres IP. Wpisy /etc/hostswygląda następująco:

127.0.0.1 localhost
127.0.1.1 terrance-ubuntu.local terrance-ubuntu

Te wpisy nie są specyficzne dla dystrybucji. Wszystkie systemy operacyjne używają tego samego formatu dla tych linii. hostsZmienia się tylko lokalizacja pliku. Linux zazwyczaj znajduje się w /etc/folderze, natomiast w systemie Windows zwykle znajduje się w C:\Windows\System32\drivers\etc\folderze.

Po rozbiciu tej linii widać, że przypisuję oba terrance-ubuntu.local, które są moją nazwą FQDN w celu zastąpienia DNS, aby aplikacje wiedziały, że nie powinny opuszczać mojego komputera, i terrance-ubuntu, która jest nazwą hosta, ponownie, aby aplikacje wiedziały, aby nie opuszczać mojego komputera lub 127.0.0.1 ( localhost ). Przypisanie mojej nazwy hosta do mojego systemu 127.0.1.1nie ma wpływu na to, że reszta komputerów znajdzie mojego hosta w sieci. Jeśli DNS działa poprawnie, będą widzieć moją nazwę hosta jako 10.0.0.100. Powodem użycia 127.0.1.1jest to, że moje aplikacje szybciej odnajdują mój system, ponieważ będzie wiedział, że mojego systemu nie ma gdzie indziej w mojej sieci. Moja faktyczna .localnazwa hosta, ponieważ jest to moja nazwa FQDN,.local jest właściwie moją domeną, którą konfiguruję za pomocą routera, który jest również innym serwerem DNS w mojej sieci.

Załóżmy teraz, że usługi DNS w sieci lokalnej nie przypisują nazw hostów ani nazw FQDN do adresów IP, ale wiesz, jaki jest adres IP hosta w sieci lokalnej. Następnie przypisujesz tego hosta do /etc/hostspliku, aby nie trzeba było wpisywać adresu IP hosta za każdym razem, gdy chcesz uzyskać do niego dostęp. Host może być serwerem narzędzi, drukarką lub innym systemem podłączonym do sieci. Dodaj wpis, tak jak normalnie, do /etc/hostspliku.

Mam zamiar użyć na przykład mojej drukarki podłączonej do sieci. Ma statyczny adres IP 10.0.0.253. Nie znam jednak jego nazwy. W tym celu chcę to nazwać hp_printer. Wyśledzę adres IP i nazwę hosta, a następnie dodam do /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

Teraz mogę również uzyskać dostęp do strony konfiguracji drukarki pod nazwą, którą mu podałem, zamiast adresu IP, który łatwiej zapamiętać:

wprowadź opis zdjęcia tutaj

Twój plik /etc/resolv.conf jest również używany przez DNS do pomocy w znalezieniu nazw hostów. Jest to plik konfiguracyjny resolvera. Udostępnia domenę wyszukiwania, dzięki czemu nie musisz podawać nazwy FQDN przez cały czas, gdy szukasz hosta. Dostarcza także adres IP dla DNS lub serwera nazw twojej sieci lokalnej. searchLinia poniżej pokazuje nazwę local, która jest moja domena.

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

Mamy nadzieję, że pomoże to lepiej zrozumieć, jak działają DNS i FQDN.

Terrance
źródło
dlaczego mapujesz FQDN w / etc / hosts na 127.0.1.1?
Bulat M.,
1
@BulatM. Proszę zobaczyć moją poprawioną odpowiedź.
Terrance
czy możesz wyjaśnić różnicę między słowami kluczowymi wyszukiwania i domeny w /etc/resolv.conf? Czytam stronę podręcznika resolv.conf, wciąż niezbyt jasną.
Bulat M.
I czy można je objąć? Czy mógłbyś przedstawić w odpowiedzi użyteczne uzasadnienie? Dzięki.
Bulat M.,
1
@BulatM. Kliknij linki w mojej odpowiedzi, aby przejść do dodatkowych informacji na temat różnych rzeczy. Podobnie jak en.wikipedia.org/wiki/Resolv.conf daje znacznie więcej informacji. Jestem tutaj, aby ci pomóc, a nie cię uczyć. Nie dostaję zapłaty, ponieważ to wszystko jest wolontariuszem, więc proszę, popracujcie trochę nad swoim.
Terrance
4

Podręcznika zhostname(1) omawia to (akapit pogrubione są podkreślone przeze mnie):

FQDN
   FQDN (w pełni kwalifikowana nazwa domeny) systemu to nazwa tegorezolwer (3) powraca do nazwę hosta, takim jak ursula.example.com .
   Zwykle jest to nazwa hosta, po której następuje nazwa domeny DNS (część
   po pierwszej kropce). Możesz sprawdzić nazwę FQDN, używając nazwy hosta --fqdn   lub
   nazwa domeny przy użyciu dnsdomainname .

   Nie można zmienić nazwy FQDN za pomocą nazwy hosta ani nazwy domeny dnsdomain .

   Zalecaną metodą ustawienia nazwy FQDN jest ustawienie nazwy hosta na
   alias dla w pełni kwalifikowanej nazwy przy użyciu / etc / hosts, DNS lub NIS.
   Na przykład, jeśli nazwa hosta to „ursula”, można wstawić wiersz
   / etc / hosts, który czyta

          127.0.1.1 ursula.example.com ursula

   Technicznie: FQDN to nazwa getaddrinfo (3) zwracana dla hosta
   nazwa zwrócona przez gethostname (2). Nazwa domeny DNS jest późniejsza
   pierwsza kropka.

   Dlatego zależy to od konfiguracji resolvera (zwykle w
   /etc/host.conf) jak możesz to zmienić. Zwykle plik hosts jest analizowany
   przed DNS lub NIS, więc najczęściej zmienia się FQDN w
   / etc / hosts.

A jeśli podasz nazwę FQDN jako nazwę hosta podczas instalacji, zapisuje ona tylko składnik pięści /etc/hostnamei zachowuje nazwę FQDN /etc/hosts.

W takim przypadku pozwól instalatorowi zrobić to, co robi.

muru
źródło
Czy to (włączenie 127.0.1.1 ursula.example.com ursula do / etc / hosts) jest specyficzne dla Debian \ Ubuntu, czy może być równie dobrze stosowane do innych programów?
Bulat M.,
1
Nie wiem o innych dystrybucjach. Możesz zrobić to samo w Arch i Cent OS. Pytania dotyczące innych dystrybucji powinny być zadawane na Unix i Linux .
muru