IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

解决 IPv6 路由发现协议得到错误地址的问题

林健的BLOG 2010-01-18 12:15:55 累计浏览 3,765 次
本机暂存

      IPv6 环境一般使用 DHCPv6ICMPv6 协议自动配置网络参数,网关配置错误或多个网关的存在会导致客户端得到错误或冲突的配置参数。最近在我使用的 IPv6 环境中,就出现了网关同时给一个客户端分配多组 IPv6 地址、两个 IPv6 路由的问题,这使得路由发生混乱,IPv6 网络无法连通。由于种种原因,网管一直未能解决此问题,我们只好试图在客户端动动脑筋。

      按照 IPv4 的经验,如果 DHCP 有问题,直接手工配置静态地址即可。但我们的环境中,即使手工配置了静态的 IPv6 地址和路由,发现没过多久又会恢复原状。看来还是有一定的自动配置机制在作祟。经搜索得知,这是 ICMPv6 的路由发现(Router Discovery)特性,系统会根据其收到的 ICMPv6 包自动修改 IPv6 配置。下面要做的就是过滤与路由发现相关的包。

      在 Linux 下,可以使用 ip6tables(即 iptables 的 IPv6 版本)过滤相应的 ICMPv6 包:

/sbin/ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -j DROP

      可以将上述命令加入 /etc/rc.local。或使用 ip6tables-save 导出到文件,在启动网络前使用 ip6tables-restore 恢复。

      在 Windows Vista/7 或 Windows Server 2008 以后的版本,可以使用这条命令:

netsh interface ipv6 set interface "[你的网卡名称,比如 Local Area Connection]" routerdiscovery=disable

      执行一次之后持久生效,重启后不用再次执行。

      而在 Windows XP 下,目前还没有发现很好的办法。XP 对 IPv6 的支持仅仅是一个“预发行版”,实现并不完善。手工配置 IPv6 地址和路由只能使用“ipv6 adu”、“ipv6 rtu”命令,而没有图形界面支持;虽然 XP SP2 以后 Windows 防火墙加入了 IPv6 支持,但仍不支持 ICMPv6。我没有查到 XP 下屏蔽路由发现协议的标准方法,目前可行的办法是使用支持 ICMPv6 的第三方防火墙软件,比如 ZONEALARM Internet Security 8 以上版本。

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 计算机网络协议包头赏析-IP (累计阅读 6,006)
  2. accept_ra 的一个例子 (累计阅读 5,666)
  3. debian开启与关闭IPV6 (累计阅读 4,262)
  4. IPv6和IPv4的掩码区别 (累计阅读 4,003)
  5. 开源世界中的算法与数据结构 3 -- Linux IPv6 FIB表实现 (累计阅读 3,280)
  6. Debian 下关闭ipv6 (累计阅读 3,229)
  7. 使用无线自组网共享互联网接入 (累计阅读 2,468)
  8. KVM 中搭建 VLAN 和 IPv6 环境 (累计阅读 2,425)
  9. 一个 Windows 对时小工具 (累计阅读 1,852)
  10. DNSv6和DNS64简单配置 (累计阅读 1,737)