TCPポートを双方向にローカルに転送する方法を知りたいです。つまり、ポート25からローカルシステムを離れるすべてのパケット(もちろん、ポートは実際には動的に割り当てられています)をソースポート500(たとえば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でリッスンしているデーモンに接続できるようになりました。