分配给networking接口的IPv4和IPv6地址之间的行为有所不同:链路断开时,与“ip link set down dev eth0”一样,IPv4地址被保留,但IPv6地址被刷新。 如果链接重新启动,则可以立即使用IPv4地址来传递stream量,但必须分配IPv6地址。
这是一个错误,或通过devise? 如果通过devise,我在哪里可以find明确的logging?
一位同事认为这是一个错误,要在即将到来的内核中修复; 另一个则认为这是由devise决定的,因为IPv6假定了dynamic寻址。 我在几个不同的Linux发行版和不同的内核版本中发现了相同的行为,所以我几乎可以肯定这是通过devise,但是我想find文档,就像在RFC中引用来解决这个问题。
如果有一个解决办法强制保留手动分配的IPv6地址,那么这一点很有用。
这听起来像你正在寻找的设置是在Linux 4.6中引入的keep_addr_on_down 。 引用文档/ networking / ip-sysctl.txt :
keep_addr_on_down - INTEGER Keep all IPv6 addresses on an interface down event. If set static global addresses with no expiration time are not flushed. >0 : enabled 0 : system default <0 : disabled Default: 0 (addresses are removed)
如果您使用的是比4.6更早的Linux版本,我build议的最佳解决方法是将地址分配给一个dummy接口,即使物理接口被closures,您仍然可以继续使用该接口:
modprobe dummy ip -6 addr add dev dummy0 2001:db8::42/128