内网被运营商非法 dhcp 服务器干扰大概找到原因了
RoyCho:
我家宽带五六年前刚装的时候,就偶尔出现奇怪的 DHCP 干扰:电脑会检测到一个名称为 3g 的 DHCP 服务器,租约长达 365 天,服务器地址是 192.168.1.254 。 这个 DHCP 服务器地址跟名称看起来不像普通家用设备,也 ping 不通,但会影响内网设备的正常 DHCP 分配。
当时我开启 OpenWrt 的 强制 DHCP 服务器 功能后,情况改善了很多,但偶尔仍会被干扰。多年下来,家里的 NAS 、交换机、光猫、AP 都陆续升级过,但问题依然偶尔出现。
于是我开始怀疑干扰源可能在光猫之外。通过排查发现:
首先我家没有 192.168.1.x 的内网网段,192.168.1.254 无法 ping 通,但同一网段的其他 IP 可以 ping 通。
Traceroute 显示访问 192.168.1.x 网段需要经过两个运营商的公网 IP 。
这让我怀疑干扰源很可能是 运营商设备。进一步排查发现,OpenWrt 默认防火墙中有一条 Allow-DHCP-Renew 规则,这条规则会允许 DHCP 报文透传到内网。
在 PPPoE 拨号的情况下,其实根本不需要这条规则。如果运营商存在非法 DHCP 服务器,这条规则就会让干扰 DHCP 直接透传到内网。
我关闭了这条规则后,内网 DHCP 干扰暂时消失。 初步判断,这可能就是多年来偶尔遇到的“神秘 DHCP 干扰”的根源。 我会继续观察,如果情况稳定,也可以作为给同样使用 OpenWrt + PPPoE 用户的经验分享。