Почему я должен использовать полное доменное имя вместо IP-адреса сервера?

29

В своей работе с серверами я натолкнулся на файлы конфигурации, где вы должны ввести адрес для внешнего сервера. Я видел, как некоторые используют IP-адрес сервера напрямую, но я слышал много рекомендаций использовать вместо этого полное доменное имя (FQDN). Почему я должен использовать имя хоста вместо прямого IP-адреса?

Потому что, если вы используете имя хоста, вам потребуется локальный DNS-сервер, который связывает каждое имя хоста с IP-адресом. В чем заключается недостаток между использованием имени хоста или IP-адреса?

Эмиль Роуленд
источник
5
если у вас динамические IP-адреса, возможно, проще просто изменить запись DNS. а почему локальный DNS сервер? почему бы просто не сделать так, чтобы все машины имели общедоступные IP-адреса? Другой недостаток IP заключается в том, что даже если они не являются динамическими, они, вероятно, все еще зависят от физического местоположения, что затрудняет миграцию в другое местоположение. По сути, это звучит так, как будто вы спрашиваете, почему был изобретен DNS. на этот вопрос ответили много раз в другом месте.
Янус Троелсен
1
Всегда было рекомендацией (например, в RFC), что на уровне приложения рассматриваются только имена хостов. Тем не менее, некоторые приложения не будут работать даже без IP. Тем не менее, я сам виноват в том, что часто связываюсь со своими устройствами по IP-
Хаген фон Айцен
Конечно, внешний сервер будет защищать все соединения с помощью SSL, а сертификаты SSL будут подписаны для полного доменного имени, и ваше приложение не сможет проверить нужный сервер, если вы используете IP-адрес. Правильно? : |
TessellatingHeckler
1
@HagenvonEitzen Конечно, ты никогда не будешь печатать ::1? :-)
CVn

Ответы:

54

Использование IP-адреса гарантирует, что вы не полагаетесь на DNS-сервер. Это также имеет преимущество в предотвращении атак через спуфинг DNS.

Использование полного доменного имени вместо IP-адреса означает, что если вы перенесете свою службу на сервер с другим IP-адресом, вы сможете просто изменить запись в DNS, а не пытаться найти везде, где используется IP-адрес ,

Это особенно полезно, когда у вас много серверов и служб, настроенных несколькими людьми.

Джошуа Гриффитс
источник
1
Особенно, если знание этого IP-адреса также является внешним, например, если его используют клиенты, партнеры или поставщики. Представьте, что вместо stackoverflow.com мы все пошли на IP, который мы знали как stackoverflow.com, а затем им нужно было сменить IP? Как они скажут каждому возможному пользователю сайта, что IP изменился? Отсюда и имена.
Брэндон
@ Брендон это было бы так же, как если бы они теперь решили перейти с stackoverflow.com на heapunderflow.com Первоначальное преимущество доменных имен для людей, чтобы помнить stackoverflow.comвместо 151.101.1.69. Конечно, в настоящее время это также позволяет использовать виртуальный хостинг, субдомены, относящиеся к их родителям, и другие возникающие у них преимущества.
Анхель
2
Я думаю, что суть этого ответа состоит в том, что организация владеет своим полным доменным именем; но не может владеть своим IP-адресом.
Питер Гиркенс
1
Попробуйте запустить HTTPS / Kerberos через IP против FQDN.
Арон
Это буквально цель DNS.
Легкость гонки с Моникой
40

DNS это не просто FQDN = IP

Важной особенностью DNS является то, что он предоставляет больше, чем просто записи A (hostname = IP). DNS предоставляет различные типы записей, таких как MX, CNAME, TXT и т. Д., Которые иногда могут потребоваться для некоторых программ. Он позволяет использовать несколько адресов, записи IPv4 + IPv6, динамические адреса, балансировку нагрузки, разрешение на основе географического местоположения, переключение при сбое / избыточность и т. Д. DNS сообщает вам, что есть (www.google.com - это веб-служба Google, 172.217 .4.110? Что это?) Позволяет изменять эти настройки / записи и получать их от клиентов без внесения изменений на всех клиентах. DNS может делать сложные вещи.

