Почему мое имя хоста отображается с адресом 127.0.1.1, а не 127.0.0.1 в /etc/hosts?
Это может быть немного нудистским вопросом, но я посмотрел на /etc/hosts на моей новой установке Xubuntu и увидел это:
127.0.0.1 localhost
127.0.1.1 myhostname
В большинстве 'nixes, которые я использовал, вторая строка опущена, и если я хочу добавить свое имя хоста в файл hosts, я просто сделаю это:
127.0.0.1 localhost myhostname
Есть ли разница между этими двумя файлами в каком-либо практическом смысле?
5 ответов
Между этими двумя нет большой разницы; 127/8
(например: 127.0.0.0
=> 127.255.255.255
) все связаны с петлевым интерфейсом.
Причина этого описана в руководстве по Debian в гл. 5 Настройка сети - 5.1.1. Разрешение имени хоста.
В конечном счете, это обходной путь ошибки; Оригинальный отчет 316099.
Подводя итог информации, связанной с:
- Это (спорный) полезно иметь запись в вашем
/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.
Мне самому было любопытно, и мне не понравился любой другой ответ, потому что они, казалось, не отвечали тому, что я искал по крайней мере.
Ответ: Оглядываясь назад на этот документ, кажется, что Томас заявляет, что дает ему еще один выделенный ip для обратной петли, что делает его каноническим.
Оба указывают на вашу петлю. Использование следующего 127.0.1.1 - это фактический IP-адрес в обратной петле, тогда как 127.0.0.1 - это либо само устройство, либо другой ip в обратной петле. Оба попадают в одну подсеть, представляющую петлю, но разделяются ip. Они эквивалентны днс, но разделены из-за выделенного 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
Я прочитал несколько ответов и, честно говоря, немного запутался.
Сначала я пытался понять, что такое каноническое имя хоста здесь.
Я могу сказать, что @cmroanirgo прав, говоря, что на моем ноутбуке с Ubuntu, вызывая
hostname --fqdn
с участием
/etc/hosts
настроен так
127.0.0.1 localhost
127.0.1.1 laptop
возвращается
laptop
, тогда как изменение файла следующим образом
127.0.0.1 localhost laptop
возвращается
localhost
.
Как это может повлиять, я понятия не имею, кроме того факта, что если у вас есть программное обеспечение, которое привязано к имени хоста, и вам нужно общаться с ним внутри вашего компьютера, не ожидайте, что сможете использовать имя хоста "localhost" для выполнения работы в этой настройке, поскольку они в конечном итоге разрешают два разных отдельных адреса.
Античный вопрос, но добавлен другой ответ. Если вы используете строку:
127.0.1.1 my_fqdn my_short_name
например
127.0.1.1 server.domain.com server
Apache (по крайней мере, в Ubuntu) подберет ваше правильное имя хоста без необходимости явно вводить его в конфигурации Apache. Вероятно, это похоже на комментарий в ответе выше.