自编译immortalwrt dns解析失败ping提示无法连接到端口
最近在折腾自编译的ImmortalWrt固件时,遇到个诡异的网络故障:明明能获取公网IP,网速测试却完全失效,DNS解析更是彻底罢工。这个问题困扰了我整整两天,各种常规解法都试遍了却毫无进展,最后竟靠一个网关跃点设置意外解决。下面记录下这次踩坑经历和解决方案,给遇到类似问题的朋友参考。
故障现象:网络断连
整个故障过程是这样的:
-
刚刷完自编译的ImmortalWrt固件时,网络功能完全正常,测速也能跑满带宽
-
安装
Lucky(DDNS工具)、vnStat(流量监控)后开始出现异常 -
即使卸载了这些软件并关闭所有网络加速功能,问题依然存在
-
核心症状:
-
DNS解析完全失败,
ping命令提示connect: Cannot assign requested address
-
测速服务器无法连接,但路由器本身能正常拨号获取IP
-
偶尔利用DNS缓存能短暂访问,刷新后立即失败
排查过程:无效的尝试
在Google和论坛疯狂搜索无果后,我尝试了以下方法均告失败:
# 检查过的配置项: 1. WAN/LAN接口设置自定义DNS(114.114.114.114, 8.8.8.8等) 2. dnsmasq.conf中添加server=/example.com/1.1.1.1等转发规则 3. 完全重置防火墙规则(默认未作特殊配置) 4. 卸载所有可疑软件:Lucky, vnStat等 5. 停用所有流量整形和加速模块 6. 清除DNS缓存:killall -HUP dnsmasq
⚠️ 诡异现象:路由器本身能ping通外网IP,但局域网内所有设备DNS解析失效,说明问题出在路由转发层而非物理连接。
终极解决方案:网关跃点设置
当几乎要放弃重刷固件时,偶然在接口配置中发现转机:
-
进入网络 → 接口 → LAN配置页面
-
切换到物理设置标签页
-
在覆盖网关跃点选项中填入
50(默认值通常为0) -
保存并应用配置,无需重启立即生效
原理解析:为什么跃点能解决问题?
这个神奇的操作背后有合理的网络原理:
-
当存在多个网络接口时,系统根据跃点数(metric)选择默认网关
-
自编译固件可能因驱动问题错误识别虚拟接口(如Docker网桥)
-
设置较高跃点值(如50)能确保主LAN接口获得更高路由优先级
-
避免流量被错误导向不存在的虚拟网关导致丢包
故障期间的route -n输出验证了这个猜测:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 172.17.0.1 0.0.0.0 UG 0 0 0 docker0 <-- 错误网关!
当所有常规网络排查手段失效时,不妨关注底层路由决策。网关跃点作为容易被忽视的基础设置,在复杂网络环境下可能成为关键故障点。建议编译第三方固件时:
-
首次配置就明确设置各接口跃点值
-
虚拟接口(Docker/VPN)设置比物理接口更高的跃点
-
用
ip route show table all定期检查路由表
折腾开源固件总会遇到各种玄学问题,但每次解决都能学到新知识。希望这个案例能帮你少走弯路!
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看