本页目录

网络故障恢复手册

适用拓扑 v2.1(N100 旁路由 + CN-IP 防火墙旁路)。本文按严重程度排布 5 类故障场景,每类给出现象、自动恢复机制和手动干预步骤,末尾附回滚方案。告警覆盖见 monitoring.md——Grafana + Bark 的 13 条规则负责在故障发生时推送到 iPhone。

风险评估总表

#风险严重度自动缓解残余风险
1mihomo/AdGuard 进程挂🔴→🟢N100 fail-open daemon,30s 自动切直连30s 检测窗口
2N100 停电🔴→🟢BIOS 通电自启,全组件自启,~2min 恢复开机期间无代理
3N100 OS 死(kernel panic/磁盘故障)🟡无,手动切 DHCP 网关→.1概率极低,但有单点
4li-home-0 WiFi 断🔴→🟢wifi-watchdog 分层自愈(重连→射频→驱动重载)~25s 断网
5小米主路由挂🔴PPPoE/NAT/DHCP/Mesh 全系于一身,暂无热备

场景 1:N100 mihomo/AdGuard 进程挂

自动行为⁠:fail-open daemon(procd)每 60s 探测 mihomo API :9090,连续 3 次失败→删 table inet nikki+注入 table inet failopen→全屋切直连。mihomo 恢复后自动切回。

手动干预⁠(daemon 也挂了时):

ssh root@192.168.31.7

# 手动 fail-open
nft delete table inet nikki
nft add table inet failopen
nft add chain inet failopen srcnat '{ type nat hook postrouting priority srcnat - 1; policy accept; }'
nft add rule inet failopen srcnat ip saddr 192.168.31.0/24 ip daddr != 192.168.31.0/24 masquerade
nft add chain inet failopen dns '{ type nat hook prerouting priority dstnat - 1; policy accept; }'
nft add rule inet failopen dns ip daddr 192.168.31.7 udp dport 53 dnat to 192.168.31.1:53

# 恢复后
nft delete table inet failopen
/etc/init.d/nikki restart

table inet bypass_masq 无需处理——独立于 nikki/failopen,fail-open 时它的发夹弯 SNAT 只是冗余、不冲突。nikki 重启后 china_ip 自动重填。

场景 2:N100 停电

自动行为⁠:来电→BIOS 通电自启→开机链:S99nikki(TUN+透明代理)→S99nikki-failopen(60s grace)→docker adguardhome(unless-stopped)。约 2 分钟恢复,无需人工介入。

场景 3:N100 OS 死(kernel panic/磁盘故障)

现象⁠:ping 192.168.31.7 不通且长时间不恢复。区别于停电——N100 有通电自启,不通超过 3 分钟说明 OS 崩溃或硬件故障。

手动恢复⁠:

  1. 浏览器打开 http://192.168.31.1/→登录小米后台
  2. 常用设置→局域网设置→网关/DNS 从 .7 改为 .1
  3. 保存,等客户端续租或重启客户端

N100 恢复后⁠:确认启动完成(2min)→小米后台改回网关/DNS→.7

场景 4:li-home-0 WiFi 断

自动行为⁠:wifi-watchdog(systemd timer,每 30s ping .1),分层升级恢复:

连续失败动作耗时
1–3nmcli connection down/up(重连)~10s
4–6nmcli radio off/on + rfkill(射频层)~20s
7+modprobe -r mt7925e → modprobe(驱动重载)~25s

恢复后计数器归零。日志:journalctl -u wifi-watchdog.service

手动恢复⁠(watchdog 不生效时):

sudo nmcli radio wifi off && sleep 2 && sudo nmcli radio wifi on
# 或驱动重载
sudo modprobe -r mt7925e && sudo modprobe mt7925e

长期⁠:将 DERP/rathole 等高可用服务迁到有线 N100,解除 WiFi 单点依赖。

场景 5:主路由挂

ping 192.168.31.1
# 不通 → 检查电源/指示灯
# 通但无外网 → 路由器后台检查 PPPoE 拨号状态

PPPoE/NAT/DHCP/Mesh root 全系于一台小米路由器,无热备。这是全屋网络最大的单点风险——目前唯一的缓解是光猫桥接无双重 NAT,主路由挂了至少不丢光猫配置。

回滚方案

N100 旁路由整体出问题时,退回到直连或旧旁路由:

  1. 主路由 DHCP 网关/DNS 改回 .1(直连)或 .8(li-home-0 旧旁路由)
  2. 如需恢复 li-home-0 旁路由:sudo systemctl start mihomo
  3. N100 关机:ssh root@192.168.31.7 poweroff

相关文档