
我正在運行 Windows 10 build 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
你可能會碰到這個:
直接從主機存取內部端點
無法直接從 NAT 主機使用 NAT 靜態連接埠對映中引用的外部 IP/連接埠來存取指派給 VM 或容器的內部終端點。從 NAT 主機,這些內部端點必須直接透過其內部 IP 和連接埠進行尋址。例如,假設容器端點的 IP 為 172.16.1.100,並且正在執行一個正在偵聽連接埠 80 的 Web 伺服器。在TCP 連接埠8080 上到容器端點。在這種情況下,容器主機上的使用者無法使用外部映射的連接埠直接存取Web伺服器。例如,在容器主機上操作的使用者無法間接存取容器Web伺服器http://10.10.50.20:8080。相反,使用者必須直接存取容器 Web 伺服器http://172.16.1.100:80。
此限制的一個警告是,可以使用外部 IP/連接埠從同一 NAT 主機上執行的單獨虛擬機器/容器端點存取內部端點:這稱為髮夾。例如,在容器 A 上執行的使用者可以使用容器 B 的內部 IP 和連接埠存取在容器 B 中執行的 Web 伺服器 http://10.10.50.20:8080