我尝试将 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
但这是可能的,并不意味着这比在改变后重新制定规则更好。