我已连接到我的 edgerouter x 5 端口、2 个 WAN(WAN1 到 eth0,WAN2 到 eth1 处于故障转移状态)
问题:WAN1 有 10 Mbps,WAN2 故障转移有 8 Mbps。当 WAN1 掉线但速度不够时(例如:1 或 0.5 Mpbs),WAN2 故障转移不会进入。
我想要的是,当 WAN1 下降到 XX Mbps 时,WAN2 进入故障转移模式,当超过 XX Mbps 时返回到 WAN1,恢复时间为 XX 分钟
其中 XX 是我手动确定的值
我的边缘路由器 x:
我在 ubiquiti 用户手册中没有找到此路由器的信息这里,这里或者这里
我很感谢你的帮助。
附言:如果这不是提出这个问题的合适论坛,我深表歉意。我在 stackexchange 上搜索过,但没有找到任何硬件来发布这个问题
答案1
以太网以 2Mbps 的速度运行是不存在的。如果您有其他可靠获取带宽报告的方法(例如 DSL 或 3G 调制解调器状态页面),则可以将此检查合并到 bash 脚本中,将其保存在某个位置,/config/scripts
以便它可以在固件升级后继续存在,然后在负载平衡节中调用它,如下例所示。
在此示例中,WAN2 已打开eth2
并且是备份,而 WAN1 已打开eth1
并且是主链路。您还需要创建路由表 10 和 20,每个路由表都使用适当的默认值,并在防火墙修改规则中引用它们:
load-balance {
group WAN2 {
exclude-local-dns disable
flush-on-active disable
gateway-update-interval 20
interface eth1 {
failover-only
route {
table 10
}
route-test {
initial-delay 180
interval 60
type {
script /config/scripts/pinger
}
}
}
interface eth2 {
route {
table 20
}
route-test {
initial-delay 180
interval 60
type {
script /config/scripts/pinger
}
}
}
lb-local disable
lb-local-metric-change disable
}
group WAN1 {
exclude-local-dns disable
flush-on-active disable
gateway-update-interval 20
interface eth1 {
route {
table 10
}
route-test {
initial-delay 180
interval 60
type {
script /config/scripts/pinger
}
}
}
interface eth2 {
failover-only
route {
table 20
}
route-test {
initial-delay 180
interval 60
type {
script /config/scripts/pinger
}
}
}
lb-local disable
lb-local-metric-change disable
}
}
该脚本通过三个参数调用:
#!/bin/bash
targets=(
'192.168.10.1'
'192.168.20.1'
'192.168.30.1' )
if [ $# != 3 ]
then
echo "Usages: $0 <group> <intf> <status>"
exit 1
fi
group=$1
intf=$2
status=$3
for host in "${targets[@]}"
do
/bin/ping -n -c 1 -W 1 -w1 -I $intf $host
if [ $? == 0 ]
then
exit 0
fi
done
# fail
exit 1
该脚本在启动时通过 EdgeOS 提供的接口使用 ping 检查三个上行链路主机的可用性,0
如果至少有一个主机响应则返回 (ok),1
如果没有主机响应则返回 (failure)。
您可以使用相同的方法来实现一些逻辑,以便当$intf
根据您的检查具有良好状态时,返回0
,exit 0
否则1
返回exit 1
。