多次重定向同一连接

多次重定向同一连接

我尝试将 TCP 连接一个端口多次重定向到另一个端口,我之前尝试过但没有成功:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 60000 -j REDIRECT --to-port 60001
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 60001 -j REDIRECT --to-port 60002

我正在尝试让端口 6000 将 tcp 连接重定向到端口 60001,然后端口 60001 将把连接重定向到端口 60002。

X->Y->Z

我能做些什么?

答案1

您的缓解步骤需要将连接转发到您的游戏服务器,您无法使用 IPTables 来执行此操作。

答案2

您不能用不同的 DNAT 规则匹配同一个数据包两次。但您可以使整个结构更复杂,从而更灵活。

您可以为要处理的每个目标端口创建一个链:

iptables -t nat -N port60000
iptables -t nat -N port60001

如果匹配一个数据包,则不会将其发送到 DNAT 目标,而是发送到相应的链:

iptables -t nat -A PREROUTING -p tcp --dport 60000 -j port60000
iptables -t nat -A PREROUTING -p tcp --dport 60001 -j port60001

在原始状态下,链条的作用与旧命令相同,只是速度稍慢一些……

iptables -t nat -A port60000 -p tcp -j DNAT --to-destination :60001
iptables -t nat -A port60001 -p tcp -j DNAT --to-destination :60002

如果您想更改60000 => 60001为,60000 => 60002那么您可以更改以下内容port60000

iptables -t nat -A port60000 -p tcp -j port60001
iptables -t nat -D port60000 -p tcp -j DNAT --to-destination :60001

但这是可能的,并不意味着这比在改变后重新制定规则更好。

相关内容