Hyper-V에서 내부 ip고정 및 NAT/포트포워딩 방법.

Hyper-V에서 내부 ip고정 및 NAT/포트포워딩 방법.

안녕하세요. 달소입니다.

이번글은 윈도우에서 가상머신을 운영할때 사용되는 Hyper-V에서 내부 ip고정 및 NAT/포트포워딩을 하는 방법입니다.

기본적으로 Hyper-V에서 제공되는 Default Switch의 경우 할당되는 ip대역폭도 많을뿐더러 내부네트워크이기때문에 포트포워딩도 되지않습니다.

여기에서는 내부적으로 포워딩을 위한 NAT Network를 만들고 포트포워딩을 사용하는방법을 설명드리겠습니다.

잘이용하신다면 윈도우 PC나 윈도우 서버에서 손쉽게 서버를 구축할 수 있습니다.

NAT Network 생성하기

먼저 파워쉘을 관리자 권한으로 NAT network를 생성해주세요.

image.png.jpg

그리고 아래 명령어를 통해 NAT 네트워크를 만들어주세요.

New-VMSwitch -SwitchName "NAT-Switch" -SwitchType Internal

image.png.jpg

그리고 ncpa.cpl이나 아래 주소를 통해서 네트워크 현황을 보개되시면

방금 생성한 네트워크가 보이실겁니다.

image.png.jpg

그리고 다시 파워쉘로 접속하셔서 아래 명령어를 통해 생성한 스위치에 ip를 부여해줍니다.

보편적으로 사용되는 사설 네트워크인 192.168/172.17/10.0 대역에서 원하는대역을 넣어주시면됩니다.

여기서 할당되는 ip가 이 스위치의 ip가 되고 이 네트워크를 할당받는 VM들의 게이트웨이는 이 ip를 바라본다고보시면되겠습니다.

New-NetIPAddress -IPAddress 10.0.0.1 -PrefixLength 24 -InterfaceAlias "vEthernet (NAT-Switch)"

image.png.jpg

그다음 아래 명령어를 통해 Nat를 활성화 시켜줍니다.

New-NetNat -Name NAT-Swtich -InternalIPInterfaceAddressPrefix 10.0.0.0/24

image.png.jpg

고정 IP 및 네트워크 설정하기

이제 가상머신의 설정으로 들어가서

네트워크 어댑터의 가상스위치를 기본 Default Switch 에서 방금 생성한 NAT-Switch로 변경 후 부팅해주세요.

image.png.jpg

Ubuntu 에서는 아래와 같이 ip 설정이 가능하고

image.png.jpg

윈도우에서도 네트워크 설정에가서 수동 ip할당을해주시면됩니다.

게이트웨이는

image.png.jpg
image.png.jpg

포트포워딩하기

마지막 포트포워딩 과정을 위해서 ubuntu에 nginx을 설치해서 테스트해보겠습니다.

ubuntu 22에 nginx를 설치했습니다. 내부 ip는 10.0.0.2 구요.

image.png.jpg

당연히 host인 윈도우 PC에서 해당 ip로 하면 nginx 페이지가 뜨겠죠?

image.png.jpg

이제 포트포워딩을 해보겠습니다.

포트포워딩을 하게되면 호스트의 ip(ex. 192.168.1.249)의 80번포트로 접근했을때도 내부 리눅스의 80번포트로 포워딩 되게끔 작업해주는걸 의미합니다.

아래 명령어는 외부ip 0.0.0.0/0에서 요청이 왔을때 80번 TCP포트를 통해서내부의 10.0.0.2 ip의 80번 포트로 포워딩해준다는뜻입니다.

Add-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/0" -ExternalPort 80 -Protocol TCP -InternalIPAddress "10.0.0.2" -InternalPort 80 -NatName NAT-Swtich

image.png.jpg

이제 윈도우 PC의 ip로 접근을하면 아래처럼 기존 내부 nginx가 잘열리는걸 확인할 수 있습니다.

image.png.jpg

참고 : https://docs.microsoft.com/en-us/powershell/module/hyper-v/new-vmswitch?view=win10-ps