Since recently, after moving from Ubuntu 10.04 to 14.04 (kernel 2.6.x to 3.13), I noticed a strange thing about IPv6 addresses. I assign several IPv6 addresses to my eth0 interface to allow the Apache web server to serve multiple domains without considering the name. (This is used for the single IPv4 address I have, but IPv6 has got to be better.)
Now I noticed a difference between the file /proc/net/if_inet6 and the output of the command
ip addr. While the latter contains the addresses I expect, and
ping6 can work with them, the file is missing some addresses. Actually, exactly one. And when I delete and assign it by
ip addr del and
ip addr add, while this address is added, another one is lost. All addresses still work all the time, one random address simply falls out of this file.
/proc/net/if_inet6 is supposed to list all assigned IPv6 addresses on the system. That's how it's documented. But this seems to be wrong, it's incomplete now. It worked in the past, but either the new system, or maybe recently added addresses broke it.
Currently I have 118 IPv6 addresses assigned, and one IPv4 address.
What have I missed, is this a known bug?