Формат / etc / hosts в Linux (отличается от Windows?)

22

Ниже этого вопроса вставлен образец /etc/hostsфайла с Linux (CentOS) и Windows-машины. Файл Linux содержит две записи с вкладками после IP-адреса (то есть localhost.localdomain localhost), а в Windows - только одну. Если я хочу отредактировать файл hosts в Windows, чтобы вместо localhost было указано имя машины (etest), я просто заменяю слово localhost именем машины, которое мне нужно. Машина не должна быть частью домена.

В Linux-машине две записи localhost.localdomainи, localhostкажется, указывают на то, что мне понадобится эта машина, чтобы стать частью домена. Это правда?

Могу ли я просто отредактировать обе записи, чтобы etestони выглядели так:

127.0.0.1       etest etest

или требуется, чтобы я заменил одну запись доменным именем?

Кроме того, пожалуйста, дайте мне знать, для чего предназначена вторая строка /etc/hostsфайла на компьютере с Linux.

::1     localhost6.localdomain6 localhost6

hosts файл на компьютере с Linux:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6

hosts файл на машине с Windows:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
Томас
источник
Недавно я опубликовал похожий вопрос, но он не вызвал особого интереса. unix.stackexchange.com/questions/11844/etc-hosts-for-debian . Этот лучше написан, хотя.
Фахим Митха

Ответы:

13

Вы всегда хотите, чтобы адрес 127.0.0.1 сначала разрешался на localhost. Если есть домен, вы также можете использовать его, но затем убедитесь, что localhost указан вторым. Если вы хотите добавить псевдонимы для вашей машины, которые будут искать адрес обратной связи, вы можете добавить их в качестве разделенных пробелами значений в этой строке. Указывать домен здесь необязательно, но не удаляйте «localhost» из опций.

Калеб
источник
5
Также «:: 1» является ipv6-эквивалентом 127.0.0.1 (для ipv4).
XQYZ
Означает ли это, что иметь такую ​​строку вместо той, которую я написал с моим вопросом, было бы мудрее? Я включил разделенный пробелами псевдоним (проверьте мое имя хоста), оставив localhost.localdomain localhost нетронутым. Если нет, опубликуйте пример того, что вы предлагаете в качестве идеальной записи, чтобы включить имя хоста моего компьютера и иметь записи localhost в файле hosts.
Томас
1
127.0.0.1 localhost.localdomain localhost etest
Томас
1
@ Томас: Ваш пример такой, каким он должен быть. Пойдите с этим, и если вам нужно добавить больше псевдонимов для тестирования (например, с именем виртуальных хостов в apache), вы можете продолжать добавлять их в строку.
Калеб
22

Формат в /etc/hostsLinux и Windows одинаков:

IP address        hostname [hostalias]...

где скобки - это обычный способ указать, что что-то является необязательным (на самом деле не вводите их), а точки ( ...) означают, что их может быть несколько.

Вам не нужно делать свой хост частью домена. Попробуйте и посмотрите. Но было бы неплохо использовать, .localdomainесли у вас нет реального доменного имени. Это может сделать разрешение имени хоста немного быстрее благодаря ndotsопции в /etc/resolv.conf.

Обратите внимание, что в этом смысле домен означает домен DNS (например, google.comили stackexchange.com), а не домен Windows или что-либо подобное.

Строка, начинающаяся с, ::1предназначена для IPv6 . ::1как 127.0.0.1при новой схеме адресации. Запустите, ifconfig loи вы должны увидеть, что у него есть два адреса. Обратите внимание на запись, начинающуюся с inet6.

$ ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
...

Смотрите man-страницу hosts (5) для более подробной информации.

Mikel
источник
(...) означает, что может быть больше одного: дополнения разделены пробелами или запятыми или и тем, и другим?
Парень
1
пространства. Я полагаю, чтобы быть более правильным, это hostname [hostalias[,hostalias]*].
Микель
6

Я не могу говорить о том, чем Windows может отличаться от Linux, но формат определения локального компьютера влияет на результаты, которые вы получите с помощью команды 'hostname'.

Формат, который я нахожу, работает наиболее последовательно хорошо это:

127.0.0.1 etest.mydomain.com etest localhost

Важная вещь, которую я обнаружил, - сначала иметь полное доменное имя, а затем псевдонимы в любом порядке.

Если вы поэкспериментируете с перестановкой имен после IP-адреса, а затем с помощью команд «hostname -s» (короткое имя) и «hostname -f» (полное доменное имя или полное доменное имя), вы поймете, что я имею в виду. Это должно выглядеть примерно так:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

«hostname» само по себе должно возвращать любое имя, которое вы ввели для хоста в /etc/conf.d/hostname или / etc / hostname (расположение файла зависит от дистрибутива, но должно быть где-то в / etc).

Если вы измените порядок имен, вы можете обнаружить, что «hostname -f» дает вам ответы типа «localhost» или «hostname: system error». Единственное, что я нашел, что работает правильно, это поставить FQDN первым.

Я всегда устанавливаю строку локального адреса IPv6 (:: 1) одинаково, т.е.

::1 etest.mydomain.com etest localhost

Я знаю, что в некоторых дистрибутивах имя IPv6 устанавливается на что-то вроде ip6-localhost. Я еще не использую IPv6, поэтому не могу прокомментировать, какие будут лучшие настройки для этой линии. Я могу просто сказать, что в сети IPv4 работает обе строки с одинаковыми именами.

Анджело Бабудро
источник
0

Сохранить файл Slaves hosts как

127.0.0.1 localhost

Сохранить главный файл хоста как

<private ip> master
<private ip> slave1
<private ip> slave2

100% работает

Puneet
источник
Пожалуйста, уточните свой ответ и используйте правильное форматирование. Вам не нужно указывать свое имя в ответе.
Ламберт