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


12

好像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连接的接口,而没有电缆插入到我静态设置的接口中。在星期一之前无法验证,但我猜想如果没有链接,内核不会将链接本地地址分配给接口。


2
两者之间都没有任何关系。
迈克尔·汉普顿

2
我明白那个。但是,由于运行dhclient,您会得到一个IPv6LL地址,但是当您设置一个静态IPv4地址时却没有。因此,由dhclient运行的某些命令的某些副作用将其设置为..
Aaron

1
不,您没有从运行dhclient的IPv6链接本地地址。
迈克尔·汉普顿

Answers:


7

链接本地地址是从设备的MAC地址派生的。它们是界面自动生成的一部分。自动配置包括发现过程,以确保该地址在网络上是唯一的。

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

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


1
“它们是在生成界面时自动生成的”。是的,这就是我要寻找的,谁在自动生成?当您分配静态IPv4地址时,它不会自动生成,但在dhclient运行时会自动生成。那么dhclient是否实现RFC 4862,还是dhclient-script中某些命令的副作用?如何在不编写自己的RFC 4862实现的情况下在静态接口上复制它?
亚伦

似乎是由内核自动生成的,请参见上面的编辑。
亚伦

6

找到了!该命令是不够的:

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

顺便说一下,我不明白为什么我的发行版会翻转disable_ipv6:一旦链接断开,它的确会有所不同。
MarcH 2015年

这完全适用于Ubuntu 16.04。谢谢。
Cbhihe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.