$ uname -a
Linux expvr-alnilam 3.2.0-24-generic-pae #37-Ubuntu SMP Wed Apr 25 10:47:59 UTC 2012 i686 i686 i386 GNU/Linux
$ sysctl net.ipv6.conf.eth2.use_tempaddr
net.ipv6.conf.eth2.use_tempaddr = 2
# (as per the default /etc/sysctl.d/10-ipv6-privacy.conf in 12.04)
# Add a static IPv6 address:
$ sudo ip addr add 2001:470:9321:f003::1122/64 dev eth2
# Verify that it has been set up, and that a temporary address and a SLAAC address also exist:
$ ip -6 addr list dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:470:9321:f003:74e3:aa2b:7ee5:c002/64 scope global temporary dynamic
valid_lft 86393sec preferred_lft 14393sec
inet6 2001:470:9321:f003:6c97:24ff:fe3f:263b/64 scope global dynamic
valid_lft 86393sec preferred_lft 14393sec
inet6 2001:470:9321:f003::1122/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::6c97:24ff:fe3f:263b/64 scope link
valid_lft forever preferred_lft forever
$ ip -6 addr list dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::6c97:24ff:fe3f:263b/64 scope link tentative
valid_lft forever preferred_lft forever
I.e. on setting use_tempaddr=0, _all_ IPv6 addresses are removed, including statically-configured and non-temporary SLAAC-configured addresses. (The link-local address reappears quickly but the 'tentative' flag indicates that it has been newly re-added. The SLAAC address reappears after a slightly longer interval as the kernel continues to undergo SLAAC, but the static address is gone forever unless manually reinstated.)
The same happens if use_tempaddr is changed from 0 back to 2.
The expected outcome is that only temporary addresses are affected by a change to use_tempaddr.
$ uname -a generic- pae #37-Ubuntu SMP Wed Apr 25 10:47:59 UTC 2012 i686 i686 i386 GNU/Linux
Linux expvr-alnilam 3.2.0-24-
$ sysctl net.ipv6. conf.eth2. use_tempaddr conf.eth2. use_tempaddr = 2 d/10-ipv6- privacy. conf in 12.04)
net.ipv6.
# (as per the default /etc/sysctl.
# Add a static IPv6 address: 9321:f003: :1122/64 dev eth2
$ sudo ip addr add 2001:470:
# Verify that it has been set up, and that a temporary address and a SLAAC address also exist: MULTICAST, UP,LOWER_ UP> mtu 1500 qlen 1000 9321:f003: 74e3:aa2b: 7ee5:c002/ 64 scope global temporary dynamic 9321:f003: 6c97:24ff: fe3f:263b/ 64 scope global dynamic 9321:f003: :1122/64 scope global 24ff:fe3f: 263b/64 scope link
$ ip -6 addr list dev eth2
4: eth2: <BROADCAST,
inet6 2001:470:
valid_lft 86393sec preferred_lft 14393sec
inet6 2001:470:
valid_lft 86393sec preferred_lft 14393sec
inet6 2001:470:
valid_lft forever preferred_lft forever
inet6 fe80::6c97:
valid_lft forever preferred_lft forever
# Disable RFC 4941 temporary addresses: conf.eth2. use_tempaddr= 0 conf.eth2. use_tempaddr = 0
$ sudo sysctl net.ipv6.
net.ipv6.
$ ip -6 addr list dev eth2 MULTICAST, UP,LOWER_ UP> mtu 1500 qlen 1000 24ff:fe3f: 263b/64 scope link tentative
4: eth2: <BROADCAST,
inet6 fe80::6c97:
valid_lft forever preferred_lft forever
I.e. on setting use_tempaddr=0, _all_ IPv6 addresses are removed, including statically- configured and non-temporary SLAAC-configured addresses. (The link-local address reappears quickly but the 'tentative' flag indicates that it has been newly re-added. The SLAAC address reappears after a slightly longer interval as the kernel continues to undergo SLAAC, but the static address is gone forever unless manually reinstated.)
The same happens if use_tempaddr is changed from 0 back to 2.
The expected outcome is that only temporary addresses are affected by a change to use_tempaddr.