W ciągu kilku lat korzystałem z Linuksa jako mojego głównego systemu, zwłaszcza Fedory, zawsze widziałem, że moja nazwa hosta jest ustawiona na „localhost”, z wyjątkiem przypadków, gdy łączę się z niektórymi sieciami i staje się moim adresem IP. Dzisiaj jednak doświadczyłem następującego zachowania, z którym trudno mi zrozumieć.
Instaluję instalację Ubuntu na innej partycji mojego laptopa, ustawiając nazwę komputera / nazwę hosta podczas instalacji Ubuntu. Jednak po ponownym uruchomieniu w Fedorze Fedora zaktualizowała moją nazwę hosta do nazwy, którą ustawiłem w instalacji Ubuntu.
Zawsze myślałem, że nazwa hosta została skonfigurowana i zapisana na partycji instalacji dystrybucji i rzeczywiście zawartość pliku / etc / hostname w Fedorze nadal brzmi „localhost.localdomain”, ale uruchomienie hostname
polecenia pokazuje nową nazwę hosta. Obie instalacje współużytkują partycję rozruchową efi, ale poza tym są dyskretne. Zastanawiam się, skąd i dlaczego instalacja Fedory czyta nową nazwę hosta?
hosts:
w /etc/nsswitch.conf?hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
Odpowiedzi:
hostname
Program wykonuje uname syscall, jak widać z systemem:Ze strony man uname syscall mówi, że syscall pobiera z jądra następującą strukturę:
Więc nazwa domeny pochodzi od systemu NIS / YP, jeśli uważamy ten komentarz. Jest więc bardziej niż prawdopodobne, że w Twojej sieci może znajdować się usługa NIS / YP, która pobiera ci nazwę ustawioną przez system operacyjny Ubuntu.
źródło
hostname(1)
stronę podręcznika, która wyjaśnia, w jaki sposób nazwa hosta jest ustawiana i zwracana. Pomimo podobieństwa nazwy, nazwa domeny NIS / YP nie ma nic wspólnego z nazwą domeny FQDN / DNS zwracaną przez przelicznik. Jeśli nie skonfigurowałeś NIS / YP, nazwa domeny NIS / YP zostanie rozbrojona.Istnieją dwie niezależne (!) Koncepcje nazwy hosta w systemie Linux.
Jest to, co jądro uważa za nazwę lokalnego hosta (obsługiwaną przez wywołania systemowe gethostname / uname i sethostname) niezależnie od łączności sieciowej - mechanizmy te nadal istniałyby, gdybyś zbudował jądro bez możliwości sieci TCP / IP.
Istnieje co najmniej jedna nazwa hosta, która jest faktycznie podłączona do TCP / IP (lub innego stosu sieciowego - nie wszystkie sieci na świecie to adresy IP!), Które host ma, i są one obsługiwane w przestrzeni użytkownika przez funkcje biblioteki tłumaczącej (część libc), który określi taką nazwę, interpretując źródła (lokalny plik / etc / hosts, DNS, NIS ....) zgodnie z regułami podanymi w odpowiednich plikach konfiguracyjnych (/etc/nsswitch.conf, / etc /host.conf itp ...).
źródło
Prawdopodobnie podczas instalacji Ubuntu łączył się z Internetem przez router domowy. W tym celu zgłosił routerowi nazwę hosta i uzyskał tymczasowy lokalny adres IP.
Kiedy teraz uruchomisz ponownie Fedorę, połączy się ona z tym samym routerem, aby uzyskać adres IP, ale stara dzierżawa utworzona dla Ubuntu jest nadal ważna. Ponieważ jest to ta sama maszyna z tą samą kartą sieciową i tym samym sprzętowym adresem MAC, ponownie wykorzysta tę samą dzierżawę.
Domyślam się, że router wysyła nazwę hosta, na którym zarejestrowano dzierżawę adresu IP, i Fedora to odbiera.
Niestety nie mam dowodów ani cytatów na poparcie mojej odpowiedzi, mogę po prostu porozmawiać z osobistym doświadczeniem instalowania Ubuntu w trybie podwójnego rozruchu w systemie Windows. W tym czasie Ubuntu odmówił ustawienia tej samej nazwy hosta podczas instalacji, której użyłem w systemie Windows, ponieważ twierdził, że nazwa była już obecna w sieci. Prawdopodobnie dzieje się tutaj coś podobnego.
Aby sprawdzić, czy to, co myślę, dotyczy również twojej sytuacji, spróbuj odwołać dzierżawę adresu IP w interfejsie konfiguracyjnym routera, a następnie zrestartuj Fedorę. Jeśli nie wymaga już nazwy hosta Ubuntu, powinienem mieć rację.
źródło