ローカルホストでのみリッスンするソケットへのIP転送リモート接続?

ローカルホストでのみリッスンするソケットへのIP転送リモート接続?

特定のポートを使用してPC1からPC2にデータを転送する必要がありますが、PC2で開かれたソケットはlocalhostのみを受信して​​います。 PC1の接続を受け入れるようにソケットを「だます」方法はありますか?

答え1

sshポートフォワーディングで使用できます。

例えば

ssh <remotehost> -L 1234:<target>:5678

このコマンドはリモートホストに接続し、ローカルポート1234をサーバーのリモートポート5678に接続します<target>

あなたの場合は、ターゲットホストに直接接続され<target>ます。localhost

答え2

アプリケーションがlocalhostにバインドされている場合、ポートを転送する唯一の方法は、要求をループバックインターフェイスにNATすることです。したがって、次のようにしてこれを達成できます。

iptables ルールを追加します。

iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to 127.0.0.1:5678

これで、ターゲットコンピュータのポート1234から送信されたすべての要求は127.0.0.1:5678に転送されます。

その後、次のことを忘れないでください。

IP転送を有効にする:

echo 1 /proc/sys/net/ipv4/ip_forward

ルーティングローカルネットワークを有効にする:

echo 1 /proc/sys/net/ipv4/conf/eth0/route_localnet

関連情報