linux – 为什么在链路断开时刷新IPv6地址?

分配给网络接口的IPv4和IPv6地址之间的行为存在差异:当链路断开时,与“ip link set down dev eth0”一样,IPv4地址将被保留,但IPv6地址将被刷新.如果再次启动链接,则可以立即使用IPv4地址传递流量,但必须分配IPv6地址.

这是一个错误,还是设计?如果按设计,我在哪里可以找到明确记录的内容?

一位同事认为这是一个错误,需要在即将到来的内核中修复;另一个人认为它是设计的,因为IPv6假定动态寻址.我在几个不同的Linux发行版和不同的内核版本中发现了相同的行为,所以我几乎可以肯定这是设计的,但我想找到文档,就像在RFC的引用中一样,来解决这个问题.

如果有一种解决方法会强制保留手动分配的IPv6地址,那么这也是有用的.

解决方法

听起来你正在寻找的设置是在Linux 4.6中引入的keep_addr_on_down.引用 Documentation/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版本,我建议的最佳解决方法是将地址分配给虚拟接口,即使物理接口关闭,您仍然可以跟上它:

modprobe dummy
ip -6 addr add dev dummy0 2001:db8::42/128

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format=&#39;{{.LogPath}}&#39; &lt;container_name&gt; 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户