我想知道如何在本地双向转发 TCP 端口,即在端口 25 上离开本地计算机的所有数据包(当然,该端口实际上是动态分配的)应该重写为具有例如 500 的源端口(这就是部分我不知道该怎么做),并且所有来自端口 500 的端口都应该转发到端口 25(我知道如何做到这一点)。
因此,侦听端口 25 的守护进程会很高兴,而所有目标都会认为该守护进程正在侦听端口 500。如果我错了,请纠正我。
答案1
将端口 25 重定向到端口 500 后,无需再次将端口 500 重定向到端口 25。 NAT 与连接一起工作,它将为您处理返回数据包。
例如尝试将端口 23 重定向到 ssh 正在侦听的端口 22
iptables -t nat -A PREROUTING -p tcp --dport 23 -j REDIRECT --to-port 22
现在您可以通过端口 23 连接该设备
ssh foo@mysshserver -p 23
在您的情况下,您应该添加此规则
iptables -t nat -A PREROUTING -p tcp --dport 500 -j REDIRECT --to-port 25
现在所有客户端都可以通过端口 500 连接到正在侦听端口 25 的守护进程