特定のポートを使用して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