两个主机名可能共享相同的IP地址吗?

任何人都可以解释是否有可能为两个主机名共享相同的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 

当您查询rr.example.com的DNS服务器时,您将返回一个IP地址列表。 然后,您可以select连接到其中的一个。 如果第一次尝试连接被积极拒绝,就试试下一步。

大多数浏览器都会遵循这个stream程,只要端点主动拒绝TCP连接。 如果端点超时,即使并非所有的IP都被尝试过,资源也将被视为无法访问

由于大多数应用程序(包括浏览器)一次只对1个IP端点感兴趣,只select第一个可用的答案,就有可能在目标服务器之间产生负载偏移,从而使第一台服务器获得所有的stream量,而其他服务器可能处于空闲状态。

为了避免这种情况,大多数DNS服务器提供了所谓的循环configuration,使得服务器交替返回同样匹配logging的顺序。 在负载平衡器很平常之前,这是一种有效的负载平衡方法,并且可以在networking系统上稍微实现容错。

是的,多个主机名可以使用相同的IP地址,最好的做法是使用CNAMElogging来指向Alogging

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

记下所有的句号。

有一个主机名代表多个IP地址有点复杂。 如果我们谈论的是MXlogging,那么这个解决scheme已经存在于使用优先级数字的DNS中,如果您希望它代表多个Alogging,最好使用负载均衡器,例如HAProxy。

除了build议其他答案的CNAME更改之外,还必须处理托pipe服务器上的逻辑。 我使用Apache,我configuration为:

 <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地址将是服务器之间共享的地址,但只有活动服务器将监听该共享地址。 被动服务器只在主动服务器closures时才开始在共享地址中侦听。

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

这个function被称为Anycast 。

同一个域的多个IP:

  • 是的,这是可能的,也是非常普遍的:如果一个服务器(IP A)掉下来,你可以连接到DNS寄存器的下一个IP,并访问另一个服务器(使用IP B)来获得服务。

同一IP的多个域:

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

  • 如果是的话:这也是一个很常见的configuration:很多公司都购买了很多不同国家顶级域名的域名:xxx.com,xxx.net,xxx.org等等,都指向相同的服务,那就是,到相同的IP列表。
  • 如果不是:这是可能的,但不常见,不build议。 一些只允许HTTP服务的托pipe公司使用NAT /代理来腾出IP。 但是,当然,这意味着一个“理解”HTTP来识别目标服务的代理。

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