似乎当 dhclient 在 eth0 上运行时,我从 DHCP 服务器获取一个 IPv4 地址和一个附加到 eth0 的 Scope:Link IPv6 地址:
inet6 addr: fe80::a00:27ff:fed0:4d41/64 Scope:Link
但是我无法从 dhclient-script 中看到该地址是如何添加的。在另一个具有静态 IP 地址的接口上,我想添加一个链接本地 IPv6 地址,我想知道是否有通用命令可以在不知道 mac 的情况下执行此操作。
编辑:
看起来,当您执行“ip link set dev ethX up”或“ifconfig ethX up”时,内核会分配链接本地地址。但是,在我的情况下,我将电缆插入了正在 DHCP 的接口,而没有电缆插入我静态设置的接口。直到周一才能验证,但我猜如果没有链接,内核就不会将链接本地地址分配给接口。
答案1
链路本地地址源自设备的 MAC 地址。它们是在启动接口时自动生成的。自动配置包括一个发现过程,以确保地址在网络上是唯一的。
当路由器通告可用时,使用类似的过程来自动配置可路由地址。这些地址可能会定期重新生成以提供隐私。
RFC 4862指定要遵循的流程。
答案2
找到了!这个命令还不够:
ifconfig eth0 up
相反我必须这样做:
ifconfig eth0 up
sysctl -w net.ipv6.conf.eth0.disable_ipv6=0
只有后者确实恢复了 eth0 上的 IPv6 链接本地地址。
换句话说,我的发行版似乎在某处隐藏了一些代码,net.ipv6.conf.eth0.disable_ipv6
每次要求它打开或关闭网络时,这些代码都会动态更改。您的情况可能会有所不同。
我仅凭以下几点就搞清楚了这个问题:
sysctl -a | grep ipv6