IPv6地址的默认分配方式是无状态地址自动配置 SLAAC(Stateless Address Autoconfiguration)
简单地理解地址=前缀+MAC地址。
恰恰是因为SLAAC,一个地区的网络前缀是公开的,当知道一台主机的MAC地址的时候此主机的IPv6地址就暴露了,会带来隐私问题。
RFC 3041展开了对此问题的讨论,便有了IPv6隐私扩展标准。
使用这个隐私扩展,内核会从原本的IPv6地址计算生成一个临时地址。在连接远程服务器时,系统会优先选择这个地址以隐藏原来的地址。也就是说会同时存在多个IPv6地址。
在Linux中,NetworkManager可以选择临时地址优先,还是关闭这个选项
IPv6 privacy extension 临时地址优先
enp10s0:mtu 1500 qdisc mq state UP group default qlen 1000link/ether 40:8d:5c:55:45:e9 brd ff:ff:ff:ff:ff:ffinet 192.168.1.116/24 brd 192.168.1.255 scope global dynamic noprefixroute enp10s0 valid_lft 42502sec preferred_lft 42502secinet6 2409:8a4c:ca2f:3640::1e8/128 scope global dynamic noprefixroute valid_lft 251703sec preferred_lft 165303secinet6 2409:8a4c:ca2f:3640:b944:a1ed:7d31:1073/64 scope global temporary dynamic valid_lft 251702sec preferred_lft 85499secinet6 2409:8a4c:ca2f:3640:428d:5cff:fe55:45e9/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 251702sec preferred_lft 165302secinet6 fe80::428d:5cff:fe55:45e9/64 scope link noprefixroute valid_lft forever preferred_lft forever复制代码
注意到,标记为 temporary dynamic的 inet6 地址,才是我们出去的ipv6地址 通过 可以验证