Включить имя домена или нет в / etc / hosts?


15

Я настраиваю кластер VMWare узлов CentOS. Рекомендуется ли указывать доменное имя после машины? Каковы потенциальные проблемы, если оставить это вне? Домен усложняет настройку или упрощает его?

Например, если мой узел в 192.168.1.93, я должен изменить /etc/hostsс

127.0.0.1 localhost.localdomain localhost

в

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1

или

127.0.0.1 localhost
192.168.1.93 computenode1

или

#127.0.0.1 localhost
192.168.1.93 computenode1

или

192.168.1.93 localhost
192.168.1.93 computenode1

Ответы:


24

Ввод имени домена не /etc/hostsявляется обязательным, и вы можете запустить систему без каких-либо вредных последствий.

Единственный недостаток - исключить полное имя хоста системы. Например, hostname -f.

Способ определения полного имени хоста работает:

  1. Сначала он получает имя хоста или «короткое имя». Это вывод uname -nили hostname.
  2. Затем он получает IP-адрес для этого имени хоста, обращаясь к нему /etc/hosts(или к тому, что у вас есть /etc/resolv.conf, и обращаясь к последним источникам, если они не найдены /etc/hosts).
  3. Получив IP-адрес, он выполняет обратный поиск, снова консультируясь /etc/hosts.
  4. Как только в него будет введена запись /etc/hosts, первая запись будет использоваться как полное имя хоста.

Короче говоря, если вы хотите, чтобы работало полное имя хоста, вы должны сделать либо:

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost

или

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname

1
Я не учел этот момент. Полное имя хоста бесполезно для настольного ПК и может быть проблематично для ноутбука (поскольку ноутбук может быть подключен к разным сетям), но полезно для сервера. Например, Apache2 жалуется, когда не может определить свое полное доменное имя.
lgeorget

@lgeorget Вы также можете просто использовать, libnss-myhostnameкоторый позаботится о разрешении вашего полного доменного имени, но не нуждается в записи/etc/hsots
Ульрих Дангел

Конфигурация выше , может вызвать проблемы, увидеть эту дискуссию о текущей практике Debian о создании hostsфайла, и это один на использовании (или ее отсутствие) в localhost.localdomainзаписи.
Joó Ádám

1
sudoтакже жалуется, если имя хоста отсутствует в /etc/hosts:sudo: unable to resolve host <hostname>
x-yuri

3

Пока ваш хост согласен с вашим доменным именем, указание его или нет в нем /etc/hostsничего не изменит. Другая практика - указывать его в качестве domainпараметра в /etc/resolv.conf. Не указание этого может упростить вашу жизнь, если однажды ваш сетевой администратор изменит его. Указание этого ничего не меняет, насколько я знаю.

Вы обязательно должны уйти 127.0.0.1 localhostили 127.0.0.1 localhost localhost.localdomainвойти /etc/hosts. Некоторые приложения могут начать действительно странное поведение - localhostпривязка к чему-либо, кроме вашего адреса обратной связи, потому что это действительно очень неожиданный параметр.


2

Вы должны указать полное доменное имя в первой позиции после IP-адреса.

Как мы читаем в man 5 hosts:

Для каждого хоста должна присутствовать отдельная строка со следующей информацией:

IP_адрес canonical_hostname [псевдонимы ...]

Если не следовать правилу, то некоторые программы могут сломаться. Например, система управления конфигурацией Puppet может начать менять имя хоста взад-вперед при каждом запуске только потому, что вы не указали часть домена или потому, что вы указали псевдоним без домена в строке перед полным доменным именем.


0

Я не уверен, что это действительно «необязательно» (как указал Патрик выше). Я только что наконец-то разыскал проблему с обращением разрешений nfs никому: никому. Похоже, что для правильной работы разрешений с монтированием nfs (с использованием idmapd) доменное имя сервера должно точно соответствовать доменному имени клиента. Из некоторых документов, которые я нашел, - hostname -fминус фактическое имя хоста должно быть одинаковым для клиента и сервера, ИЛИ вы должны указать доменное имя для клиента /etc/idmapd.conf, что означает каждого клиента.

Есть ли официальное правило о том, где указывать доменное имя? domainnameКоманда не кажется , чтобы поднять его из / и т.д. / хостов .. поэтому ввод в / и т.д. / хосты беспокоит меня, так как это означает , что он хранится в нескольких местах в файловой системе ..

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.