
私の状況は次のとおりです:
同じルーターの下にある 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
、意図したとおりに操作できるようになります。