Add-NetNatStaticMapping はローカル VM にポート転送しません

Add-NetNatStaticMapping はローカル VM にポート転送しません

私は Windows 10 ビルド 1809 を実行しており、Hyper-V をインストールしています。NAT の背後で実行されている Linux マシンがあり、IP 10.0.5.5 でインターネット接続が機能しています。基本的に、以下のリンクの指示に従いました。

https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network

ポートマッピングを作成したとき、私は

Add-NetNatStaticMapping -ExternalIPAddress 0.0.0.0/24 -ExternalPort 8500 -Protocol TCP -InternalIPAddress 10.0.5.5 -InternalPort 8500 -NatName YetAnotherNAT

打とうとするとhttp://10.0.5.5:8500動作します(ページが読み込まれます)。http://127.0.0.1:8500動作しません (何も読み込まれません)。外部 IP のいずれかを使用しようとしても動作しません。

基本的には、ポート転送全体が何も実行されていないようなものです。

何か案は?

Get-VmSwitchは次の結果を返します

PS C:\> Get-VMSwitch

Name             SwitchType NetAdapterInterfaceDescription
----             ---------- ------------------------------
nat              Internal
Wifi             External   Intel(R) Dual Band Wireless-AC 7265
DockerNAT        Internal
Default Switch   Internal   Teamed-Interface
MyNATSwitch      Internal
YetAnotherSwitch Internal

Get-NetNatは次の結果を返します

PS C:\> get-netnat


Name                             : YetAnotherNAT
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : 10.0.5.0/24
IcmpQueryTimeout                 : 30
TcpEstablishedConnectionTimeout  : 1800
TcpTransientConnectionTimeout    : 120
TcpFilteringBehavior             : AddressDependentFiltering
UdpFilteringBehavior             : AddressDependentFiltering
UdpIdleSessionTimeout            : 120
UdpInboundRefresh                : False
Store                            : Local
Active                           : True

答え1

おそらく、次のようになります:

ホストから直接内部エンドポイントにアクセスする

VM またはコンテナに割り当てられた内部エンドポイントには、NAT 静的ポート マッピングで参照される外部 IP / ポートを使用して NAT ホストから直接アクセスすることはできません。NAT ホストからは、これらの内部エンドポイントを内部 IP とポートで直接アドレス指定する必要があります。たとえば、コンテナ エンドポイントの IP が 172.16.1.100 で、ポート 80 でリッスンしている Web サーバーを実行しているとします。さらに、ポート マッピングが docker によって作成され、TCP ポート 8080 で受信したホストの IP アドレス (10.10.50.20) からのトラフィックをコンテナ エンドポイントに転送するとします。この場合、コンテナ ホスト上のユーザーは、外部にマッピングされたポートを使用して Web サーバーに直接アクセスすることはできません。たとえば、コンテナ ホストで操作しているユーザーは、http://10.10.50.20:8080代わりに、ユーザーはコンテナウェブサーバーに直接アクセスする必要があります。http://172.16.1.100:80

この制限の唯一の注意点は、同じNATホスト上で実行されている別のVM/コンテナエンドポイントから外部IP/ポートを使用して内部エンドポイントにアクセスできることです。これはヘアピンと呼ばれます。たとえば、コンテナAで操作しているユーザーは、コンテナBで実行されているWebサーバーに、コンテナBの内部IPとポートを使用してアクセスできます。 http://10.10.50.20:8080

ソース:https://techcommunity.microsoft.com/t5/Virtualization/Windows-NAT-WinNAT-Capabilities-and-limitations/ba-p/382303

関連情報