多年来,我一直在运行启用 IPv6(双栈)的主机。Ubuntu 至少可以追溯到 16.04,也许是 14.04,直到现在。我认为这是成熟的技术,我们的实施中没有问题。
决定在某些繁忙(>1Gb/s 面向公众、互联网负载、全球)主机上启用 IPv6 双栈。只需将 IP6 地址(固定,非动态)添加到 netplan、ip6 网关,并将 AAAA 记录添加到 DNS。没有其他操作。甚至没有重新启动,只是应用。
我的 UFW 规则全部启用双栈,就像我曾经运行过的其他所有双栈主机一样。相关的 sysctl 是默认启用的。
几乎立刻,我发现 netstat -s 中的连接失败次数增加了 10 倍(见图)。我查看了这篇非常详尽的文章:https://serverfault.com/questions/885403/linux-tracking-the-source-of-netstat-s-failed-connection-attempts并且没有找到原因。没有客户投诉,投诉数量从每 1000 人中 1 人减少到每 100 人中 1 人。成功的 IPv6 连接正在发生(平均约 1%,峰值约 7-8%)
它(连接失败)非常稳定,并且我认为如果这是一个真正的问题,客户或我们的监控会检测到问题。没有这样的运气。这个计数器只应该在出站连接时增加,这些服务器每天发送几千封电子邮件来向世界各地的用户报告他们的进度,所以我认为这是邮件服务器在各个地方被 IPv6 拒绝......很烦人,但不是问题。
在对受影响主机采取行动之前的接下来 5 天内... 流量水平下降,而且停止增长。每 100 个连接中有一个连接似乎影响了很多客户,尽管没有人抱怨。
无需进行任何其他更改,只需从受影响服务的 DNS 中删除 IPv6 AAAA 条目,几小时内故障率就会下降 10 倍,使用水平也会恢复正常。显然,这消除了邮件问题,因为邮件仍通过 IPv4 和 IPv6 传递。此服务器除了 DNS/邮件外不进行任何网络外连接,所有内部连接都是 IPv4——(它使用 NFS 和 https 上的内部对象存储)。唯一面向公众的服务是 Apache2,并且已启用 HTTP/2。我们正在跟踪 Apache2 的最新稳定版本,而不是 Ubuntu 通用版本。
我正在绞尽脑汁想与 IPv6 接收连接使用相关的什么可能会对用户产生影响,只有 netstat 可以继续,这完全可能是某种玩笑。
没有说明性的 apache2 日志来表明 IPv4 或 IPv6 上的任何类型的连接问题。
观察结果:
18.04 LTS 和 20.04 LTS 上均有发生
发生在不同虚拟机管理程序上运行不同站点的多个不同的虚拟机上。
保持 IPv6 配置有效,但不在 DNS 中公布它,可以避免问题发生。
没有 syslog 或 apache2 日志来记录任何问题。
发生在 Apache2 的多个版本上。
物理硬件是HP DL380或DL360,连接都是10G以太网。
VM 位于 KVM/libvirt 中,通过主机操作系统使用 VLAN 上的桥接。主机操作系统和 VM 都是 Ubuntu,通常是 18.04 LTS,但也可能存在其他组合。
任何指点都将不胜感激!
提前致谢。