「localhost」を別のローカル IP にリダイレクトするにはどうすればよいですか?

「localhost」を別のローカル IP にリダイレクトするにはどうすればよいですか?

私の状況は次のとおりです:

同じルーターの下にある 2 台のコンピューター、192.168.1.101 と 192.168.1.102

私がやりたいのは次のことです: 192.168.1.101 で、localhost を使用してポート 22 にアクセスするときに、トラフィックを 192.168.1.102 のポート 22 に送信します。

言い換えれば、ローカルホストからのトラフィックを別のローカル IP に転送したいのです。

私が必要としている解決策はありますか?

答え1

Windows を使用している場合は、次のコマンドを使用できます。

netsh interface portproxy add v4tov4 listenaddress=192.168.1.101 listenport=21 connectaddress=192.168.1.102 connectport=21

交換する:

  • 21転送したいポートで、
  • 192.168.1.101あなたのIPで、
  • 192.168.1.102宛先 IP を使用します。

答え2

localhost の意味を再定義しないでください。予期せぬ形で問題が発生することになります。

代わりに、の-Lおよび-Rオプションを確認してくださいssh(1)。これらを使用すると、ローカル マシンのポートをリモート マシンの IP アドレスとポートに簡単にリダイレクトできます。さらに、トンネルは SSH によって保護されます。

これらのトンネルは必ずしも ssh/shell トラフィックに固有のものではないことに注意してください。任意のトラフィックに使用できます。

答え3

それが賢明なやり方かどうかはわかりません。ローカル マシンで実行することを目的とした多くのサービスは、同じマシン上の他のサービスに接続するために127.0.0.1、 または のいずれか (変更しても問題はありません)を使用しますlocalhost(この場合、変更すると問題が生じます)。また、他の多くのパッケージもこのように構成されています。

目的が、どのマシンからでも同じ名前で相互接続することである場合、別の名前を使用することをお勧めします。たとえば、「localhost」の代わりに「crosshost」を使用できます。その場合は、Indrek のヒントに従ってください。ファイルを確認してくださいhosts(Linux/Unix およびおそらく Mac では/etc/hosts、Windows ではC:\Windows\System32\drivers\etc\hosts(拡張子なし - ここで注意してください。Windows では通常、hosts.*そのディレクトリに他のファイルがすでに存在します)。ない行をコメントアウトしたり127.0.0.1 localhost、変更したりせずにそのままにしておきます。行を追加するだけです。

192.168.1.101 crosshost

192.168.1.102 マシンで、同様に他のマシンの他のアドレスでも行います。これで、たとえば、ssh crosshostあるマシンから他のマシンに接続したり、 を使用してファイルをコピーしたりscp filename.ext crosshost:/path/to/put、意図したとおりに操作できるようになります。

関連情報