Komenda linux nazwa_hosta -f nie działa na RHEL

13

Korzystam z RHEL 5.7, a hostnamepolecenie podaje mi poprawną nazwę hosta.
Ale hostname -si hostname -fpowrót: Unknown host. Dlaczego?

redoc
źródło
Co za dystrybucja? W moim systemie Ubuntu 12.04 wszystkie 3 działają.
Anthon
Jakiego systemu operacyjnego używasz? Jeśli Linux, która dystrybucja? Jaka jest zawartość /etc/hostname?
terdon
1
hostname -fużywa DNS, czy masz odwrotny wpis DNS dla swojego adresu IP?
Barmar
@terdon Używam RHEL5 (Red Hat Enterprise Linux Server wersja 5.7 (tikanga)) i nie ma takiego pliku (/ etc / hostname)
redoc
@Barmar Nie mam skonfigurowanych dns na moim hoście. Dodałem adres ip i fqdn do mojego pliku hosts (/ etc / hosts), ten błąd jest wynikiem nie skonfigurowania dns?
redoc

Odpowiedzi:

21

(skopiowane z jednej z moich odpowiedzi na SF )

hostnameKomenda zwraca wyniki z DNS i /etc/hosts.

hostnamejest równoważne uname -ni jest faktyczną „nazwą hosta” lub „ nazwą węzła ” skrzynki.
Wszystkie pozostałe hostnameargumenty używają tej nazwy węzła do wyszukiwania informacji.

Więc zanim przejdę dalej, powinienem wyjaśnić /etc/hostsformat 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.conftej metodzie będą się różnić.

  • Jeśli masz skonfigurowaną obsługę dns, będzie korzystał ze skonfigurowanych domen wyszukiwania, /etc/resolv.confdopóki nie otrzyma adresu IP z DNS.
  • Jeśli skonfigurowałeś go do używania plików, zajrzy /etc/hostsdo 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 -abę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/hostszawierającego nazwę hosta ( uname -n).


Przykłady
Jeśli Twoja nazwa węzła to „foobar”, a masz wpis w następujący /etc/hostssposó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
Patrick
źródło
To wyjaśnienie, w jaki sposób uzyskuje wartość, jest świetne! Miałem swoją nazwę FQDN na końcu linii 127.0.0.1, która miała jako podstawową nazwę hosta localhost. Właśnie je usunąłem i pozostawiłem nazwę FQDN tylko w wierszu, który ma prawdziwy adres IP, i naprawiłem mój problem z nazwą hosta -f zwracającą localhost.
qwertzguy