You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于使用Wireshark排查IPv6 DNS服务器配置及客户端异常DNS设置来源的技术咨询

使用Wireshark排查IPv6 DNS服务器配置及客户端异常DNS设置来源的技术咨询

针对你提出的问题,结合你后续的排查更新,咱们一步步理清楚整个问题的来龙去脉和解决方向:

一、追踪IPv6 DNS服务器通告的正确Wireshark过滤器

要精准捕获带有IPv6 DNS服务器信息的包,得分两种场景选择过滤器:

  • 如果是通过Router Advertisement(RA)包中的RDNSS(递归DNS服务器)选项传递的,用过滤器 icmpv6.opt.rdnss 最精准——它直接定位包含RDNSS配置的RA包,比你最初用的icmpv6.type == 134更高效(后者只是过滤所有RA包,不管有没有DNS配置)。
  • 如果是通过DHCPv6传递的,直接用 dhcpv6 过滤器即可;要同时覆盖两种场景,组合过滤器就是 icmpv6.opt.rdnss || dhcpv6

二、你的问题根源分析

从你的排查过程来看,最初你以为问题出在RA的RDNSS选项上,禁用路由器的RDNSS配置后,客户端依然偶尔会用路由器的DNS。后来通过抓包你终于发现了核心问题:DHCPv6响应竞争

当客户端发送DHCPv6请求时,你的TP-Link路由器和PiHole都会返回带有各自DNS地址的响应,而客户端会优先采用先收到的那个响应里的配置——这就是典型的DHCP race问题,也是为什么你明明禁用了RA的RDNSS,客户端还是会时不时切换到路由器DNS的原因。

三、可行的解决方向

鉴于你提到TP-Link路由器无法完全禁用DHCPv6,可以试试这些办法:

  • 优化PiHole的响应速度:把PiHole部署在离客户端更近的网络节点,或者调整PiHole所在设备的网络优先级,让它的DHCPv6响应比路由器更快。
  • 客户端侧锁定配置:在Windows/macOS客户端上手动指定IPv6 DNS服务器为PiHole的地址,绕过自动获取逻辑(虽然需要逐个配置,但能快速解决单设备的问题)。
  • 深挖路由器配置:有些TP-Link机型的DHCPv6开关可能藏在「高级设置」或「IPv6设置」的子菜单里,比如关闭DHCPv6服务器功能,只保留RA的无状态配置(如果机型支持的话)。

补充你自己的关键发现:你通过抓包确认了路由器和PiHole都在响应DHCPv6请求,这直接戳中了问题核心——很多路由器默认会开启DHCPv6服务器,即使你关闭了RA里的RDNSS选项,它依然会通过DHCPv6推送DNS配置。

备注:内容来源于stack exchange,提问作者dunxd

火山引擎 最新活动