






















来源 https://mp.weixin.qq.com/s/yzkPizj3qJBK6AVGBjBAQw
routeros 设备:RB750GR3
系统版本:7.22
内网:10.10.10.0/24
需求:双WAN口,WAN1:4G/5G WAN2:Starlink ,因为Starlink速度比较快,局域网优先使用WAN2,如果WAN2线路断开,或者没有互联网服务,则切换到WAN1。当WAN2链路恢复,则线路自动切会WAN2。
以下配置满足「Starlink(WAN2)为主优先使用,故障自动切 4G/5G(WAN1),恢复自动回切」的需求,全程适配 DHCP 动态网关,支持外网连通性检测(避免仅网关通但外网断的假在线问题)。
先确认物理连接:
ether1 接 4G/5G CPE,命名为WAN1_4G
ether2 接 Starlink PoE 适配器 LAN 口,命名为WAN2_Starlink
ether3~ether5 接内网设备 / 交换机,加入默认 LAN 桥bridge
内网网段10.10.10.0/24,网关10.10.10.1(已配置可跳过基础部分)
第一步:基础接口与 IP 配置
# 重命名WAN口/interface/ethernet/set ether1 name=WAN1_4G/interface/ethernet/set ether2 name=WAN2_Starlink# 确认ether3-5加入LAN桥(默认已加入,缺失则执行)/interface/bridge/port/add bridge=bridge interface=ether3/interface/bridge/port/add bridge=bridge interface=ether4/interface/bridge/port/add bridge=bridge interface=ether5
# 配置内网网关/ip/address/add address=10.10.10.1/24 interface=bridge comment="内网网关"# 配置内网地址池/ip/pool/add name=dhcp_pool ranges=10.10.10.100-10.10.10.200# 配置内网DHCP服务器/ip/dhcp-server/add address-pool=dhcp_pool interface=bridge name=dhcp_lan disabled=no/ip/dhcp-server/network/add address=10.10.10.0/24 gateway=10.10.10.1 dns-server=10.10.10.1
关键:关闭自动添加默认路由和自动获取 ISP DNS,避免干扰自定义路由
# WAN1 4G DHCP客户端/ip/dhcp-client/add interface=WAN1_4G add-default-route=no use-peer-dns=no use-peer-ntp=no comment="4G WAN DHCP客户端"# WAN2 Starlink DHCP客户端/ip/dhcp-client/add interface=WAN2_Starlink add-default-route=no use-peer-dns=no use-peer-ntp=no comment="Starlink WAN DHCP客户端"
执行后用/ip/dhcp-client/print确认两个 WAN 状态为bound,已获取 IP 和网关。
/ip/dns/set servers=1.1.1.1,223.5.5.5 allow-remote-requests=yes
/ip/firewall/nat/add chain=srcnat out-interface=WAN1_4G action=masquerade comment="4G WAN源NAT"/ip/firewall/nat/add chain=srcnat out-interface=WAN2_Starlink action=masquerade comment="Starlink WAN源NAT"
2.2 基础安全过滤规则(可选,建议配置)
# 清空默认规则(新设备执行,已有规则可自行调整去除#)# /ip/firewall/filter/remove [find]# 允许已建立的连接/ip/firewall/filter/add chain=input action=accept connection-state=established,related,untracked/ip/firewall/filter/add chain=forward action=accept connection-state=established,related,untracked# 允许内网访问路由和外网/ip/firewall/filter/add chain=input action=accept in-interface=bridge/ip/firewall/filter/add chain=forward action=accept in-interface=bridge# 拒绝其他所有入站/转发,防止WAN侧攻击/ip/firewall/filter/add chain=input action=drop/ip/firewall/filter/add chain=forward action=drop
默认 FastTrack 会加速现有连接,导致切换 WAN 时已有连接延迟切换,建议禁用:
/ip/firewall/filter/disable [find action=fasttrack-connection]
我们用8.8.8.8作为检测目标,强制检测流量仅走 WAN2,确保检测结果真实反映 Starlink 的外网连通性(哪怕 Starlink 网关能通但卫星断网也能检测到)。
/ip/route/table/add name=check_wan2 fib comment="Starlink检测专用路由表"
/ip/route/add dst-address=0.0.0.0/0 gateway=192.168.100.1 table=check_wan2 comment="检测路由表默认网关(Starlink)"# 此处192.168.100.1是Starlink默认网关,后续DHCP脚本会自动更新,无需手动修改
/ip/firewall/mangle/add chain=output dst-address=8.8.8.8 protocol=icmp action=mark-routing new-routing-mark=check_wan2 comment="强制8.8.8.8检测流量走Starlink"
如果运营商禁 ICMP ping,可改用 TCP 检测:将 Netwatch 类型改为 TCP + 端口,同时把上述规则的protocol=icmp改为protocol=tcp dst-port=443即可。
因为 WAN 口是 DHCP 获取地址,网关可能变动,所以给 DHCP 客户端加脚本,自动同步网关到自定义路由。
Winbox 操作:打开IP > DHCP Client,双击 Starlink 对应的条目,切换到Script标签,粘贴以下脚本:
:local newgw $"gateway-address":if ($newgw != "") do={# 同步主路由网关/ip/route/set [find comment="主路由 Starlink"] gateway=$newgw# 同步检测路由表网关/ip/route/set [find comment="检测路由表默认网关(Starlink)"] gateway=$newgw:log info "Starlink网关更新为: $newgw"}
同样打开 4G 对应的 DHCP 客户端,粘贴以下脚本:
:local newgw $"gateway-address":if ($newgw != "") do={# 同步备路由网关/ip/route/set [find comment="备路由 4G"] gateway=$newgw:log info "4G网关更新为: $newgw"}
手动添加两条默认路由,自主控制优先级:
# 主路由:Starlink,优先级更高(distance越小优先级越高)/ip/route/add dst-address=0.0.0.0/0 gateway=192.168.100.1 distance=1 comment="主路由 Starlink"# 备路由:4G,优先级更低/ip/route/add dst-address=0.0.0.0/0 gateway=192.168.8.1 distance=2 comment="备路由 4G"# 此处网关初始值无需修改,DHCP脚本会自动更新为正确值
Netwatch 监控8.8.8.8的连通性,故障时自动禁用主路由,恢复时自动启用主路由。
/tool/netwatch/add host=8.8.8.8 interval=5s timeout=2s down-count=3 up-count=2 comment="监控Starlink连通性"
参数说明(可按需调整):
interval=5s:每 5 秒检测一次
timeout=2s:ping 超时 2 秒算失败
down-count=3:连续 3 次失败(累计 15 秒)才判定为 Starlink 故障,避免误切
up-count=2:连续 2 次成功才判定为恢复,避免抖动
Winbox 打开Tools > Netwatch,双击刚才添加的规则,切换到Down标签,粘贴:
# 禁用Starlink主路由,让4G备路由生效/ip/route/disable [find comment="主路由 Starlink"]# 可选:清理连接表,所有连接立即走备路由(会断现有连接,不需要可删除)/ip/firewall/connection/remove [find]:log warning "Starlink故障,已切换到4G备份链路"
切换到Up标签,粘贴:
# 启用Starlink主路由,恢复更高优先级/ip/route/enable [find comment="主路由 Starlink"]# 可选:清理连接表,所有连接立即切回主路由(会断现有连接,不需要可删除)/ip/firewall/connection/remove [find]:log info "Starlink恢复,已切回主链路"
正常状态验证:执行/ip/route/print,看到主路由 Starlink前有A(激活)标志,traceroute 1.1.1.1第一跳为 Starlink 网关,说明走主链路。
故障切换测试:拔掉 Starlink 网线 / 断电,等待 15 秒左右,查看日志/log/print会提示切换到 4G,路由表中备路由 4G变为激活状态,测试上网正常。
恢复回切测试:恢复 Starlink 连接,等待 Starlink 上线后 10 秒左右,日志提示切回主链路,路由表主路由恢复激活。
Starlink 为桥接模式 / PPPoE 拨号:将 WAN2 的 DHCP 客户端改为 PPPoE 客户端,同样关闭add-default-route和use-peer-dns,PPPoE 脚本中获取网关的变量改为$"remote-address"即可。
检测 IP 不可用:可将检测 IP 改为223.5.5.5/114.114.114.114等公共 IP,同步修改 Mangle 规则和 Netwatch 的目标 IP 即可。
需要更短切换时间:可将interval改为 2s,down-count改为 5,实现 10 秒内切换,但不建议间隔太短,避免丢包误切。
========= End
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。