Я ' m под управлением Windows 10 build 1809 и установленным Hyper-v. У меня есть машина Linux, работающая за NAT с подключением к Интернету, работающая на 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
Вы, вероятно, столкнулись с этим:
Доступ к внутренним конечным точкам напрямую с хоста
Невозможно получить доступ к внутренним конечным точкам, назначенным виртуальным машинам или контейнерам использование внешних IP-адресов / портов, указанных в сопоставлении статических портов NAT прямо с NAT-хоста. От хоста NAT эти внутренние к конечным точкам следует обращаться напрямую по их внутреннему IP-адресу и портам. Например, предположим, что конечная точка контейнера имеет IP-адрес 172.16.1.100 и является запущен веб-сервер, который прослушивает порт 80. Кроме того, предположим, что сопоставление портов было создано через докер для перенаправления трафика от IP-адрес хоста (10.10.50.20), полученный через TCP-порт 8080 на конечная точка контейнера. В этом случае пользователь на узле контейнера не может прямой доступ к веб-серверу, используя внешние сопоставленные порты. например Пользователь, работающий на хосте контейнера, не может получить доступ к сети контейнера сервер косвенно на http://10.10.50.20:8080 . Вместо этого пользователь должен прямой доступ к веб-серверу контейнера на http://172.16.1.100:80 .
Единственное предостережение относительно этого ограничения заключается в том, что внутренняя конечная точка может быть доступ через внешний IP / порт из отдельной виртуальной машины / контейнера конечная точка, работающая на том же хосте NAT: это называется закреплением волос. Например. Пользователь, работающий с контейнером A, может получить доступ к запущенному веб-серверу. в контейнере B, используя внутренний IP-адрес и порт http://10.10.50.20:8080