使用ipv6的Ubuntu 12.04服务

我目前在Linode上pipe理两台服务器。 第一个“server-a”运行12.04,第二个“server-b”是14.04的新安装。

前一段时间,我在服务器-a的spflogging上遇到了一些麻烦,并且认识到我需要为ipv6地址明确添加(或创build一个Alogging),因为后缀服务使用ipv6连接到gmail。 这是令人惊讶的,因为我只是假定默认使用ipv4。 在稍后的一些跟进之后,我发现几乎所有的服务在某些情况下都是使用ipv6,而不是其他的。

例如,如果postfix提供邮件,或者如果我telnet或SSH到另一台主机在Linode我ipv6地址显示日志。 另一方面,如果我在家连接到本地服务器,或连接到Digital Oceannetworking上的服务器,则使用ipv4。

任何人都可以解释何时以及如何确定在build立连接时应该使用ipv4还是ipv6? 它是否因服务而异或是中央configuration的一部分?

服务通常使用主机名来访问,这通常意味着使用DNS来查找链接到该主机名的IP地址。 对于IPv4将会有Alogging,对于IPv6将会有AAAAlogging。 所有这些地址应该提供相同的服务,独立于所使用的协议。

因此,如果您发送电子邮件到Gmail,您的邮件服务器将查找gmail.com的MX(邮件交换)logging。 从我的angular度来看,这些是:

 gmail.com. MX 5 gmail-smtp-in.l.google.com. gmail.com. MX 10 alt1.gmail-smtp-in.l.google.com. gmail.com. MX 20 alt2.gmail-smtp-in.l.google.com. gmail.com. MX 30 alt3.gmail-smtp-in.l.google.com. gmail.com. MX 40 alt4.gmail-smtp-in.l.google.com. 

最高优先级的MX是gmail-smtp-in.l.google.com ,所以让我们来看看它的地址:

 gmail-smtp-in.l.google.com. A 74.125.136.26 gmail-smtp-in.l.google.com. A 74.125.136.27 gmail-smtp-in.l.google.com. AAAA 2a00:1450:4013:c01::1b 

所以现在你的邮件服务器有三个地址可以使用。 DNS不会告诉你哪一个是首选。 这个select取决于你的本地软件。 有一个关于使用algorithm的RFC ( RFC 6724 )的完整RFC,但通常归结为:使用IPv6时,使用IPv6,否则使用IPv4。

除非明确configuration,否则后缀(≥2.9)将在可用时同时使用IPv4和IPv6。 它将首先尝试IPv6,如果无法使用IPv6连接,则将使用IPv4进行连接。

自Happy Eyeballs / RFC 6555发明以来,networking浏览器以不同的方式工作。 由于IPv6上的连接问题会导致令人讨厌甚至无法工作的超时,因此浏览器将尝试使用IPv6,但如果在±200ms后没有听到任何消息,它将尝试使用IPv4并行连接。 第一个成功的连接将被使用。

当然,如果您使用的服务不在DNS中公布任何IPv6地址,那么只会使用IPv4。 反之亦然。