---
title: 网络故障恢复手册
url: https://doc.liz6.com/homelab/network-recovery
locale: zh
area: homelab
tags:
- homelab
date: 2026-07-01
modified: 2026-07-01
description: 适用拓扑 v2.1(N100 旁路由 + CN-IP 防火墙旁路)。本文按严重程度排布 5 类故障场景,每类给出现象、自动恢复机制和手动干预步骤,末尾附回滚方案。告警覆盖见 monitoring.md——Grafana + Bark 的 13 条规则负责在故障发生时推送到 iPhone。
---

# 网络故障恢复手册

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

## 风险评估总表

| # | 风险 | 严重度 | 自动缓解 | 残余风险 |
|---|------|--------|----------|----------|
| 1 | mihomo/AdGuard 进程挂 | 🔴→🟢 | N100 fail-open daemon,30s 自动切直连 | 30s 检测窗口 |
| 2 | N100 停电 | 🔴→🟢 | BIOS 通电自启,全组件自启,~2min 恢复 | 开机期间无代理 |
| 3 | N100 OS 死(kernel panic/磁盘故障) | 🟡 | 无,手动切 DHCP 网关→.1 | 概率极低,但有单点 |
| 4 | li-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 也挂了时):

```bash
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–3 | `nmcli connection down/up`(重连) | ~10s |
| 4–6 | `nmcli radio off/on` + rfkill(射频层) | ~20s |
| 7+ | `modprobe -r mt7925e → modprobe`(驱动重载) | ~25s |

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

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

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

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

## 场景 5:主路由挂

```bash
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`

## 相关文档

- [network-architecture.md](network-architecture.md) — 完整拓扑与 nftables 结构
- [rathole-tunnel.md](rathole-tunnel.md) — 隧道方案与故障治理
- [monitoring.md](monitoring.md) — 监控告警(Bark,iPhone 推送)
