Aby ustawić nazwę hosta , używaj hostnamectl
, ale tylko z nazwą hosta, tak jak poniżej:
hostnamectl set-hostname nodename
Aby ustawić plik edycji nazwy domeny (DNS)/etc/hosts
i upewnić się, że:
- Jest to linia
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
tam
- NIE ma innych linii z
<some IP> <hostname>
, i obejmuje to linie z adresami 127.0.0.1
i ::1
(IPv6).
Zauważ, że jeśli nie używasz NIS, (none)
jest to poprawne wyjście podczas uruchamiania domainname
polecenia.
Aby sprawdzić, czy nazwa domeny DNS jest ustawiona poprawnie, użyj dnsdomainname
polecenia i sprawdź dane wyjściowe hostname
vs hostname -f
(FQDN).
NIS vs. domena DNS
Ten problem wprawił mnie w zakłopotanie, kiedy po raz pierwszy go spotkałem. Wygląda na to, że domainname
polecenie wyprzedza popularność Internetu. Zamiast nazwy domeny DNS wyświetla lub ustawia systemową nazwę NIS (Network Information Service), czyli YP (Yellow Pages) (grupę komputerów, które mają usługi świadczone przez główny serwer NIS). To polecenie po prostu wyświetla nazwę zwróconą przez getdomainname(2)
standardową funkcję biblioteki. ( nisdomainname
i ypdomainname
są alternatywnymi nazwami dla tego polecenia).
Wyświetl nazwę domeny FQDN lub DNS
Aby sprawdzić nazwę domeny DNS (Internet), należy uruchomić dnsdomainname
polecenie lub hostname
z -d, --domain
opcjami. (Pamiętaj, że dnsdomainname
polecenia nie można użyć do ustawienia nazwy domeny DNS - służy tylko do jej wyświetlenia).
Aby wyświetlić FQDN (w pełni kwalifikowaną nazwę domeny) systemu, uruchom hostname
z -f, --fqdn, --long
opcjami (podobnie, tego polecenia nie można użyć do ustawienia części nazwy domeny).
Powyższe polecenia używają systemu rozpoznawania nazw (zaimplementowanego przez gethostbyname(3)
funkcję ze standardowej biblioteki, określonej przez POSIX) do określenia nazwy domeny DNS i nazwy FQDN.
Rozdzielczość nazw
W nowoczesnych systemach operacyjnych, takich jak RHEL 7, hosts
wpis /etc/nsswitch.conf
służy do rozpoznawania nazw hostów. W komputerze CentOS 7 ta linia jest skonfigurowana jako (domyślnie dla CentOS 7):
hosts: files dns
Oznacza to, że gdy funkcje resolvera wyszukują nazwy hostów lub adresy IP, najpierw sprawdzają wpis w /etc/hosts
pliku, a następnie próbują serwerów DNS wymienionych w /etc/resolv.conf
.
Podczas uruchamiania w hostname -f
celu uzyskania nazwy FQDN hosta funkcje rozpoznawania nazw próbują uzyskać nazwę FQDN dla nazwy hosta systemu. Jeśli hosta nie ma na liście w /etc/hosts
pliku lub przez odpowiedni serwer DNS, próba kończy się niepowodzeniem i hostname
zgłasza to Name or service not known
.
Po hostname -d
uruchomieniu w celu uzyskania nazwy domeny wykonuje się te same operacje, a część nazwy domeny określa się, usuwając część nazwy hosta i pierwszą kropkę z nazwy FQDN.
Skonfiguruj nazwę domeny
1. Zaktualizuj odpowiedni serwer nazw DNS
W moim przypadku dodałem już wpis dla mojej nowej maszyny CentOS 7 na serwerze DNS dla mojej lokalnej sieci LAN, więc gdy nazwa FQDN nie została znaleziona w /etc/hosts
pliku, gdy działałem hostname
z opcją -d
lub -f
, lokalne usługi DNS były w stanie w pełni rozwiąż nazwę FQDN mojej nowej nazwy hosta.
2. Użyj /etc/hosts
pliku
Jeśli serwer DNS nie został skonfigurowany, w /etc/hosts
pliku można podać w pełni kwalifikowaną nazwę domeny . Najczęstszym sposobem na to jest określenie podstawowego adresu IP systemu, a następnie jego FQDN i krótkiej nazwy hosta. Na przykład,
172.22.0.9 nodename.domainname nodename
Fragment hostname
strony podręcznika man
Nie możesz zmienić nazwy FQDN za pomocą hostname
lub dnsdomainname
.
Zalecaną metodą ustawiania nazwy FQDN jest ustawienie nazwy hosta jako aliasu dla w pełni kwalifikowanej nazwy za pomocą /etc/hosts,
DNS lub NIS. Na przykład, jeśli nazwa hosta to „ursula”, może istnieć wiersz, w /etc/hosts
którym brzmi:
27.0.1.1 ursula.example.com ursula
Technicznie: FQDN to nazwa zwracana przez getaddrinfo (3) dla nazwy hosta zwróconej przez gethostname (2). Nazwa domeny DNS to część po pierwszej kropce.
Dlatego zależy od konfiguracji resolwera (zwykle w
/etc/host.conf
), w jaki sposób można go zmienić. Zwykle plik hosts jest analizowany przed DNS lub NIS, więc najczęściej zmienia się nazwę FQDN
/etc/hosts
.
hostname -f
polecenie nie działa w moim CentOS vm./etc/hostname
i wynikgrep ^hosts: /etc/nsswitch.conf
? Nie wiem zbyt wiele o Network Manager ale zauważyłem również, że mój/etc/NetworkManager/NetworkManager.conf
zawiera linię w swoim[keyfile]
dziale:hostname=<nodename>
.hostnamectl set-hostname nodename.domainname
czy nie ustawić nazwę domeny DNS (i nie jest to, że ustawia nazwę domeny NIS albo).Na Centos7 użycie nmtui do ustawienia nazwy hosta i podanie formatu nodename.domainname / FQDN daje spójne wyniki. nazwa hosta [d / f / s] zapewnia prawidłowe oczekiwane wyniki. Nie jest przechowywany w /etc/resolv.conf OR / etc / hosts. Ale nazwa FQDN jest zapisywana w / etc / hostname jako pojedyncza pozycja.
źródło
Dla mnie plik / etc / hostname zawierał FQDN zamiast nazwy hosta (np. Nazwa hosta zamiast nazwa hosta.przyklad.com). Po usunięciu domeny z nazwy hosta w / etc / hostname polecenie „hostname -f” działało normalnie.
Myślę, że zostało to wprowadzone podczas instalacji maszyny Wirtualnej CentOS 7. Powinienem był wpisać tylko nazwę hosta, a nie pełną nazwę domeny.
źródło