题 两个主机名是否可以共享相同的IP地址?


任何人都可以解释两个主机名是否可以共享相同的IP地址?

那么,如果一个主机名代表多个IP地址,那也可能吗?为什么?


35
2018-06-21 10:39




想要一个真实世界的例子吗?平 serverfault.com 和 superuser.com 并查看为两者返回的IP地址。 - Scott Chamberlain
所有主机名已经共享127.0.0.1地址,有点...... - jlliagre


答案:


还可以为一个主机名分配多个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服务器都提供所谓的循环配置,使服务器交替返回同等匹配记录的顺序。在负载平衡器很常见之前,这是一种有效的负载平衡方式,并且在网络系统上实现了容错性。


45
2018-06-21 10:53



不是问这个相反的问题吗? - mowwwalker
有两个问题。 @Sirch已经涵盖了第一部分非常好 - Mathias R. Jessen
哦,我明白了,我跳过了描述。谢谢你的回答顺便说一下! - mowwwalker
浏览器/网络堆栈通常会尝试收到的第一个地址吗?或者他们会尝试随机吗?随机化DNS服务器返回的IP以尝试平衡负载是否有意义? - Tom Marthenal
取决于具体的客户端实现。大多数服务器将随机化返回的IP地址的顺序(这是称为“循环”的行为)。实际上有趣的问题,我想我会稍微扩展答案 - Mathias R. Jessen


是的,多个主机名可能使用相同的IP地址,最佳做法是使用CNAME记录指向A记录

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

记下所有的句号。

有一个主机名来表示多个IP地址有点复杂。如果我们谈论MX记录,这个解决方案已经存在于使用优先级编号的DNS中,如果您希望它代表多个A记录,您最好使用负载均衡器,例如HAProxy。


35
2018-06-21 10:48



值得注意的是,我在真正的互联网上看到了CNAME的链条打破了名称解析器。因为CNAME可以指向另一个CNAME。甚至CNAME循环都是可能的。 - PP.
RFC 1912 2.4 ietf.org/rfc/rfc1912.txt - dmourati
值得指出的是 A 包含相同IP的记录可以出现在不同的区域中,例如, x.foo.com. A 1.2.3.4 和 y.bar.com. A 1.2.3.4。 - Blrfl
这个答案忘记了解通配符 A 记录,这也导致同一IP上的多个主机名。 - Izzy
嘿Sirch,与fullstops有什么关系? - JonoRR


除了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服务器软件也有类似的东西。


6
2018-06-21 23:07





您需要明确两个主机名的含义。如果您的意思是两个具有相同IP地址的物理盒,则答案通常为否。如果服务器A和服务器B作为主动 - 被动群集工作,那么每个服务器都有两个地址。一个是专用于该服务器的IP地址,第二个IP地址是服务器之间共享的IP地址,但只有活动服务器将监听该共享地址。被动服务器仅在活动服务器关闭时才开始侦听共享地址。


2
2018-06-21 17:02





还值得注意的是,在IPv6中,您可以为两个或更多主机分配相同的IP,并且网络将为您执行负载平衡和故障转移(如果无法访问,请尝试另一个)。两者都被视为一个逻辑端点,并且不涉及任何DNS。

此功能称为 任播


2
2018-06-22 06:59





同一域的多个IP:

  • 是的,这是可能的并且很常见:如果服务器(使用IP A)掉线,您可以连接到DNS注册的下一个IP并访问另一个服务器(使用ip B)来获取服务。

同一IP的多个域:

您需要回答下一个问题:所有域都提供相同的服务吗?

  • 如果是的话:它也是一种非常常见的配置:很多公司购买了不同国家/地区的域名:xxx.com,xxx.net,xxx.org等等。所有这些都指向相同的服务,即,到相同的IP列表。
  • 如果不是:这是可能但不常见而不是推荐。一些只允许HTTP服务的托管公司使用NAT /代理来备用IP。但是,当然,这意味着代理“理解”HTTP以识别目标服务。

1
2018-06-22 17:40





电信中的许多服务器(如HSS和PCRF)使用SCTP传输,因此这些服务器具有多个IP地址。这些地址用于多宿主(SCTP支持),为连接提供冗余和故障转移。


0
2018-05-19 06:40