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?
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:
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.
/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żneuname -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 sposobuhosts:
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:Otrzymasz następujące wyniki polecenia:
źródło