
Ich verwende Windows 10 Build 1809 und habe Hyper-V installiert. Ich habe eine Linux-Maschine, die hinter einem NAT läuft, mit Internetverbindung über IP 10.0.5.5. Ich habe im Wesentlichen die Anweisungen unter dem folgenden Link befolgt.
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network
Beim Erstellen der Portzuordnung habe ich
Add-NetNatStaticMapping -ExternalIPAddress 0.0.0.0/24 -ExternalPort 8500 -Protocol TCP -InternalIPAddress 10.0.5.5 -InternalPort 8500 -NatName YetAnotherNAT
Wenn ich versuche zu schlagenhttp://10.0.5.5:8500es funktioniert (Seite wird geladen). Wenn ich versuche,http://127.0.0.1:8500es funktioniert nicht (nichts wird geladen). Selbst wenn ich versuche, eine meiner externen IPs zu verwenden, funktioniert es nicht.
Im Grunde ist es so, als würde die gesamte Portweiterleitung nichts bewirken.
Irgendwelche Ideen?
Get-VmSwitch gibt Folgendes zurück
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 gibt Folgendes zurück
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
Antwort1
Sie stoßen wahrscheinlich auf Folgendes:
Zugriff auf interne Endpunkte direkt vom Host aus
Interne Endpunkte, die VMs oder Containern zugewiesen sind, können nicht über die in den statischen NAT-Portzuordnungen referenzierten externen IPs/Ports direkt vom NAT-Host aus aufgerufen werden. Vom NAT-Host aus müssen diese internen Endpunkte direkt über ihre internen IPs und Ports angesprochen werden. Nehmen wir beispielsweise an, ein Containerendpunkt hat die IP 172.16.1.100 und betreibt einen Webserver, der auf Port 80 lauscht. Nehmen wir außerdem an, dass über Docker eine Portzuordnung erstellt wurde, um den Verkehr von der IP-Adresse des Hosts (10.10.50.20), der auf TCP-Port 8080 empfangen wird, an den Containerendpunkt weiterzuleiten. In diesem Fall kann ein Benutzer auf dem Containerhost nicht direkt über die extern zugeordneten Ports auf den Webserver zugreifen. Beispielsweise kann ein Benutzer, der auf dem Containerhost arbeitet, nicht indirekt überhttp://10.10.50.20:8080. Stattdessen muss der Benutzer direkt auf den Container-Webserver zugreifen unterhttp://172.16.1.100:80.
Der einzige Vorbehalt bei dieser Einschränkung ist, dass der interne Endpunkt über die externe IP/den externen Port von einem separaten VM/Container-Endpunkt aus, der auf demselben NAT-Host läuft, erreicht werden kann: Dies wird als Hair-Pinning bezeichnet. Beispielsweise kann ein Benutzer, der auf Container A arbeitet, auf einen Webserver zugreifen, der in Container B läuft, indem er die interne IP und den Port von http://10.10.50.20:8080