当前位置: 首页 > news >正文

openwrt路由器lan口莫名其妙断网的补丁式解决方案

在宿舍部署的基于PVE虚拟机方案的openwrt软路由一直以来都工作得十分正常。然而,这个学期开始的时候,我尝试开机,主板上的蜂鸣器发出长声嘀(没有间隔)。虽然根据联想知识库的说明来看应该是显卡和显示器未插好导致的,但是经过反复尝试无果后我选择换了张主板(B85->H81)。

  • 在H81台式机这个阶段,会出现openwrt时不时死机的bug,而且会顺带着宿主机一起死机,需要强制重启来解决。

后来,扔了台式机,换了HP 800g1 dm这个小主机。

  • 在小主机阶段,会出现lan口频繁断网的bug,并不会导致openwrt和宿主机死机,只需重新拔插小主机和ap之间的网线即可解决。

这两个阶段的问题,共同的表现是lan口的服务暂停,上网设备无法获取dhcp服务下发的ipv4地址:

18016dacb33b5e4bbc550153c6f48c2d

一般来说,遇到问题后应该去查看系统日志,然而我翻看了pve和openwrt的日志,均找不到相关日志,于是,就有了这篇博客的内容:用打补丁的方式临时解决一下这个问题。

网络环境

因为我是基于PVE的虚拟机方案,所以有必要先介绍一下我的网络环境,如下图所示:

image

经过实验,当ETH0接口(pve的lan口)掉ip(断网)的时候,需要拔插ETH0AP(ap的lan口)之间的网线,才能解决问题;但是由于这个现象十分频繁,一直手动拔插十分不现实,因此决定写脚本使得当pve的lan口断网时,自动重启lan口。

PVE操作

脚本

#!/bin/bash
#/usr/local/bin/net_watchdog.shTARGET="192.168.10.119" # 你的AP ipwhile true; do# 检测网络if ! ping -c 3 -W 2 $TARGET > /dev/null; thenecho "$(date) - Network down! Restarting..." >> /var/log/net_watchdog.logifdown nic0 && ifup nic0 # 或者你的重启网络命令sleep 20        # 重启后等待20秒,防止频繁抖动elsesleep 5         # 每5秒检测一次,降低CPU占用fi
done

添加执行权限

chmod +x /usr/local/bin/net_watchdog.sh

创建 Systemd 服务文件

#/etc/systemd/system/net-watchdog.service[Unit]
Description=Network Watchdog Service
After=network.target[Service]
Type=simple
ExecStart=/usr/local/bin/net_watchdog.sh
Restart=always
RestartSec=5[Install]
WantedBy=multi-user.target

启动并启用服务

systemctl daemon-reload
systemctl start net-watchdog
systemctl enable net-watchdog

搞定之后,就可以在/var/log/net_watchdog.log文件中查看lan口的重启信息了:

image

可以看到我这里重启得非常频繁……😭

附:openwrt脚本(如果你是openwrt实体机的话)

#!/bin/bashTARGET="192.168.10.119" # 替换成你的ap lan口ipif /bin/ping -c 3 -W 2 $TARGET > /dev/null; thenexit 0
elselogger "Network unreachable! Restarting LAN interface..."/sbin/ifup lansleep 10
fi

注意添加可执行权限。

可以通过openwrt自带的计划任务来启用脚本,比如:

crontab -e

添加以下内容:

* * * * * /bin/bash /root/check_net.sh >/dev/null 2>&1

重启openwrt,脚本激活时系统日志就会有类似如下的输出:

