web-dev-qa-db-ja.com

ローカルポートからローカルポートへのNETSHポート転送が機能しない

NETSH PORTPROXYコマンドを使用して、ポート8001のXP PC(IP 192.168.0.10)]に送信されたパケットをポート80に転送しようとしています(XAMPP Apacheサーバーがリッスンしているポート80)。

以下を発行しました:

netsh interface portproxy add v4tov4 listenport=8001 listenaddress=192.168.0.10 connectport=80 connectaddress=192.168.0.10

すべて表示は、すべてが正しく構成されていることを確認します。

netsh interface portproxy show all

Listen on IPv4:             Connect to IPv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.0.10    8001        192.168.0.10    80

ただし、http://localhost:8001からApache Webサイトにアクセスすることはできません。以下に示すように、http://localhostのダイレクトポート経由でアクセスできます。

さらに、次のことも試しました。1.リンクを使用して、リモートPCからApache Webサイトにアクセスします:http://192.168.0.10:8001。ファイアウォールがオフになりました。 2. listenaddressおよびconnectaddressを127.0.0.1に変更します。

さらに情報がなければ、問題を解決する方法を見つけることができません。 NETSH PORTPROXYをデバッグする方法はありますか?

enter image description here

注:ちなみに、なぜ私がこれを行っているのか疑問に思っている場合は、実際にカスタムのポートからデフォルトのMySQLサーバーポート3306にリモートMySQLクライアント接続をマッピングしたい

22
Joshua

私は次のコマンドを発行することで機能させることができました。

netsh interface ipv6 install

また、私の目的のために、listenaddressを設定する必要はなく、connectaddress = 127.0.0.1、たとえば.

netsh interface portproxy add v4tov4 listenport=8001 connectport=80 connectaddress=127.0.0.1
35
Joshua

問題があります。私は今それを解決しました。機能トンネル接続を提供する「IP Helper」という名前のWindowsサービスがあります。開始されていることを確認する必要があります。

6
LongPingWEI
  1. コマンドプロンプトアイコンを右クリックし、管理者として実行を選択して、最初に管理者としてCommand.exeを実行する必要があります。確認を求められます。

  2. Command.exeウィンドウにnetshコマンドを貼り付け、Enterを押します。

  3. エラーメッセージが表示されない場合、コマンドは機能しました。

  4. Webブラウザでhttp://your-up:8001動作確認します。

Windowsイベントログには、障害の原因を見つけるのに役立つ情報が含まれている場合があります。

2
Rebwar

netshのポートプロキシが期待どおりに動作しない場合は、次のことを確認する必要があります(できればその順序で)。

  1. ポートプロキシが適切に構成されていることを確認します
  2. 関連するWindowsサービスを開始または再起動します
  3. IPv6のサポートがインストールされていることを確認してください
  4. ポートがファイアウォールでブロックされていないことを確認してください

ポートプロキシが適切に構成されていることを確認します

これはささいなことのように思えるかもしれませんが、念のため、先に進む前に構成を確認する時間を取ってください。

コマンドプロンプトまたはPowerShellプロンプトから、次のコマンドを実行します。

netsh interface portproxy show all

結果は次のようになります。

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
24.12.12.24     3306        192.168.0.100   3306
24.12.12.24     8080        192.168.0.100   80

これらの設定を慎重に確認してください。ローカルコンピューターから、そのリストの右側にあるアドレスに実際に接続できることを確認してください。たとえば、ローカルでWebブラウザを開いて192.168.0.100:80?プロトコルがHTTPでない場合は、telnetを使用します:telnet 192.168.0.100 3306(WindowsにTelnetクライアントをインストールする方法については、 here を参照してください)。

次に、左側の値は正しいですか? IPアドレスはマシンで有効ですか?外部マシンから接続しようとしているポート番号ですか?

関連するWindowsサービスを開始または再起動します

Windowsの最新バージョンでは、netshのポートプロキシは、「IP Helper」または「iphlpsvc」という名前のWindowsサービスによって処理されます。そのサービスが停止している場合、プロキシは明らかに機能しません。また、そのサービスを再起動することで解決されることが判明した状況にも直面しています。

Windowsの最新バージョンでそれを行うには:

  1. タスクマネージャを開き、サービスタブに移動します。
  2. 「名前」列で、「iphlpsvc」または「IP Helper」という名前のサービスを見つけます。
  3. そのサービスを右クリックして、Restartを選択します。 restartが利用できない場合、サービスはおそらく停止しており、実際に開始する必要があるため、Startを選択します

以前のバージョンのWindowsでは、Administrative Tools内のServicesを探します。コントロールパネル。

IPv6のサポートがインストールされていることを確認してください

IPv6プロトコルのサポートは、requiredで、IPv4からIPv4へのプロキシを含む、netshのポートプロキシを有効にします(Microsoftのサポート記事を参照してください- ここ )。

コマンドプロンプトまたはPowerShellプロンプトから、次のコマンドを実行します。

netsh interface ipv6 install

ポートがファイアウォールでブロックされていないことを確認してください

ローカルファイアウォールは、IPヘルパーサービスに到達する前にポートをブロックする可能性があります。この仮説を検証するには、ローカルファイアウォール(Windowsのネイティブファイアウォールを含む)を一時的に無効にしてから再テストします。それが機能する場合は、ファイアウォール構成にポート除外を追加するだけです。

0
jwatkins