Windows では、IP アドレス (例: 10.255.255.255) のすべてのトラフィックを別の IP アドレス (例: 127.0.0.1) にマップする必要があります。
netsh interface portproxy を見つけたので試してみました。
netsh interface portproxy add v4tov4 listenaddress=10.255.255.255 listenport=7073 connectaddress=127.0.0.1 connectport=7071
目標は、ユーザーがパケットを送信すると10.255.255.255:7073
、そのパケットを127.0.0.1:7071
netsh interface portproxy show all
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
10.255.255.255 7073 127.0.0.1 7071
7073 ポートのファイアウォール ルールも追加しました。
netsh advfirewall firewall add rule name="7073 port" protocol=TCP dir=in localport=7073 action=allow
これは Windows 11 上です。
netstat -na|find "7073" の結果は空で、7071 の同じ結果は次のとおりです。
netstat -na|find "7071"
TCP 0.0.0.0:7071 0.0.0.0:0 LISTENING
私のアプリケーションでは、最初に postman から 10.255.255.255:7073 にリクエストを送信しようとしましたが、タイムアウトになりました。同じリクエストを 127.0.0.1:7071 に正常に送信できます。
7073 に telnet を実行しても、接続できません。
telnet 10.255.255.255 7073
Connecting To 10.255.255.255...Could not open connection to the host, on port 7073: Connect failed
IP Helper
サービスも実行されていることを確認しました。
私の意図は、ユーザーがすでに にリクエストを送信できる場合127.0.0.1:7071
、ポート転送後に にリクエストを送信して10.255.255.255:7073
同じ動作を確認できるようにすることです。私のアプリケーションは実際に HTTP リクエストを送信します。
実際には、着信トラフィックをリッスンしているサービスは存在しないことに注意してください7073
。しかし、それがポイントです。このポートに何かを送信する人は誰でも (誰もリッスンしていなくても)、トラフィックは7071
(誰かがリッスンしている) に送信されるようにします。
すべてのネットワーク トラフィックを送信元 IP から宛先 IP に転送するために IP:ポートを別の IP:ポートにマッピングすることに関して、私のアプローチは正しいでしょうか?
もしそうなら、何が問題なのでしょうか?
ありがとう
答え1
このコマンドの問題点は、とnetsh
のパラメータを指定するときに、
listenaddress
connectaddress
特定の IP アドレス (アドレスの範囲ではない)。
したがって、使用した構文10.255.255.255
では、アドレスの範囲全体ではなく、この正確な IP アドレスが指定されます10.*
。
ドキュメント Netsh インターフェイスのポートプロキシ コマンド - v4tov4 を追加 こう言っています。
接続アドレス
指定しますIPv4アドレス接続先。許容される値は、IP アドレス、コンピューターの NetBIOS 名、またはコンピューターの DNS 名です。アドレスが指定されていない場合、デフォルトはローカル コンピューターです。
リスンアドレス
指定しますIPv4アドレスリッスンするコンピュータ。許容される値は、IP アドレス、コンピュータの NetBIOS 名、またはコンピュータの DNS 名です。アドレスが指定されていない場合、デフォルトはローカル コンピュータです。
ポートプロキシを再作成したい場合は、まず、作成したものを削除する必要があります。 v4tov4 を削除。