
저는 Windows 10 빌드 1809를 실행 중이고 Hyper-V가 설치되어 있습니다. IP 10.0.5.5에서 작동하는 인터넷 연결을 사용하여 NAT 뒤에서 실행되는 Linux 시스템이 있습니다. 기본적으로 아래 링크의 지침을 따랐습니다.
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 호스트에서 직접 NAT 정적 포트 매핑에서 참조되는 외부 IP/포트를 사용하여 액세스할 수 없습니다. NAT 호스트에서 이러한 내부 끝점은 내부 IP 및 포트를 통해 직접 주소가 지정되어야 합니다. 예를 들어, 컨테이너 엔드포인트의 IP가 172.16.1.100이고 포트 80에서 수신 대기하는 웹 서버를 실행하고 있다고 가정합니다. 또한 수신된 호스트의 IP 주소(10.10.50.20)에서 트래픽을 전달하기 위해 docker를 통해 포트 매핑이 생성되었다고 가정합니다. TCP 포트 8080에서 컨테이너 엔드포인트로. 이 경우 컨테이너 호스트의 사용자는 외부 매핑된 포트를 사용하여 웹 서버에 직접 액세스할 수 없습니다. 예를 들어 컨테이너 호스트에서 작업하는 사용자는 컨테이너 웹 서버에 간접적으로 액세스할 수 없습니다.http://10.10.50.20:8080. 대신 사용자는 컨테이너 웹 서버에 직접 액세스해야 합니다.http://172.16.1.100:80.
이 제한 사항에 대한 한 가지 주의 사항은 동일한 NAT 호스트에서 실행되는 별도의 VM/컨테이너 끝점에서 외부 IP/포트를 사용하여 내부 끝점에 액세스할 수 있다는 것입니다. 이를 헤어 고정이라고 합니다. 예를 들어 컨테이너 A에서 작업하는 사용자는 내부 IP와 포트를 사용하여 컨테이너 B에서 실행되는 웹 서버에 액세스할 수 있습니다. http://10.10.50.20:8080