WSL2 게스트VM에서 SSH나 HTTPS같은 특정 서비스 포트를 오픈하더라도 로컬이나 외부에서 접속이 불가하기 때문에 게스트VM에서 오픈한 포트에 접속하기 위해서는 윈도우에서 포트포워딩(portproxy) 설정을 해줘야합니다. 아래는 포트번호를 입력받아 포트포워딩을 설정해주는 배치(batch)파일입니다. 패치파일은 관리자모드에서 실행하면됩니다.
[메뉴구성]
1. 현재 포트포워딩 설정보기
2. 포트포워딩 설정하기
3. 포트포워딩 삭제하기
[코드설명]
> 2번, 3번 메뉴의 경우 원하는 포트를 지정할 수 있는데, 한개만 입력해도 되고 콤마(,) 구분자로 다수의 포트 입력이 가능합니다.
> 재부팅 되더라도 입력한 설정은 유지되나 게스트VM IP가 변경된다면 다시 설정해줘야 됩니다.
[배치파일]
@echo off SETLOCAL EnableExtensions :menu echo 1. portproxy show echo 2. portproxy add echo 3. portproxy del set /p choice=choice 1 or 2 or 3: if %choice%==1 goto subcode1 if %choice%==2 goto subcode2 if %choice%==3 goto subcode3 echo Invalid input. Please enter 1 or 2 or 3. goto menu :subcode1 netsh interface portproxy show v4tov4 goto end :subcode2 cd /d C:\ set hostip= for /f "tokens=2 delims= " %%a in ('bash.exe -c "ifconfig eth0 | grep 'inet '"') do set hostip=%%a set found=no echo %hostip% | findstr /r /c:"^[ ]*[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*[ ]*$" > nul && set found=yes if "%found%"=="yes" ( set hostip=%hostip:~0% ) else ( echo The Script Exited, the ip address of WSL 2 cannot be found exit /b 1 ) set /p ports=Enter port number to use(multiple ports you want to forward separated by comma): set "addr=127.0.0.1" set "output=" for /f "tokens=1 delims= " %%a in ('netsh interface portproxy show v4tov4 ^| findstr "ipv4"') do set output=%%a if not "%output%"=="" ( for %%i in (%ports%) do ( netsh interface portproxy delete v4tov4 listenport=%%i listenaddress=%addr% netsh interface portproxy add v4tov4 listenport=%%i listenaddress=%addr% connectport=%%i connectaddress=%hostip% ) echo "delete & add suceessfully" netsh interface portproxy show v4tov4 ) else ( for %%i in (%ports%) do ( netsh interface portproxy add v4tov4 listenport=%%i listenaddress=%addr% connectport=%%i connectaddress=%hostip% ) echo "add suceessfully" netsh interface portproxy show v4tov4 ) exit /b 0 goto end :subcode3 set /p ports=Enter port number to use: for %%i in (%ports%) do ( netsh interface portproxy delete v4tov4 listenport=%%i listenaddress=127.0.0.1 ) netsh interface portproxy show v4tov4 goto end :end echo done. |
'가상화 > Hyper-V' 카테고리의 다른 글
Hyper-V에서 고정 IP 사용 방법 (0) | 2023.07.24 |
---|---|
WSL2에서 칼리 리눅스(Kali Linux) xrdp 원격접속 (0) | 2023.03.22 |
윈도우(Windows) 11 Hyper-V에 설치하기 (0) | 2021.10.10 |
윈도우(Windows) 10에 Linux용 Windows 하위 시스템(WSL) 설치 (0) | 2021.03.24 |
윈도우(Windows) 10에서 Hyper-V를 사용하여 가상 컴퓨터 만들기 (0) | 2021.03.24 |