Чому моє ім'я хоста відображається з адресою 127.0.1.1, а не 127.0.0.1 в / etc / hosts?


204

Це може бути трохи нобішним питанням, але я переглядав / etc / hosts на моїй новій установці Xubuntu і бачив це:

127.0.0.1 localhost
127.0.1.1 myhostname

У більшості «nixes», які я використовував, другий рядок опущено, і якщо я хочу додати своє ім’я хосту до файлу хостів, я б просто зробив це:

127.0.0.1 localhost myhostname

Чи є різниця між цими двома файлами в будь-якому практичному сенсі?


Цікаво, чи можу я просто видалити другий рядок, чи якийсь процес в debian / ubuntu відновить рядок і додасть його назад?
simgineer

Відповіді:


159

Не існує великої різниці між ними; 127/8(наприклад: 127.0.0.0=> 127.255.255.255) всі пов'язані з інтерфейсом зворотного зв'язку.

Причина, яка задокументована в посібнику Debian в гл. 5 Налаштування мережі - 5.1.1. Дозвіл імені хоста .

Зрештою, це помилка; оригінальний звіт - 316099 .


5
Фактична причина: "Асоціація імені хоста системи з останньою спричинила небажаний ефект зробити" localhost.localdomain "канонічним ім'ям хоста, пов'язаним із іменем системи хоста. Тобто," ім'я хоста --fqdn "повернуло" localhost.localdomain "."
cmroanirgo

Я насправді простежив це до цього doc list.debian.org/debian-boot/2005/06/msg00938.html, і, схоже, це тому, що Томас відчував необхідність використовувати 1,1 замість 0,1, що є рівнозначним, виправте мене якщо я помиляюся, але це означає, що ця відповідь насправді лише сухарі?
Брайан Томас

@BrianThomas це повідомлення підказує, чому вони не рівноцінні. Вони хотіли localhostі myhostnameбути різними - інакше одне було б псевдонімом іншого. Зауважте, це не працює в IPv6, де є лише одна адреса зворотного зв'язку. Цього можна уникнути, використовуючи модуль NSS, як зазначено в потоці, оскільки він може бути більш гнучким, ніж / etc / hosts та повертати різні канонічні імена, незважаючи на те, що вони мають однакову IP-адресу. Я це знаю, оскільки моя система налаштована за допомогою такого модуля NSS .
sourcejedi

46

Для підведення підсумків зв'язаної інформації:

  • Буде (доцільно) корисно ввести запис у /etc/hostsперекладі повністю кваліфікованого доменного імені машини на його постійну IP-адресу.
  • debian-installer, а точніше, його netcfgкомпонент, який наразі (щонайменше, до березня 2013 року) створює цей запис.
  • Якщо машина, як відомо, не має постійної IP-адреси, інсталятор debian все ще хоче, щоб він мав такий запис.
  • Адреса 127.0.1.1використовує інтерфейс зворотного зв’язку , на який відповідає ваша власна машина, так само, 127.0.0.1але це окрема запис, в /etc/hostsякій можна розглядати окремо від, 127.0.0.1якщо це необхідно.

Томас Гуд пояснює додавання цього запису наступним чином:

[Це] забезпечить, що якщо ім'я хоста UNIX буде вирішено, воно завжди буде власним канонічним іменем хоста

але:

У перспективі ім'я хоста UNIX взагалі не повинно вводитись у / etc / hosts.


.. і так ...? я повинен користувач 127.0.0.1 для мого fdqn? або 127.0.1.1? чи статичний lan ip?
realtebo

1
@realtebo: 1. Це корисно, і тим самим його додає інсталятор. 2. Тут немає "обов’язку"; і це актуально лише тоді, коли у Вашого FQDN немає постійної адреси.
einpoklum

9

Мені було цікаво, і мені не сподобалася будь-яка інша відповідь, тому що вони, здається, не відповідали на те, що я шукав якнайменше.

Відповідь: Озирнувшись на цей документ, він майже виглядає так, ніби Томас заявив, що надає йому ще один виділений ip на циклі, що дозволяє йому бути канонічним.

Обидва вказують на вашу петлю. Використання наступних 127.0.1.1 - це фактична IP-адреса для зворотного циклу, тоді як 127.0.0.1 - це або сам пристрій, або інший ip на циклі. Обидва опиняються в одній підмережі, що представляє петлю, але розділені ip. Вони еквівалентні dns мудрі, але відокремлені через те, що виділили ip.

Справа в тому, що ви можете мати всі свої записи в одному рядку, як цей

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

Якщо ваше ім’я хоста локальне, тобто немає глобальної записи DNS в Інтернеті, відображеної на фактичному ip, то в цьому випадку Томас сказав, що НЕОБХІДНО мати другий рядок входу, як цей, щоб присвятити його там (канонічному).

127.0.0.1 localhost localhost.localdomain
127.0.1.1 myfakednsname

чесно кажучи, після того, як я нарешті склав це так, що мав сенс для мене, я бачу, що це майже те, що намагався пояснити einpoklum.
Брайан Томас

Добре негативне голосування, не знаю чому. Я все ще вважаю, що це найкраща відповідь, або я б не сказав, після посадки тут. оригінальна відповідь допомогла, але не захопила всі деталі. Я б пішов з цим.
Брайан Томас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.