禁用 IPv6 autoconf(基于 MAC)IPv6 地址而不禁用隐私地址?

禁用 IPv6 autoconf(基于 MAC)IPv6 地址而不禁用隐私地址?

是否可以配置 Linux 内核以自动获取RFC4941临时(隐私)IPv6 地址,无需获取RFC4862公共(基于 MAC)IPv6 地址?

通过在我的 Ubuntu 13.04 Linux 系统上进行以下 sysctl 设置,我获得了临时 IPv6 地址,但我也获得了基于 MAC 的公共 IPv6 地址:

net.ipv6.conf.eth0.autoconf=1
net.ipv6.conf.eth0.use_tempaddr=2

我不想要基于 MAC 的 IPv6 地址。我只想要临时隐私地址。我意识到这use_tempaddr=2更喜欢临时地址,但应用程序仍然可以bind()使用基于 MAC 的地址或使用 sockopt IPV6_PREFER_SRC_PUBLIC(参见RFC5014) 来覆盖此偏好。我预测,像 Adob​​e Flash 这样的应用程序将允许网站使用基于 MAC 的 IP 将其 Flash 应用程序回拨,这样人们无论走到哪里都更难以避免被营销人员(或政府)跟踪。

使用以下 sysctl 设置:

net.ipv6.conf.eth0.autoconf=0
net.ipv6.conf.eth0.use_tempaddr=2

我没有获得自动配置的 IPv6 地址。没有。

如何在不获取基于 MAC 的 IPv6 地址的情况下获取临时 IPv6 地址?

答案1

抱歉,不行。如果您想要临时地址,则必须使用无状态地址自动配置(您已经知道)或 DHCPv6,后者可以配置为从 DHCPv6 服务器请求临时地址。就您而言,DHCPv6 可能是您想要的方式,而且大多数主要 ISP 都在部署它。

答案2

使用较新的内核(或较新的 NetworkManager 版本),您可以启用RFC 7217地址生成模式,根据秘密种子提供稳定的地址。

对于 NetworkManager ≥ v1.2 的自动配置

NetworkManager 1.2 处理 autoconf 并自行分配地址。

$ nmcli con modify "Ethernet" ipv6.addr-gen-mode stable-privacy

可以通过 为所有新连接设置此项NetworkManager.conf

由内核自动配置

较旧的 NM 版本和非 NM 系统依赖内核来分配地址。新的 addrgenmode 可以通过 sysctl 激活:

net.ipv6.conf.default.stable_secret = 1d8b:4da9:888k:5a65:7aaa:7o2d:ce60:ec4e

当然,您需要生成自己的密钥:

$ head -c 16 /dev/urandom | xxd -p | sed "s/..../:&/g; s/://"

用于ip -d link确保显示“addrgenmode stable_secret”。

相关内容