В своей работе с серверами мне приходилось сталкиваться с конфигурационными файлами, в которых нужно вводить адрес внешнего сервера. Я видел, как некоторые используют IP-адрес сервера напрямую, но я слышал много рекомендаций использовать имя хоста. полное доменное имя (FQDN) вместо этого. Почему я должен использовать имя хоста вместо прямого IP-адреса?
Потому что, если вы используете имя хоста, вам понадобится локальный DNS-сервер, который будет связывать каждое имя хоста с IP-адресом. В чем заключается недостаток использования имени хоста или IP-адреса?
Использование IP-адреса гарантирует, что вы не полагаетесь на DNS-сервер. Он также имеет преимущество предотвращения атак посредством подмены DNS.
Использование полного доменного имени вместо IP-адреса означает, что, если бы вы перенесли свою службу на сервер с другим IP-адресом, вы могли бы просто изменить запись в DNS, а не пытаться найти везде, где используется IP-адрес. .
Это особенно полезно, когда у вас есть много серверов и служб, настроенных несколькими людьми.
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 IN A 172.217.0.174 google.com. 299 IN AAAA 2607:f8b0:400b:807::200e google.com. 599 IN MX 10 aspmx.l.google.com. google.com. 599 IN MX 40 alt3.aspmx.l.google.com. google.com. 59 IN SOA ns2.google.com. dns-admin.google.com. 126990955 900 900 1800 60 google.com. 599 IN MX 30 alt2.aspmx.l.google.com. google.com. 21599 IN NS ns2.google.com. google.com. 599 IN MX 20 alt1.aspmx.l.google.com. google.com. 599 IN 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 issue "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 has address 77.238.184.24 yahoo.ca has address 74.6.50.24 yahoo.ca has address 98.137.236.24
Преимущество использования IP-адреса
Для меня это обычно, когда DNS может как-то мешать или недоступен. Обычно я бы использовал DNS для большинства вещей.
Один из примеров, когда IP-адрес может быть лучше, - это когда у вас есть две машины с прямой связью между ними (без коммутатора) с адресами частной сети (скажем, 192.168.1.1 и 192.168.1.2), и они используют его для связи с высокой доступностью. или DRBD или другой очень специфический сервис. В этом случае настройка DNS, вероятно, не имеет смысла. В этом нет необходимости, это добавит сложности, проблем с производительностью и может стать причиной отказа.
Другой пример - маршрутизация. Таблицы маршрутизации записывают IP-адреса по разным причинам.
Другой ссылается на серверы имен (например, в /etc/resolv.conf). Поскольку без сервера имен вы ничего не можете решить.