在 RedHat Linux 上使用 iptables 对本地端口范围进行轮询和负载平衡

在 RedHat Linux 上使用 iptables 对本地端口范围进行轮询和负载平衡

我想实现负载均衡器(循环)使用 4 个 ssh 反向隧道实例运行 localhost:11669、localhost:11670、localhost:11671 和 localhost:11672 连接到 1669 上的远程主机 cmssyn.sys.com。

/usr/bin/ssh -L -N -a -q -4 -x -c blowfish -L 11669:127.0.0.1:1669 [email protected]
/usr/bin/ssh -L -N -a -q -4 -x -c blowfish -L 11670:127.0.0.1:1669 [email protected]
/usr/bin/ssh -L -N -a -q -4 -x -c blowfish -L 11671:127.0.0.1:1669 [email protected]
/usr/bin/ssh -L -N -a -q -4 -x -c blowfish -L 11672:127.0.0.1:1669 [email protected]

虽然我有四个 SSH 反向隧道,但我并没有获得四个隧道的好处,因为所有流量只使用一个 ssh 隧道(11669)。

我想使用 iptables 实现循环路由,这样,第一个会话应该转到 11669,下一个会话应该转到 11670,然后转到 11671,然后转到 11672,然后转到 11669,依此类推。

我已经创建了以下 IP 表规则,但是所有数据包都仅重定向到 11669,而不会流向其他隧道。

iptables -t nat -A OUTPUT -d 127.0.0.1 -m tcp -p tcp --dport 11669 -j REDIRECT --to-ports 11669-11672

请求您的帮助,以便以循环模式将流量成功路由到所有四个端口。


你好 Aaron 和 Stoned,

非常感谢您的及时回复,我已经尝试在末尾添加--random,--RANDOM,但出现了以下错误。

[root@prod-unix-p4p06 ~]# iptables -t nat -A OUTPUT -d 127.0.0.1 -m tcp -p tcp --dport 11669 -j REDIRECT --to-ports 11669-11672 --random
iptables v1.3.5: Unknown arg `--random'
Try `iptables -h' or 'iptables --help' for more information.

# uname -r 
2.6.18-412.0.0.0.1.el5

# cat /etc/issue
Oracle Linux Server release 5.11
Kernel \r on an \m

I have even tried the same firewall rule on Oracle Linux 6.7 and 6.8.  

相关内容