Sat Apr 25 18:11:00 2026 cron.err crond[10729]: USER root pid 16297 cmd /bin/bash /root/check_net.sh >/dev/null 2>&1
Sat Apr 25 18:11:04 2026 user.notice root: Network unreachable! Restarting LAN interface...
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Interface 'lan' is now down
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Registering new address record for fe80::be24:11ff:fe91:8b90 on br-lan.*.
Sat Apr 25 18:11:04 2026 daemon.notice ttyd[12083]: [2026/04/25 18:11:04:2047] N: rops_handle_POLLIN_netlink: DELADDR
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Withdrawing address record for 192.168.10.1 on br-lan.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Leaving mDNS multicast group on interface br-lan.IPv4 with address 192.168.10.1.
Sat Apr 25 18:11:04 2026 daemon.err odhcpd[3926]: Failed to send to ff02::1%lan@br-lan (Network unreachable)
Sat Apr 25 18:11:04 2026 daemon.notice ttyd[12083]: [2026/04/25 18:11:04:2064] N: rops_handle_POLLIN_netlink: DELADDR
Sat Apr 25 18:11:04 2026 daemon.notice ttyd[12083]: [2026/04/25 18:11:04:2065] N: rops_handle_POLLIN_netlink: DELADDR
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Interface br-lan.IPv4 no longer relevant for mDNS.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Interface br-lan.IPv6 no longer relevant for mDNS.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Leaving mDNS multicast group on interface br-lan.IPv6 with address fc00::1.
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.202900] br-lan: port 1(eth0) entered disabled state
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.205774] device eth0 left promiscuous mode
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.206924] br-lan: port 1(eth0) entered disabled state
Sat Apr 25 18:11:04 2026 user.warn mwan3-hotplug[16327]: hotplug called on lan before mwan3 has been set up
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Withdrawing address record for fe80::be24:11ff:fe91:8b90 on br-lan.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Withdrawing address record for fc00::1 on br-lan.
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Interface 'lan' is disabled
Sat Apr 25 18:11:04 2026 daemon.notice netifd: bridge 'br-lan' link is down
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Interface 'lan' has link connectivity loss
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Network device 'eth0' link is down
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.435162] 8021q: adding VLAN 0 to HW filter on device eth0
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.436686] br-lan: port 1(eth0) entered blocking state
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.437839] br-lan: port 1(eth0) entered disabled state
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.439124] device eth0 entered promiscuous mode
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.441441] br-lan: port 1(eth0) entered blocking state
Sat Apr 25 18:11:04 2026 kern.info kernel: [   84.442787] br-lan: port 1(eth0) entered forwarding state
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Interface 'lan' is enabled
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Interface 'lan' is setting up now
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Joining mDNS multicast group on interface br-lan.IPv4 with address 192.168.10.1.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: New relevant interface br-lan.IPv4 for mDNS.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Registering new address record for 192.168.10.1 on br-lan.IPv4.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Joining mDNS multicast group on interface br-lan.IPv6 with address fc00::1.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: New relevant interface br-lan.IPv6 for mDNS.
Sat Apr 25 18:11:04 2026 daemon.info avahi-daemon[4398]: Registering new address record for fc00::1 on br-lan.*.
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Interface 'lan' is now up
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Network device 'eth0' link is up
Sat Apr 25 18:11:04 2026 daemon.notice netifd: bridge 'br-lan' link is up
Sat Apr 25 18:11:04 2026 daemon.notice netifd: Interface 'lan' has link connectivity
Sat Apr 25 18:11:04 2026 user.warn mwan3-hotplug[16463]: hotplug called on lan before mwan3 has been set up
Sat Apr 25 18:11:04 2026 user.notice firewall: Reloading firewall due to ifup of lan (br-lan)
Sat Apr 25 18:11:06 2026 daemon.warn odhcpd[3926]: A default route is present but there is no public prefix on lan thus we don't announce a default route by overriding ra_lifetime!
Sat Apr 25 18:11:10 2026 user.notice nlbwmon: Reloading nlbwmon due to ifup of lan (br-lan)
Sat Apr 25 18:11:19 2026 daemon.warn odhcpd[3926]: A default route is present but there is no public prefix on lan thus we don't announce a default route by overriding ra_lifetime!
Sat Apr 25 18:11:22 2026 daemon.warn odhcpd[3926]: A default route is present but there is no public prefix on lan thus we don't announce a default route by overriding ra_lifetime!
Sat Apr 25 18:11:23 2026 daemon.warn odhcpd[3926]: A default route is present but there is no public prefix on lan thus we don't announce a default route by overriding ra_lifetime!
Sat Apr 25 18:11:27 2026 daemon.warn odhcpd[3926]: A default route is present but there is no public prefix on lan thus we don't announce a default route by overriding ra_lifetime!
Sat Apr 25 18:11:30 2026 daemon.err uhttpd[4067]: luci: accepted login on /admin for root from 192.168.10.81

整理时发现一个有趣的事:PVE下的ifup命令和openwrt下的ifup命令是不同的实现,前者只有当lan口未正常运行时才会启动lan口,后者几乎是强制重启lan口;因此PVE的重启lan口命令需要在前面加一个ifdown

http://www.jsqmd.com/news/700253/

相关文章:

  • Open XML SDK 完全指南:告别手动处理Office文档的烦恼
  • 西恩士行业黑马 液冷阀门清洁度污染物分析系统 - 工业设备研究社
  • LFM2.5-VL-1.6B惊艳案例:老旧文档扫描件OCR+结构化摘要生成效果对比
  • 2026雅思机构实测|零基础必看:多次元、新东方、新航道、环球怎么选 - 速递信息
  • mysql如何防止用户通过子查询窃取权限_MySQL安全参数设置
  • Qwen3.5-2B中小企业AI落地方案:低成本GPU算力适配图文智能客服
  • 全网都追捧的 Kaparthy LLM Wiki 我自己实现了一个
  • DeepSeek V4降AI痕迹完整流程,2026年4月7步走通 - 我要发一区
  • 华为OD机试真题 新系统 2026-04-19 C语言 实现【8位LED控制器】
  • keysight N9040B是德 UXA 频谱分析仪 2 Hz 至 50 GHz
  • 基于倒排索引的 Java 文档搜索引擎(三)
  • 短期备考雅思必看|1-3个月冲刺选机构实测:5家对比,多次元凭什么稳赢 - 速递信息
  • Xiaomi MiMo-V2.5 系列大模型开启公测
  • Hydra:面向超级个体的分布式操作系统基座设计与实战
  • 028、工程化进阶:容错、重试与降级策略
  • JavaScript 循环机制深度解析
  • 是德科技Keysight(Agilent) N9030A PXA 信号分析仪
  • 知识库上线后检索静默失效:一次从监控盲区到分层治理的RAG故障复盘
  • 汉字转拼音工具,即输即转可多格式导出
  • 高效实现分组内跨行时间戳匹配:为每组生成布尔标记列 user_rejects
  • VSCode 2026车载调试爆发式升级:5大原生支持新特性(Adaptive AUTOSAR调试器、UDS over DoIP直连、时间敏感网络TSN时序可视化)你还没用?
  • prettier代码格式化
  • 终极游戏光标自定义工具:YoloMouse让你的鼠标指针在游戏中脱颖而出!
  • 第21章信息物理系统分析与设计
  • 液冷阀门清洁度检测设备 西恩士液冷部件源头生产厂商 - 工业设备研究社
  • Keras上采样与转置卷积:核心差异与实战应用
  • (课堂笔记)Oracle 常用函数:数值、字符串、日期处理
  • CUDA 13.3正式版发布前夜必读:AI框架厂商未公开的3大ABI断裂点(含TensorRT-10.3/ONNX Runtime 1.18兼容性矩阵速查表)
  • HeteroFlow完成主流国产GPU适配,打破国外技术垄断助力算力生态建设
  • Power BI学习笔记第10篇:实战案例 — 销售数据分析仪表板