Какой IP должен быть hostname machine.example.com
решить в /etc/hosts
?
Все зависит от ваших потребностей!
В обычном случае я бы предложил использовать IP-адрес, который вызывает наименьшие усилия. Например:
127.0.0.1 заставит трафик перемещаться только в стеке TCP.
Если бы вы указали свой адрес в локальной сети, потенциально трафик мог бы быть отправлен из вашего ник, а затем возвращен вашим маршрутизатором / коммутатором.
Если вы введете общедоступный IP-адрес, трафик потенциально может покинуть ваш ник через ваш маршрутизатор, а затем вернуться от вашего интернет-провайдера обратно на ваш маршрутизатор, а затем обратно в ваш ник.
На самом деле различные части набора должны быть достаточно умными, чтобы не зайти так далеко, но потенциально они могут.
С другой стороны, для машины может быть выгодно иметь возможность связываться с самим собой, как если бы это был общедоступный сервер, но, по моему опыту, это только для целей разработки, где, например, базовый стек LAMP для веб-разработчика имеет БД на та же машина, что и веб-сервер, но в производственном случае она будет отдельной. Было бы неплохо убедиться, что все работает больше как производственный случай, заставляя его разговаривать по IP-адресам, отличным от localhost ...
Поскольку у вашей машины есть общедоступный IP-адрес, рекомендуется указать ему имя хоста.
В целом я согласен с @BParker в том, что есть сценарии, в которых каждый из них более полезен, и что в целом создание псевдонима localhost было бы наиболее эффективным использованием ресурсов, исключающих какую-либо тестовую среду.
Однако я также хотел бы предположить, что наиболее управляемое решение - вообще не иметь этой записи и полагаться на DNS. Если вы не настроите свой DNS для выполнения специальных трюков для локальных ответов, это, как правило, даст вам глобальный маршрутизируемый адрес для машины, но это дает вам гибкость управления сетевыми службами без поиска случайных записей на каждой машине. Если у вас есть услуги, которые связаны с лучшими из machine.domain.com
или service.domain.com
имена, вы можете изменить расположение служб и перемещать машины без необходимости перепрограммировать программное обеспечение или вносить изменения в разрозненные /etc/hosts
файлы.
Раньше это писалось в верхней части файла hosts для некоторых дистрибутивов Linux:
# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
# should NEVER be named with the name of the machine. It causes problems
# for some (stupid) programs, irc and reputedly talk. :^)
IP-адреса действительно привязаны к интерфейсам, а не к машинам, поэтому согласно теории должно быть одно другое имя для каждого интерфейса - используйте частный домен или поддомен для размещения внутренних адресов.
Любой полуприличный сетевой стек будет распознавать как такой адрес, который был настроен на локальном интерфейсе, и возвращать пакеты обратно по петле до того, как они попадут в драйвер сетевого интерфейса, не говоря уже о самой сети; 127.0.0.1 вообще не должен быть быстрее. Если вы не уверены, пингуйте 127.0.0.1, затем свой локальный адрес и сравните RTT. В моей системе они оба одинаково быстры и на порядок быстрее, чем пингуют локальный шлюз.
Здравый смысл:
Если у вас есть внешний домен, что хорошего в локальном хосте или локальной сети? Никто.
Даже внутренне, если я ввожу machine.example.com, меня не интересует localhost.