家里装了两条宽带,一条是电信,一条是联通。平时用电信上网,但看视频时发现联通的线路更流畅。每次手动改网关地址太麻烦,后来干脆配了个支持动态网关设置的路由器,问题一下子解决了。
什么是动态网关设置
简单说,就是让设备能根据网络状况或规则,自动切换默认网关。不像传统设置里只能写死一个网关地址,动态设置可以根据策略变通。比如按时间段、目标地址,甚至当前网络延迟来决定走哪条路。
像我这种多宽带接入的场景,特别实用。白天工作用电信线路传文件,晚上追剧自动切到联通线路看4K视频,不用动一根线。
实际配置示例
我家用的是 OpenWrt 系统的路由器,支持通过策略路由实现动态网关。先在系统里添加两条默认路由,分别指向两个运营商的网关:
ip route add default via 192.168.1.1 dev eth0 table 100
ip route add default via 192.168.2.1 dev eth1 table 200
然后设置规则,让特定流量走不同表:
ip rule add from 192.168.1.100 lookup 100
ip rule add to 114.114.114.114 lookup 200
上面第一行意思是来自 IP 为 192.168.1.100 的设备走电信线路,第二行是访问 114.114.114.114(DNS)时强制走联通,避免某些 CDN 解析不准。
结合监控脚本更智能
光静态分配还不够。我写了个小脚本,每分钟 ping 一次常用网站,检测延迟和丢包率。一旦发现当前线路连续三次超时,就自动把默认路由切到备用线路。
#!/bin/sh
GATEWAY_A=192.168.1.1
GATEWAY_B=192.168.2.1
CURRENT=$(ip route | grep '^default' | awk '{print $3}')
if ! ping -c 3 -W 1 www.baidu.com > /dev/null; then
if [ "$CURRENT" = "$GATEWAY_A" ]; then
ip route replace default via $GATEWAY_B
else
ip route replace default via $GATEWAY_A
fi
fi
这个脚本跑在路由器后台,配合 cron 每分钟执行一次。虽然不能秒级切换,但对日常使用完全够用。
现在家里的智能电视、手机、电脑都不用手动设置,谁需要稳定就指定走哪条线,其他人照常使用。偶尔电信抽风,刷网页卡顿,过一分钟再试就好了,根本感觉不到切换过程。
如果你也有多条宽带,或者对网络质量有不同需求,动态网关设置确实值得一试。不用换硬件,只要改改配置,就能让网络更懂你。”}