我写信给你们是想询问你们是否遇到过与我类似的问题。
我在办公室使用 Mikrotik RB750UP。路由器管理 3 个不同的 WAN。我没有使用任何平衡或绑定此类线路,但我使用它们只是为了实现故障转移。
基本上,连接始终处于打开状态,并且当 WAN 出现故障时,将使用基于距离的路由规则在活动连接之间切换。
我需要强制执行的是以某种方式标记进入 WAN 的流量并让路由器从相同的 WAN 接口和 IP 发送回答复。
例如:我从外部设备向 WAN2_ip:port 发送请求。RB 已打开 WAN1(这也是可能的路由规则中的首选),并使用此连接发回答复(但答复并不正确)。
我尝试标记进入某个接口的连接,并用路由标记标记属于该连接的数据包。但似乎不起作用。
你有什么建议吗?
谢谢
答案1
我认为你对这些标记的看法是正确的。我已经有一段时间没用这个了,但我认为你需要为每个 WAN 链接使用单独的路由表。类似于记录的信息这里。
因此,例如,您可以为第一个 WAN 连接设置如下内容,并对每个附加 WAN 重复此操作。
(用适当的值替换/定义 ${wan...} 变量)
# Get/Assign WAN1 gateway interface/IP
wan1_interface=eth0
wan1_gateway_ip_address="$(ifconfig br0 | grep 'inet addr:' | cut -d ':' -f2 | cut -d ' ' -f1)"
# Create routing table for WAN1
ip route replace default via ${wan1_gateway_ip_address} dev ${wan1_interface} table 100
ip rule add fwmark 0x7 table 100
# Setup policy for marking WAN1 traffic
iptables -t mangle -N wan1_policy
iptables -t mangle -A wan1_policy -j MARK --set-mark 0x7
# Mark traffic coming in on WAN1 interface
iptables -t mangle -A PREROUTING -i ${wan1_interface} -j wan1_policy
如果这有点粗糙或不完整,我深表歉意。不幸的是,我的职业是 Windows 管理员。因此,我往往不会经常摆弄网络或 Linux/Unix 方面的东西,因此无法达到这个水平。但是,如果我能从我大脑的尘封角落回忆起任何更具体的信息,我会更新答案。:)
更新:我找到了一个我使用过的旧脚本,并用更准确的命令更新了上面的示例。我确实必须针对您的情况对其进行调整(我使用它们将流量引导至 VPN 连接),但我认为它们现在应该很好了。