我正在尝试在具有两个网关的 linux 路由器上对来自内部 LAN 的流量进行负载平衡。最初我选择了 iproute 实现,它没有按预期平衡负载,原因是路由被缓存。
现在我使用 iptables 使用 CONNMARK 标记每个新连接,然后添加规则以通过不同的网关路由这些标记的连接。
Eth0 - 局域网,Eth1 - ISP1,Eth2 - ISP2
以下是我正在使用的脚本,
#!/bin/bash
echo 1 >| /proc/sys/net/ipv4/ip_forward
echo 0 >| /proc/sys/net/ipv4/conf/all/rp_filter
# flush all iptables entries
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
# initialise chains that …Run Code Online (Sandbox Code Playgroud)