CNAME可以是一个主机名

这是一个神学问题,但尽pipe如此

因此,服务器有一个主机名,假设fqdn是hostname.example.com(对于我的意思,这是在/etc/sysconfig/network设置的名称)。

同一台服务器在不同的子网上有多个接口。 假设IP是10.0.0.1和10.0.1.1。

现在的问题是,是否理论上 (请注意,这一点很重要,我知道它实际上是有用的,但我对纯粹的学术答案感兴趣)允许进行以下设置:

 interface1.example.com. IN A 10.0.0.1 interface2.example.com. IN A 10.0.1.1 hostname.example.com. IN CNAME interface1.example.com. 

或者应该是:

 hostname.example.com. IN A 10.0.0.1 interface2.example.com. IN A 10.0.1.1 interface1.example.com. IN CNAME hostname.example.com. 

我想很明显哪一个从pipe理/行政POV中变得更有意义,但在技术上是正确的吗?

反对第一个设置的观点是,对10.0.0.1的反向查询返回interface1.example.com而不是预期的东西(即hostname: hostname.example.com ),所以前向请求和后续的顺序反向查找返回不同的结果。

现在,正如我所说的,我想要一个理论上的答案。 链接到RFC部分等,明确允许或不允许使用CNAME名称作为主机名。 如果没有,也没关系,我只需要确认。 到目前为止,我没有find任何明确的陈述,禁止这本书 ,在这种情况下,作为一个例子,这意味着它可以作为避免MXlogging指向CNAME的方法之一。

更新:多个接口不是冗余的(它们是债券),但实现stream量的逻辑分离。 例如,所有数据库stream量都在子网A上,服务stream量在子网B上,公共访问在子网C上。

UPDATE2:看起来这是不受RFC /其他规则的pipe制,是一个偏好问题。 因此,我将@Vatine答案标记为现在可行的答案,这意味着没有规定。 还非常感谢@Alnitak的build议和讨论!

我甚至可以说DNS之间的logging和服务器告诉你它的名字是完全没有关系的,所以从DNS的angular度来看,你们两种情况之间的唯一区别是什么名字去哪里。

从机器的angular度来看,它并不在意。 然而,从用户的angular度来看,我会select其中的一个,然后坚持下去。

一般来说,主机名应该是Alogging,因为在其他DNSlogging(例如您提供的MXlogging案例)中引用主机名时,有些地方不允许使用CNAME

对于它的价值,我想知道你想通过多个接口实现什么?

如果他们要提供冗余,则比发布特定物理地址的IP地址更好的方法是在“虚拟”(或回送)接口上configuration公共IP地址。 然后使用路由协议(如OSPF)确保到地址的stream量可以使用任一物理接口。

你可能会得到的是:

 $ORIGIN example.com @ IN SOA (...) en0.server IN A 10.0.0.1 en1.server IN A 10.0.1.1 lo1.server IN A 192.168.1.1 www IN CNAME lo1.server 

通过确保公布的公共IP地址即使其中一个物理接口closures也可以达到弹性。

更新:因为这是为了分离stream量,所以我个人将主机名写成一个Alogging指向公共接口(看起来就是外部世界看到的),然后为两个内部接口分开Alogging。

我会这样做:一个IN CNAME需要两个DNS查询,一个IN A需要一个DNS查询。

就个人而言,我不喜欢IN CNAME,而只使用IN A