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?

  • As an experiment, what happens if you start from empty and add one address at a time? Is it always N-1 addresses in the file? – Barmar Dec 30 '14 at 22:50
  • Hard to make such experiments on a fully-configured production machine... I need to try and set up a similar one locally. – ygoe Dec 31 '14 at 7:20
  • I thought this was a known problem in ifconfig but apparently it's an issue some kernel API instead. – Pavel Šimerda Jan 7 '15 at 16:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.