如何在 edgerouter x 5 端口中配置故障转移?

如何在 edgerouter x 5 端口中配置故障转移?

我已连接到我的 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根据您的检查具有良好状态时,返回0exit 0否则1返回exit 1

相关内容