У меня есть Windows server 2016, работающий во внешнем месте с одним конкретным заданным IP-адресом, установленным как статический IPV4 в конфигурации сетевых карт.
На этом сервере я запускаю несколько виртуальных машин в сети NAT. Эти виртуальные машины работают в собственной среде Docker Swarm, частью которой не является сервер без операционной системы.
Я настроил нат-сеть с IP-диапазоном 192.168.137.0/24
Виртуальные машины настроены со статическими IP-адресами в этой сети и имеют доступ в Интернет. Сервер без оболочки также может пинговать виртуальные машины.
Однако прошло много времени с тех пор, как я обращался к серверу, и я не могу точно вспомнить, как он был настроен.
Теперь я пытаюсь направить ПОРТ 80 на конкретную виртуальную машину. Сначала я запускаю Get-NetNat, который возвращает следующее:
Name : NatNetwork
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : 172.31.70.0/24
IcmpQueryTimeout : 30
TcpEstablishedConnectionTimeout : 1800
TcpTransientConnectionTimeout : 120
TcpFilteringBehavior : AddressDependentFiltering
UdpFilteringBehavior : AddressDependentFiltering
UdpIdleSessionTimeout : 120
UdpInboundRefresh : False
Store : Local
Active : False
Первое, что я заметил, это то, что InternalIPInterfaceAddressPrefix не соответствует моим NAT-сетям.
Однако я попытался добавить статическое сопоставление, которое, в свою очередь, дало мне следующее:
PS C:\Users\Administrator> Add-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/24" -ExternalPort 8080 -Protocol TCP -Int
ernalIPAddress "192.168.137.101" -InternalPort 8080 -NatName "NatNetwork"
Add-NetNatStaticMapping : Instance Nat NatNetwork not found
At line:1 char:1
+ Add-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/24" -ExternalPort ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (MSFT_NetNatStaticMapping:root/StandardCi...atStaticMapping) [Add-NetN
atStaticMapping], CimException
+ FullyQualifiedErrorId : Windows System Error 50,Add-NetNatStaticMapping
Я решил, что NetNat настроен неправильно, поэтому попытался удалить его, но даже это не сработает:
PS C:\Users\Administrator> Remove-NetNat NatNetwork
Confirm
Are you sure you want to perform this action?
Performing operation Delete on Target NatNetwork PolicyStore Local
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
Remove-NetNat : The requested operation is not supported.
At line:1 char:1
+ Remove-NetNat NatNetwork
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (MSFT_NetNat (In..."NatNetwork;0"):root/StandardCimv2/MSFT_NetNat) [Re
move-NetNat], CimException
+ FullyQualifiedErrorId : Windows System Error 50,Remove-NetNat
Теперь я в недоумении. Я пробовал много других вещей, но больше не могу сохранять ясность ума.
NatNetwork изначально создавалась согласно этому сообщению: https://blog.areflyen.no/2012/10/10/setting-up-internet-access-for-hyper-v-with-nat-in-windows-8/