Назад | Перейти на главную страницу

Каковы правильные отношения между / etc / hosts и записями DNS A для сервера Linux?

У меня есть сервер Ubuntu. Это будет веб-сервер с URI www.example.com. У меня есть запись DNS A, указывающая www.example.com на IP-адрес сервера.

Скажем, я выбрал «троицу» в качестве имени хоста для этого сервера.

Я хочу правильно настроить записи DNS. Мне нужен обратный DNS для www.example.com, поэтому CNAME для www.example.com не кажется подходящим. Вот мой вопрос:

Считается ли лучшей практикой установить две записи DNS (которые в моем случае, вероятно, будут двумя записями A), одну для www.example.com и один для trinity.example.com, оба указывают на IP-адрес этого сервера? (Или, даже если это не считается лучшей практикой, это хорошая идея?)

Если да, то будет ли следующий файл / etc / hosts правильным?

$ cat /etc/hosts
127.0.1.1       trinity.local          trinity
99.100.101.102  trinity.example.com    trinity        www.example.com

Этот сервер является Linode, и документы Linode, похоже, подразумевают, что вышеуказанный подход является лучшим (если я их правильно читаю). Вот соответствующий раздел. Я выделил жирным шрифтом линию, которая, кажется, здесь применима.

Обновите / etc / hosts

Затем отредактируйте файл / etc / hosts, как в следующем примере, заменив «plato» выбранным именем хоста, «example.com» - доменным именем вашей системы, а «12.34.56.78» - IP-адресом вашей системы. Как и в случае с именем хоста, часть доменного имени вашего FQDN не обязательно должна иметь какое-либо отношение к веб-сайтам или другим службам, размещенным на сервере (хотя это может быть, если вы хотите). Например, вы можете разместить на своем сервере «www.something.com», но полное доменное имя системы может быть «mars.somethingelse.com».

Файл: / etc / hosts

127.0.0.1        localhost.localdomain    localhost
12.34.56.78      plato.example.com        plato

Значение, которое вы назначаете как полное доменное имя вашей системы, должно иметь запись «A» в DNS, указывающую на IP-адрес вашего Linode.. Дополнительные сведения о настройке DNS см. В нашем руководстве по настройке DNS с помощью Linode Manager.

Правильные отношения между /etc/hosts записей и DNS заключается в том, что если у вас есть рабочий DNS, / etc / hosts должен содержать только записи для localhost (указывает на 127.0.0.1 и ::1). Возиться с файлом hosts, когда у вас работает DNS, - это просто способ вызвать странное поведение и проблемы позже.1

Если вам нужен обратный DNS, обратитесь к своему интернет-провайдеру (Linode) и попросите его установить соответствующий PTR запись для вашего IP-адреса.
Здесь нет требование чтобы запись PTR соответствовала записи A (или, действительно, для любого хоста с таким именем, который вообще существовал: 69.18.136.215 заменяется на cl136-215.invision.net, у которого нет прямого адреса), поэтому вы можете установить Имя PTR для соответствия записи A, CNAME или любому допустимому имени DNS, которое вы хотите.


1Как и во всех правилах, существуют исключения. Ваш случай не похож на один из них.

Если вы поместите эти записи в /etc/hosts file ваша система будет обходить DNS и использовать запись из файла hosts.
Это может усложнить отладку, если что-то в одной из этих конфигураций (DNS или файл hosts) не так. Или у вас странное поведение, если вы измените записи DNS и забудете /etc/hosts файл.

Вы можете использовать /etc/hosts файл для тестирования, например для тестирования вашего сайта перед внесением изменений в DNS.

В настройках вашей системы /etc/hosts файл, вероятно, читается, прежде чем прибегать к поиску DNS. Поэтому я бы, вероятно, предоставил IP-адрес системы, полное доменное имя (trinity.example.com), короткое имя (trinity) и адрес веб-сайта (www.example.com).

Вот руководство по формату вашего файла hosts. Видеть: Установка имени хоста: полное доменное имя или короткое имя?