Часто есть явное преимущество использования DNS по прямому IP-адресу.

Полные доменные имена могут быть требованием

Некоторые вещи, такие как веб-серверы, которые используют виртуальный хостинг на основе имен или балансировщики нагрузки и т. Д., Абсолютно требуют, чтобы вы обращались к ним через полное доменное имя или имя хоста. Они определяют, как ответить на ваш запрос, основываясь на полном доменном имени, к которому вы подключаетесь. Подключение через IP может вообще не работать.

Сертификаты SSL выдаются на основе доменных имен, поэтому вы не сможете использовать некоторые службы с поддержкой SSL (правильно) без DNS.

Это запрос на копирование для домена google.com, чтобы дать вам представление о сложности DNS

google.com. 299 В 172.217.0.174
google.com. 299 IN AAAA 2607: f8b0: 400b: 807 :: 200e
google.com. 599 В MX 10 aspmx.l.google.com.
google.com. 599 В MX 40 alt3.aspmx.l.google.com.
google.com. 59 В SOA ns2.google.com. dns-admin.google.com. 126990955 900 900 1800 60
google.com. 599 В MX 30 alt2.aspmx.l.google.com.
google.com. 21599 IN NS ns2.google.com.
google.com. 599 В MX 20 alt1.aspmx.l.google.com.
google.com. 599 В MX 50 alt4.aspmx.l.google.com.
google.com. 21599 IN NS ns1.google.com.
google.com. 3599 IN TXT "v = spf1 include: _spf.google.com ~ all"
google.com. 21599 IN CAA 0 выпуск "symantec.com"
google.com. 21599 IN NS ns3.google.com.
google.com. 21599 IN NS ns4.google.com.

Yahoo отвечает 3 IP-адресами

$ host -ta yahoo.ca
yahoo.ca имеет адрес 77.238.184.24
yahoo.ca имеет адрес 74.6.50.24
yahoo.ca имеет адрес 98.137.236.24

Преимущество использования IP-адреса

Для меня это обычно, когда DNS может помешать или недоступен. Как правило, я бы использовал DNS для большинства вещей.

Одним из примеров того, где IP-адрес мог бы быть лучше, было бы, когда у вас есть две машины с прямой связью между ними (без коммутатора) с адресами частной сети (скажем, 192.168.1.1 и 192.168.1.2), и они используют его для связи высокой доступности. или DRBD или другой очень специфический сервис. В этом случае настройка вещей в DNS, вероятно, не имеет никакого смысла. Это не обязательно, добавит сложности, проблем с производительностью и может привести к точке отказа.

Другой пример - маршрутизация. Таблицы маршрутизации записывают IP-адреса по разным причинам.

Еще одна ссылка на серверы имен (как в /etc/resolv.conf). Поскольку без сервера имен вы ничего не сможете решить.

Райан Бабчишин
источник
Это отличный ответ, но он также, вероятно, должен что-то сказать и о vhosted сервисах; IP⟷FQDN - это сопоставление «многие ко многим», а не «многие к одному».
пушистый
Спасибо и согласился. DNS очень полезен для виртуального хостинга на основе имен, если вы на это ссылаетесь.
Райан Бабчишин
Да, это то, что я имел в виду.
пушистый
Отличный ответ, который на самом деле дает правильный DNS - добавление закладок для дальнейшего использования. У меня есть небольшой недостаток - ваш комментарий «Таблицы маршрутизации записывают IP-адреса по разным причинам». Каковы различные причины, на которые вы ссылаетесь? У таблиц маршрутизации нет другого выбора, кроме как использовать IP-адреса, потому что маршрутизация происходит на интернет-уровне, тогда как DNS использует прикладной уровень и поэтому обязательно зависит от маршрутизации.
садовод
@gardenhead Спасибо. Это верно в отношении маршрутизации, я просто не хотел вдаваться в подробности. Прости мой выбор слов.
Райан Бабчишин