net-tools 설치
sudo apt install -y net-tools
먼저, `net-rools`를 설치해줘야 `ifconfig` 명령어를 사용할 수 있기 때문에 설치해줍니다.
ports_wsl.ps1 파일 생성
# WSL 2에서 IP 주소 가져오기
$remote_ip = bash.exe -c "ifconfig eth0 | grep 'inet '" # WSL 2의 IP 주소 가져오기
$found = $remote_ip -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'; # IP 주소 매칭 확인
if ($found) {
$remote_ip = $matches[0];
echo "Remote IP is $remote_ip"; # IP 주소 출력
} else {
echo "The Script Exited, the IP address of WSL 2 cannot be found"; # 오류 메시지 출력
exit;
}
# 포트 포워딩 설정
$ports=@(20, 21, 22, 80, 443, 3306, 5432, 6379, 8080, 9200, 9300, 27017, 3000, 3001, 3002, 3003, 3004, 3005, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900, 4000, 4001, 4002, 4004, 4004, 4005, 4100, 4200, 4300, 4400, 4500, 4600, 4700, 4800, 4900, 5000, 8000, 8001, 8002, 8003, 8004, 8005, 8080);
$addr='0.0.0.0';
# 포트 포워딩 설정 초기화
Invoke-Expression "netsh interface portproxy reset";
# 포트 포워딩 설정 반복
for($i = 0; $i -lt $ports.length; $i++) {
$port = $ports[$i];
Invoke-Expression "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr"; # 기존 포트 포워딩 삭제
Invoke-Expression "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport"; # 새로운 포트 포워딩 추가
}
메모장으로 위 코드를 입력하고 `다른 이름으로 저장`할때 파일 형식을 `모든파일`로 해주시고, `ports_wsl.ps1`으로 저장하고 저는 보통 설정 파일들은 해당 윈도우 사용자 폴더에 넣어놓습니다. `C:\Users\<계정이름>` OR 폴더 경로 입력에 `%USERPROFILE%`을 넣고 엔터 치면 해당 유저 폴더로 이동합니다.
Set-ExecutionPolicy RemoteSigned
이제 `Windows PowerShell`을 `관리자 권한으로 실행` 합니다. 위 명령어를 입력하여 로컬에서 생성한 스크립트를 실행할 수 있게 정책을 변경합니다. 관련 내용이 나오면 `모두예`를 입력해줍니다.
C:\Users\<계정이름>\ports_wsl.ps1
위 명령어로 `ports_wsl.ps1` 파일을 실행해줍니다.
Get-NetTCPConnection | Where-Object {$_.State -eq "Listen"}
`Windows PowerShell`에서 위 명령어로 열려 있는 포트를 확인합니다.
안될때, 방화벽 체크
제어판 - 시스템 및 보안 - Windows Defender 방화벽 - 고급설정 - 인바운드 규칙
새 규칙을 만들어 허용할 포트를 추가해주시면 됩니다.
728x90