Debian 7 如何设置 IPv6 链接本地地址?

Aar*_*ron 12 ipv6 linux-networking dhclient

似乎当 dhclient 在 eth0 上运行时,我从 DHCP 服务器获得了一个 IPv4 地址和一个附加到 eth0 的 Scope:Link IPv6 地址:

inet6 addr: fe80::a00:27ff:fed0:4d41/64 Scope:Link
Run Code Online (Sandbox Code Playgroud)

但是我无法从 dhclient-script 中看到该地址是如何添加的。在另一个具有静态 IP 地址的接口上,我想添加一个链接本地 IPv6 地址,我想知道是否有一个通用命令可以在不知道 mac 的情况下执行此操作。

编辑:
当您执行“ip link set dev ethX up”或“ifconfig ethX up”时,内核似乎会分配链接本地地址。但是,在我的情况下,我将一根电缆插入了 DHCP 的接口,而没有电缆插入我静态设置的接口。直到星期一才能验证,但我猜如果没有链接,内核不会将链接本地地址分配给接口。

Bil*_*hor 7

链路本地地址源自设备的 MAC 地址。它们是作为启动界面的一部分自动生成的。自动配置包括一个发现过程,以确保地址在网络上是唯一的。

当路由器通告可用时,类似的过程用于自动配置可路由地址。这些地址可能会定期重新生成以提供隐私。

RFC 4862指定了要遵循的流程。


Mar*_*rcH 6

找到了!这个命令是不够的:

ifconfig eth0 up
Run Code Online (Sandbox Code Playgroud)

相反,我必须这样做:

ifconfig eth0 up
sysctl -w net.ipv6.conf.eth0.disable_ipv6=0
Run Code Online (Sandbox Code Playgroud)

只有后者才能恢复 eth0 上的 IPv6 链接本地地址。

换句话说,我的发行版似乎在某处隐藏了一些代码,net.ipv6.conf.eth0.disable_ipv6每次要求启动或关闭网络时,这些代码都会动态更改。你的旅费可能会改变。

仅仅因为:

sysctl -a | grep ipv6
Run Code Online (Sandbox Code Playgroud)