Dlaczego moja nazwa hosta pojawia się z adresem 127.0.1.1 zamiast 127.0.0.1 w / etc / hosts?

204

To może być trochę noobish pytanie, ale przyjrzałem się / etc / hosts na mojej nowej instalacji Xubuntu i zobaczyłem to:

127.0.0.1 localhost
127.0.1.1 myhostname

W większości nixów, których użyłem, drugi wiersz jest pomijany, a jeśli chcę dodać moją nazwę hosta do pliku hosts, po prostu zrobiłbym to:

127.0.0.1 localhost myhostname

Czy istnieje jakaś różnica między tymi dwoma plikami w jakimś sensie praktycznym?

Tomek
źródło
Zastanawiam się, czy mogę po prostu usunąć drugą linię lub czy jakiś proces w debian / ubuntu zregeneruje linię i doda ją z powrotem?
simgineer

Odpowiedzi:

159

Nie ma między nimi dużej różnicy; 127/8(np .: 127.0.0.0=> 127.255.255.255) są powiązane z interfejsem sprzężenia zwrotnego.

Powód, dla którego jest to udokumentowane w podręczniku Debiana w rozdz. 5 Konfiguracja sieci - 5.1.1. Rozpoznawanie nazw hostów .

Ostatecznie jest to obejście błędu; oryginalny raport to 316099 .

Daniel Pittman
źródło
5
Rzeczywisty powód: „Powiązanie systemowej nazwy hosta z tą ostatnią miało niepożądany efekt, czyniąc„ localhost.localdomain ”kanoniczną nazwą hosta skojarzoną z systemową nazwą hosta. To znaczy,„ nazwa hosta - fqdn ”zwróciła„ localhost.localdomain ”.”
cmroanirgo
Właściwie prześledziłem go z powrotem do tego dokumentu list.debian.org/debian-boot/2005/06/msg00938.html i wygląda na to, że to dlatego, że Thomas czuł potrzebę użycia 1.1 zamiast 0.1, które są równoważne, popraw mnie jeśli się mylę, ale to oznacza, że ​​ta odpowiedź jest naprawdę tylko bułką tartą?
Brian Thomas
@BrianThomas ta wiadomość sugeruje, dlaczego nie są równoważne. Chcieli localhosti myhostnamebyli odrębni - w przeciwnym razie jeden byłby pseudonimem drugiego. Uwaga: to nie działa w IPv6, gdzie jest tylko jeden adres sprzężenia zwrotnego. Można tego uniknąć za pomocą modułu NSS, jak wspomniano w wątku, ponieważ może on być bardziej elastyczny niż / etc / hosts i zwracać różne nazwy kanoniczne, mimo że mają ten sam adres IP. Wiem to, ponieważ mój system jest skonfigurowany przy użyciu takiego modułu NSS .
sourcejedi
46

Podsumowując powiązane informacje:

  • Przydaje się (wątpliwie) wpis w /etc/hoststłumaczeniu w pełni kwalifikowanej nazwy domeny urządzenia na stały adres IP.
  • debian-installer, a ściślej jego netcfgkomponent, obecnie (przynajmniej do marca 2013 r.) tworzy ten wpis.
  • Jeśli komputer nie ma stałego adresu IP, instalator debian nadal chce, aby miał taki wpis.
  • Adres 127.0.1.1korzysta z interfejsu sprzężenia zwrotnego , na który odpowiada Twoja własna maszyna, podobnie jak, 127.0.0.1ale jest odrębnym wpisem, w /etc/hostsktórym można rozpatrywać osobno, 127.0.0.1jeśli jest to konieczne.

Thomas Hood wyjaśnia dodanie tego wpisu w następujący sposób:

[To] zapewni, że jeśli nazwa hosta UNIX zostanie rozwiązana, to zawsze będzie ona własną kanoniczną nazwą hosta

ale:

Na dłuższą metę nazwa hosta UNIX w ogóle nie powinna być umieszczana w / etc / hosts.

einpoklum
źródło
.. a więc... ? muszę używać 127.0.0.1 dla mojego fdqn? lub 127.0.1.1? czy statyczny lan ip?
realtebo
1
@realtebo: 1. Jest użyteczny, dlatego został dodany przez instalatora. 2. Nie ma tutaj „musi”; i ma to znaczenie tylko wtedy, gdy Twoja nazwa FQDN nie ma stałego adresu.
einpoklum
9

Byłem ciekawy i nie podobała mi się żadna inna odpowiedź, ponieważ nie odpowiadały na to, czego szukałem.

Odpowiedź: Patrząc wstecz na ten dokument , wygląda to prawie tak, jakby Thomas twierdził, że daje mu kolejny dedykowany adres IP w pętli zwrotnej, co pozwala mu być kanonicznym.

Oba wskazują na twoją pętlę zwrotną. Korzystanie z następującego adresu 127.0.1.1 to rzeczywisty adres IP w pętli zwrotnej, podczas gdy 127.0.0.1 to albo samo urządzenie, albo inny adres IP w pętli zwrotnej. Oba kończą w tej samej podsieci, reprezentując pętlę zwrotną, ale są oddzielone przez ip. Są one równoważne pod względem dns, ale oddzielone z powodu posiadania dedykowanego adresu IP.

Chodzi o to, że możesz mieć wszystkie wpisy w jednym wierszu w ten sposób

127.0.0.1 localhost localhost.domain www.myfakednsname.com myakednsname.com 

Jeśli twoja nazwa hosta jest lokalna, co oznacza, że ​​globalny internetowy wpis DNS nie jest zmapowany na rzeczywisty internetowy ip, to w tym przypadku Thomas powiedział, że POTRZEBUJESZ mieć drugi wiersz wpisu, jak to, aby tam go dedykować (kanoniczny).

127.0.0.1 localhost localhost.localdomain
127.0.1.1 myfakednsname
Brian Thomas
źródło
szczerze mówiąc, po tym, jak w końcu skomponowałem to w sposób, który miał dla mnie sens, widzę, że tak właśnie einpoklum próbował wyjaśnić, jak to wygląda z perspektywy czasu.
Brian Thomas
OK negatywne głosowanie, nie wiem dlaczego. Nadal uważam, że TO NAJLEPSZA odpowiedź, inaczej nie powiedziałbym jej po wylądowaniu tutaj. oryginalna odpowiedź pomogła, ale nie uchwyciła wszystkich szczegółów. Poszedłbym z tym.
Brian Thomas,