如何通过 iptables 重定向和负载平衡本地生成的数据包?

How to redirect and load balance locally generated packets through iptables?

这是我正在处理的场景。

我在 443 上侦听 sslh,它将 https 流量重定向到 445 并将 TURN 流量重定向到 3478。我还有 6 个 TURN 服务器在 3478 到 3483 上侦听。我希望在所有这些端口之间对传入的 TURN 流量进行负载平衡。我尝试通过 nat table 的 PREROUTING 链进行负载平衡,但它没有工作,因为 sslh 是一个本地进程并且从它生成的数据包跳过了 PREROUTING table。我可以在 nat table 的输出链中看到这些数据包来自 sslh,但我无法将它们重定向到另一个端口。

这是我正在使用的规则。

iptables -t nat -A OUTPUT -p tcp -o lo --dport 3478 -j REDIRECT --to-ports 3479

这是行不通的。非常感谢任何帮助!

尝试在coturn中使用loadbalance。所以选项:

alternate-server

coturn 源中的示例 https://github.com/coturn/coturn/blob/master/examples/scripts/loadbalance/master_relay.sh

我错过了为 sslh 添加透明度规则。添加这些规则后,我能够将数据包重定向到不同的端口