RouterOS 双线自动切换实战:一条断了另一条顶上
家里拉了电信和联通两条宽带,最怕的就是某条线悄悄断了却浑然不知,游戏掉线、下载中断全来了。这篇记录我在 RouterOS 上用 Netwatch 配合路由距离实现双线自动切换的完整过程,包括探测脚本、路由优先级配置和切换后的回切策略,并总结了几个容易忽略的坑,适合有多线接入的朋友参考。
# 一、需求
两条宽带一主一备,主线的要求是**断了自动切到备用,恢复了自动切回**。手动拨号切换太痛苦,用 RouterOS 的 Netwatch + 路由 distance 就能自动化。
# 二、原理
核心思路:给两条线各配一条默认路由,主线的 `distance` 更小(优先级更高);用 Netwatch 定时探测主线对端,探测失败就把主线路由**禁用或改大 distance**,流量自然走备用线。
# 三、配置步骤
## 1. 两条默认路由
```routeros
/ip route add gateway=pppoe-out1 distance=1 comment="主电信"
/ip route add gateway=192.168.2.1 distance=2 comment="备联通"
```
## 2. Netwatch 探测主线
选定一个稳定的公网目标做探测(如运营商 DNS):
```routeros
/tool netwatch add host=202.96.128.86 interval=10s ""\
down-script="/ip route disable [find comment=主电信]" \
up-script="/ip route enable [find comment=主电信]"
```
探测间隔建议 10 秒,太短会误判抖动,太长切换不及时。
## 3. 切换后的连接清理
切换完最好清一下连接跟踪,让已有连接快速重建:
```routeros
/ip firewall connection remove [find]
```
# 四、几个容易踩的坑
1. **探测目标要选稳的**——别用自己家出口做探测,主线一断探测也跟着断,脚本判断会乱;
2. **别忘记回切**——只写 down-script 不写 up-script,断了就永远回不来,白瞎了主线;
3. **distance 要拉开差距**——两条都设 1 会形成等价路由,可能随机走线;
4. **PPPoE 断线要配合检测**——接口 down 和线路质量差是两回事,建议再加一条 `check-gateway=ping`;
5. **DNS 也要切**——切线路后如果 DNS 还指向旧线路的内网 DNS,照样解析不了。
# 五、验证与备忘
测试方法:拔掉主线网线,观察 `/ip route print` 中主线变 disabled、流量是否切到备用;插回后确认自动恢复。把配置导出 `.rsc` 备份,这套方案稳定跑了大半年,很少出问题。