hello

WSL2에서 포트 포워딩 자동화하기 (PowerShell 스크립트로 간단하게 해결)

Share

WSL2(Windows Subsystem for Linux 2)를 사용할 때 자주 부딪히는 문제가 있다.
바로 WSL2 내부 서버에 외부에서 접근할 수 없다는 점이다.

WSL2는 가상 네트워크 인터페이스를 통해 동작하기 때문에
리눅스에서 localhost로 열어둔 포트가
Windows나 외부에서 그대로 접근되지 않는다.

이를 해결하기 위해서는 portproxy 기능을 활용한 포트 포워딩 설정이 필요하다.
하지만 문제는…

WSL2의 IP는 재부팅할 때마다 바뀐다!

즉, 매번 netsh로 수동 등록해야 한다는 것…

그래서 이런 번거로움을 없애기 위해 아래와 같은
자동 포트 포워딩 PowerShell 스크립트를 만들어 두면 매우 편리하다.


🧾 PowerShell 스크립트

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{   
    $arguments = "& '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
    Break
}

$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ){
  $remoteport = $matches[0];
} else{
  echo "The Script Exited, the ip address of WSL 2 cannot be found";
  exit;
}

$ports=@(8080, 3306);

iex "netsh interface portproxy reset";

for( $i = 0; $i -lt $ports.length; $i++ ){
  $port = $ports[$i];
  iex "netsh interface portproxy add v4tov4 listenport=$port connectport=$port connectaddress=$remoteport";
}

iex "netsh interface portproxy show v4tov4";

📝 스크립트 동작 설명

1. 관리자 권한 자동 상승

PowerShell에서 netsh 명령은 관리자 권한이 필요하다.
스크립트는 이 권한이 없으면 자동으로 관리자 권한으로 재실행한다.

Start-Process powershell -Verb runAs

덕분에 오른쪽 클릭 → “관리자 권한으로 실행”을 하지 않아도 된다.


2. WSL2 내부 IP 자동 추출

WSL2의 eth0(기본 네트워크 인터페이스)에서 IP를 가져온다.

$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"

그리고 정규식을 이용해 IPv4 주소만 추출한다.

WSL2는 재부팅하거나 WSL 서비스를 재시작할 때마다
IP가 달라지므로 이 과정이 중요하다.


3. 포워딩할 포트 목록 정의

$ports=@(8080, 3306);

예:

  • 8080 → 웹 서버
  • 3306 → MySQL

여기에 원하는 포트를 자유롭게 추가할 수 있다.


4. 기존 portproxy 초기화

netsh interface portproxy reset

WSL2 IP가 바뀔 때마다 계속 추가되면 충돌할 수 있으므로
초기화 후 새롭게 설정한다.


5. Windows → WSL2 포트 포워딩 규칙 설정

netsh interface portproxy add v4tov4 listenport=8080 connectport=8080 connectaddress=WSL_IP

이 작업을 지정한 포트 목록만큼 반복한다.

  • Windows: localhost:8080
  • 실제 연결 대상: WSL_IP:8080

이렇게 연결이 이뤄지므로 WSL 내부에서 실행 중인 서비스를
Windows 브라우저나 툴에서 아무 문제 없이 사용할 수 있다.


6. 포워딩 규칙 확인

마지막에 현재 portproxy 설정을 출력한다.

netsh interface portproxy show v4tov4

🚀 사용 방법

  1. PowerShell 파일로 저장
    예: wsl-port-forward.ps1
  2. 관리자 권한이 자동으로 적용되고
    WSL2의 현재 IP에 맞게 포트 포워딩이 자동 구성된다.

PowerShell에서 실행

./wsl-port-forward.ps1

🎉 마무리

WSL2에서 개발할 때 포트 포워딩 문제는 거의 필수적으로 마주친다.
이 스크립트를 사용하면 매번 IP를 확인하고 netsh로 설정할 필요 없이
클릭 한 번 / 실행 한 번으로 자동 설정이 가능해진다.

특히 다음 상황에 매우 유용하다:

  • WSL에서 웹 개발(React, Node, Django, Spring 등)
  • DB(MySQL, MariaDB, PostgreSQL)를 Windows 툴에서 접속해야 할 때
  • 서버를 여러 개 띄워 테스트하는 환경
  • 재부팅 시마다 바뀌는 WSL2 IP 때문에 번거로웠던 경험

Read more

LLM 시대, 프롬프트 엔지니어링보다 '도메인 전문성'이 더 강력한 무기인 이유

최근 AI 도구들이 비약적으로 발전하면서 '프롬프트 엔지니어링'이라는 기술적 기법에 많은 관심이 쏠렸습니다. 하지만 실제 현업에서 LLM을 극한으로 활용해 고도의 결과물을 만들어내는 사람들의 공통점은 정교한 프롬프트 템플릿을 쓰는 능력이 아니라, 해당 분야에 대한 깊은 '도메인 전문성'을 갖추고 있다는 점입니다. 많은 이들이 LLM이 지식의 격차를 줄여준다고

By JHL

AI 코딩 에이전트 도입 시 고려해야 할 보안 제어 프레임워크: 속도와 안전의 균형 잡기

최근 Claude Code나 Kiro와 같은 AI 코딩 에이전트들이 단순한 코드 완성을 넘어, 자연어 프롬프트 하나로 수십 개의 PR을 생성하고 인프라를 수정하는 수준까지 발전했습니다. 하지만 이러한 생산성 향상은 '기계적 속도'라는 트레이드오프를 동반합니다. AI 에이전트는 조직의 보안 리스크나 컴플라이언스를 이해하지 못한 채 오직 '작업 완료'에만 최적화되어

By JHL

AI 벤치마크의 '포화 상태'와 평가 지표의 유효기간: 우리는 무엇을 믿어야 하는가

최근 LLM의 성능이 비약적으로 상승하면서, 역설적으로 우리가 모델의 성능을 측정하는 '자' 자체가 무용지물이 되는 현상이 가속화되고 있습니다. arXiv에 게재된 "When AI Benchmarks Plateau: A Systematic Study of Benchmark Saturation" 연구는 우리가 흔히 신뢰하는 벤치마크 점수가 왜 더 이상 모델 간의 변별력을 제공하지 못하는지, 그리고 이른바 '

By JHL

AI 에이전트 시대의 엔드포인트 보안: 실행 권한을 넘어 '행위 거버넌스'로

DevOps.com을 통해 Airlock Digital이 발표한 'Agentic AI Control & Governance' 솔루션 소식을 접했습니다. 이번 발표의 핵심은 단순히 '어떤 AI 소프트웨어를 실행할 것인가'라는 기존의 화이트리스트 방식(Application Control)을 넘어, 실행 중인 AI 에이전트가 '실제로 어떤 명령을 내리고 어떻게 행동하는가'를 실시간으로 제어하겠다는

By JHL