无状态地址自动配置允许链路上的节点通过将其接口标识符(64 位)附加到路由器通告的前缀(64 位)来自动配置全局 IPv6 地址。
假设我有一个具有全球 IPv6 地址的服务器
2001:0db8:85a3:08d3:1319:8a2e:0370:7347
现在我想通过仅更改接口标识符并保留前缀来向同一接口添加另一个全局 IPv6 地址。例如
2001:0db8:85a3:08d3:3315:2b5e:a320:3254
-------same--------|-----different-----
如何使用 SLAAC 来实现这一点,其中接口标识符会自动附加到网络前缀?我目前正在使用 Ubuntu。
(这与 IPv6 隐私扩展的作用类似,但我想自己控制添加和删除临时 IPv6 地址。)
答案1
目前,我不知道有任何方法可以手动使系统切换到新的临时地址。
然而,你能调整临时地址的使用时间段并使系统更频繁地创建它们。
从内核文档:
temp_valid_lft - INTEGER
valid lifetime (in seconds) for temporary addresses.
Default: 604800 (7 days)
temp_prefered_lft - INTEGER
Preferred lifetime (in seconds) for temporary addresses.
Default: 86400 (1 day)
(是的,拼写错误是故意的......)
假设您希望系统每 10 分钟开始使用一个新的临时地址。然后您将设置:
sysctl net.ipv6.conf.all.temp_prefered_lft=600
sysctl net.ipv6.conf.default.temp_prefered_lft=600
这其他sysctl, temp_valid_lft
,允许一些额外的时间现存的使用临时地址来完成连接。您也可以减少这个时间,特别是如果您不打算长时间运行连接的话。在这里我将其减少到 1 小时:
sysctl net.ipv6.conf.all.temp_valid_lft=3600
sysctl net.ipv6.conf.default.temp_valid_lft=3600
答案2
隐私扩展正是您所需要的。您只是希望对它们进行一些手动控制。您可以使用命令来操纵到期和生成ip address
。ip-address
手册页显示:
mngtmpaddr(仅限 IPv6)使内核代表隐私扩展 (RFC3041) 管理以此地址作为模板创建的临时地址。要使此功能处于活动状态,必须将 use_tempaddr sysctl 设置设置为大于零的值。给定地址的前缀长度必须为 64。此标志允许在手动配置的网络中使用隐私扩展,就像无状态自动配置处于活动状态一样。