Возможно ли, чтобы два имени хоста имели один и тот же IP-адрес?


35

Может кто-нибудь объяснить, возможно ли для двух имен хостов использовать один и тот же IP-адрес?

А что, если одно имя хоста представляет более одного IP-адреса, это тоже возможно? Зачем?


18
Хотите пример из реального мира, где это происходит? Пинг serverfault.comи superuser.comи посмотреть на IP-адрес, который возвращается для обоих.
Скотт Чемберлен

1
Все
имена

Ответы:


45

Назначение более одного 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-адреса были опробованы

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

Чтобы обойти это, большинство DNS-серверов предлагают так называемую конфигурацию Round Robin, заставляя сервер чередовать порядок, в котором возвращаются одинаково совпадающие записи. До того, как балансировщики нагрузки стали обычным явлением, это был эффективный способ балансировки нагрузки и некоторой реализации отказоустойчивости в сетевых системах.


7
Разве вопрос не задает обратное?
Mowwwalker

2
Есть два вопроса. @Sirch уже довольно неплохо описал первую часть
Матиас Р. Джессен,

О, я вижу, я пропустил описание. Спасибо за ответ, кстати!
Mowwwalker

1
Браузеры / сетевые стеки обычно пробуют первый полученный адрес? Или они попробуют случайный? Имеет ли смысл рандомизировать порядок возврата IP-адресов вашим DNS-сервером, чтобы попытаться сбалансировать нагрузку?
Том Мартенал

Зависит от конкретной реализации клиента. Большинство серверов будут рандомизировать порядок возвращаемых IP-адресов (это поведение называется «циклическим перебором»). Интересные вопросы на самом деле, я думаю, что я немного
расширю

35

Да, несколько имен хостов могут использовать один и тот же IP-адрес. Рекомендуется использовать запись CNAME для указания на запись A

bar.example.com.        CNAME  foo.example.com.
foo.example.com.        A      192.0.2.23

Обратите внимание на все полные остановки.

Наличие одного имени хоста для представления нескольких IP-адресов немного сложнее. Если мы говорим о записях MX, это решение уже существует в DNS с использованием номеров приоритетов, если вы хотите, чтобы оно представляло несколько записей A, лучше использовать балансировщик нагрузки, например HAProxy.


6
Стоит отметить, и я видел в реальном Интернете цепочки CNAME, которые ломали средства определения имен. Потому что CNAME может указывать на другой CNAME. Возможны даже циклы CNAME.
пп.


Также стоит отметить, что Aзаписи, содержащие один и тот же IP, могут появляться в разных зонах, например, x.foo.com. A 1.2.3.4и y.bar.com. A 1.2.3.4.
Blrfl

Этот ответ забывает рассказать о подстановочных Aзаписях, которые также приводят к нескольким именам хостов на одном и том же IP.
Иззи

Эй, сэрч, в чем дело с фуллстопами?
JonoRR

6

В дополнение к изменению 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-серверов есть подобные вещи.


2

Вы должны четко понимать, что вы подразумеваете под двумя именами хостов. Если вы имеете в виду два физических блока с одинаковым IP-адресом, ответ, как правило, отрицательный. Случай, когда вы могли бы работать, если serverA и serverB работают как активно-пассивный кластер, тогда у каждого сервера будет по два адреса на один кусок. Одним из них будет IP-адрес, выделенный этому серверу, а вторым IP-адресом будет тот, который был разделен между серверами, но только активный сервер будет прослушивать этот общий адрес. Пассивный сервер начинает прослушивать общий адрес только тогда, когда активный сервер отключается.


2

Также стоит отметить, что в IPv6 вы можете назначить один и тот же IP-адрес двум или более хостам, и сеть выполнит балансировку нагрузки и восстановление после сбоя (если один из них недоступен, попробуйте другой). Оба рассматриваются как одна логическая конечная точка, и DNS вообще не задействован.

Эта функция известна как Anycast .


1

Несколько IP для одного домена:

  • Да, это возможно и очень часто: если сервер (с ip A) падает, вы можете подключиться к следующему IP-адресу регистра DNS и получить доступ к другому серверу (с ip B), чтобы получить услугу.

Несколько доменов для одного IP:

Вам необходимо ответить на следующий вопрос: все ли домены предоставляют одинаковые услуги?

  • Если да: это также очень распространенная конфигурация: многие компании покупают много доменов с доменом верхнего уровня другой страны: xxx.com, xxx.net, xxx.org и т. Д. И все они указывают на один и тот же сервис, то есть , к тому же списку IP.
  • Если нет: это возможно, но не часто и не рекомендуется. Некоторые хостинговые компании, которые разрешают только HTTP-сервис, используют NAT / Proxy для экономии IP. Но, конечно, это означает, что прокси-сервер «понимает» HTTP для идентификации службы назначения.

0

Многие серверы в телекоммуникации (например, HSS и PCRF) используют транспорт SCTP, поэтому эти серверы имеют несколько IP-адресов. Эти адреса используются для множественной адресации (которую поддерживает SCTP), обеспечивая соединение с резервированием и аварийным переключением.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.