![为什么 /proc/net/if_inet6 不包含“ip addr”中的所有 IP 地址?](https://linux22.com/image/35438/%E4%B8%BA%E4%BB%80%E4%B9%88%20%2Fproc%2Fnet%2Fif_inet6%20%E4%B8%8D%E5%8C%85%E5%90%AB%E2%80%9Cip%20addr%E2%80%9D%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%20IP%20%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
最近,从 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 地址。
我错过了什么,这是一个已知的错误吗?