Может ли кто-нибудь объяснить, возможно ли, чтобы два имени хоста использовали один и тот же IP-адрес?
А что, если одно имя хоста представляет более одного IP-адреса, это тоже возможно? Зачем?
Также возможно присвоение более одного IP-адреса одному имени хоста:
rr.example.com. A 192.0.2.12
rr.example.com. A 192.0.2.23
rr.example.com. A 192.0.2.34
rr.example.com. A 192.0.2.45
Когда вы запрашиваете DNS-сервер для rr.example.com
вы получите обратно список IP-адресов. Затем вы можете подключиться к одному из них. Если первая попытка подключения была активно отклонена, попробуйте следующую.
Большинство браузеров будет следовать этому потоку, пока конечные точки активно отказываются от TCP-соединения. Если истечет время ожидания конечной точки, ресурс будет считаться недоступным, даже если не все IP-адреса были опробованы.
Поскольку большинство приложений (включая браузеры) часто интересуются только одной конечной точкой IP за раз и просто выбирают первый доступный ответ, вы рискуете перекосить нагрузку между целевыми серверами, так что первый сервер получит весь трафик, а другие могут простаивать. .
Чтобы обойти это, большинство DNS-серверов предлагают так называемую конфигурацию Round Robin, заставляя сервер менять порядок, в котором возвращаются одинаково совпадающие записи. До того, как балансировщики нагрузки стали обычным явлением, это был эффективный способ балансировки нагрузки и некоторой реализации отказоустойчивости в сетевых системах.
Да, несколько имен хостов могут использовать один и тот же IP-адрес, рекомендуется использовать запись CNAME для указания на запись A.
bar.example.com. CNAME foo.example.com.
foo.example.com. A 192.0.2.23
Обратите внимание на все точки.
Имея одно имя хоста для представления нескольких IP-адресов, немного сложнее. Если мы говорим о записях MX, это решение уже существует в DNS с использованием номеров приоритета, если вы хотите, чтобы оно представляло несколько записей A, вам лучше использовать балансировщик нагрузки, например HAProxy.
В дополнение к изменению CNAME, как предлагалось в других ответах, вам также необходимо обрабатывать логику на своем сервере хостинга. Я использую Apache и настроил его как:
<VirtualHost 1.2.3.4:80>
ServerName www.abc.com
ServerAlias abc.com
...
</VirtualHost>
<VirtualHost 1.2.3.4:80>
ServerName www.xyz.com
ServerAlias xyz.com
...
</VirtualHost>
Я уверен, что и в других программах HTTP-серверов есть похожие вещи.
Вы должны четко понимать, что вы подразумеваете под двумя именами хостов. Если вы имеете в виду два физических устройства с одним и тем же IP-адресом, ответ обычно отрицательный. Случай, когда вы бы это сделали, если serverA и serverB работают как активно-пассивный кластер, тогда у вас будет каждый сервер с двумя адресами за штуку. Один будет IP-адресом, выделенным для этого сервера, а второй IP-адрес будет тем, который совместно используется серверами, но только активный сервер будет прослушивать этот общий адрес. Пассивный сервер начинает прослушивать общий адрес только тогда, когда активный сервер выходит из строя.
Также стоит отметить, что в IPv6 вы можете назначить один и тот же IP-адрес двум или более хостам, и сеть будет выполнять балансировку нагрузки и переключение при отказе за вас (если один из них недоступен, попробуйте другой). Оба они рассматриваются как одна логическая конечная точка, и DNS вообще не задействована.
Эта функция известна как Anycast.
Несколько IP-адресов для одного домена:
Несколько доменов для одного IP:
Вам необходимо ответить на следующий вопрос: все ли домены предоставляют одну и ту же услугу?
Многие серверы в телекоммуникации (например, HSS и PCRF) используют транспорт SCTP, поэтому эти серверы имеют несколько IP-адресов. Эти адреса используются для множественной адресации (которую поддерживает SCTP), обеспечивая соединение с избыточностью и аварийным переключением.