为什么 /proc/net/if_inet6 不包含“ip addr”中的所有 IP 地址?

为什么 /proc/net/if_inet6 不包含“ip addr”中的所有 IP 地址?

最近,从 Ubuntu 10.04 迁移到 14.04(内核 2.6.x 到 3.13)后,我注意到 IPv6 地址有一个奇怪的事情。我为 eth0 接口分配了多个 IPv6 地址,以允许 Apache Web 服务器为多个域提供服务,而无需考虑名称。 (这用于我拥有的单个 IPv4 地址,但 IPv6 必须更好。)

现在我注意到文件 /proc/net/if_inet6 和命令的输出之间存在差异ip addr。虽然后者包含我期望的地址并且ping6可以使用它们,但该文件缺少一些地址。事实上,正是一个。当我删除并通过ip addr del和分配它时ip addr add,在添加该地址的同时,另一个地址丢失了。所有地址仍然一直有效,一个随机地址只是从该文件中消失。

/proc/net/if_inet6 应该列出系统上所有分配的 IPv6 地址。这就是它的记录方式。但这似乎是错误的,现在还不完整。它在过去是有效的,但要么是新系统,要么是最近添加的地址破坏了它。

目前我已分配 118 个 IPv6 地址和 1 个 IPv4 地址。

我错过了什么,这是一个已知的错误吗?

相关内容