Korzystam z RHEL 5.7, a hostname
polecenie podaje mi poprawną nazwę hosta.
Ale hostname -s
i hostname -f
powrót: Unknown host
. Dlaczego?
/etc/hostname
?
hostname -f
używa DNS, czy masz odwrotny wpis DNS dla swojego adresu IP?
Korzystam z RHEL 5.7, a hostname
polecenie podaje mi poprawną nazwę hosta.
Ale hostname -s
i hostname -f
powrót: Unknown host
. Dlaczego?
/etc/hostname
?
hostname -f
używa DNS, czy masz odwrotny wpis DNS dla swojego adresu IP?
Odpowiedzi:
(skopiowane z jednej z moich odpowiedzi na SF )
hostname
Komenda zwraca wyniki z DNS i /etc/hosts
.
hostname
jest równoważne uname -n
i jest faktyczną „nazwą hosta” lub „ nazwą węzła ” skrzynki.
Wszystkie pozostałe hostname
argumenty używają tej nazwy węzła do wyszukiwania informacji.
Więc zanim przejdę dalej, powinienem wyjaśnić /etc/hosts
format pliku.
Pierwsze pole jest dość oczywiste, jest to adres IP, na który powinny się rozstrzygać wszystkie nazwy hostów w linii. Drugie pole to podstawowa nazwa hosta dla tego adresu IP. Pozostałe pola to aliasy.
Więc jeśli uruchomisz hostname -f
, najpierw spróbuje rozwiązać adres IP dla twojej nazwy węzła. W zależności od sposobu hosts:
skonfigurowania wpisu w /etc/nsswitch.conf
tej metodzie będą się różnić.
/etc/resolv.conf
dopóki nie otrzyma adresu IP z DNS. /etc/hosts
do linii, w której podstawową nazwą hosta lub aliasu jest Twoja bieżąca nazwa węzła ( uname -n
), a następnie zwróci adres IP w tej linii. Po uzyskaniu adresu IP podejmie próbę wyszukiwania wstecznego dla tego adresu IP. Ponownie użyje do tego DNS i twojego pliku hosts na podstawie twojego nsswitch.conf
. W przypadku użycia pliku hosts zwróci podstawowy wpis (który jest pierwszym polem po adresie IP w pliku).
hostname -a
będzie działać tylko z plikiem hosts, ponieważ wyszukiwanie wsteczne w DNS daje tylko 1 wynik. Z plikiem hosts zwraca alises w pasującej linii (czyli po pierwszym wpisie, podstawowej nazwie hosta).
Krótko mówiąc, prawdopodobną przyczyną problemu jest brak wpisu /etc/hosts
zawierającego nazwę hosta ( uname -n
).
Przykłady
Jeśli Twoja nazwa węzła to „foobar”, a masz wpis w następujący /etc/hosts
sposób:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Otrzymasz następujące wyniki polecenia:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost