powershell 과 wsl를 와리가리

wsl에서 netstat 사용하고 싶어.

cmd에서는 ls 같은 게 안돼서 window에서 CLI 필요할 때 powershell 을 쓰는데 얘는 사실 뭔가 애매하게 독자적이라서 또 화나는 일이 많다.

예를 들면 netstat으로 지금 프로세스들 중에 8080 쓰고 있는 거 확인할 때

linux

netstat -ano | grep '8080'

CMD

netstat -ano | find "8080"

powershell

netstat -ano | select-string "8080"

와,, select-string 이라니

그래서 wsl2 를 메인으로 쓰려 했는데

wsl2에서 netstat 날리면 windows랑 다름

wsl2 의 네트워크 구조

wsl2 요 녀석은 Windows 의 hyper-v 로 가상화된 거라 네트워크 구조가 복잡한 부분이 있다,, ㅇㄴ,,

wsl2 host

  • WSL2 에서 띄운 프로세스를 windows의 localhost로 접근 가능함
  • 다만 인터넷 -> HOST IP로 WSL2 프로세스 접속은 불가능 (애초에 internal 네트워크이기 때문) –> 포트 포워딩 필요

그니까, wsl2에 8080 포트로 뭔가 열어놨다면 windows 에서는 localhost:8080 으로 접근 가능하지만 외부에서 {wsl2host}:8080 으로 접근 불가하다. (port forwarding 필요)

wsl2

netstat -ano | grep '8080'

일단 wsl2에서 netstat 쓰려면 설치필요: apt install net-tools

wsl에서 netstat 날리면

WSL2 Alias

vi ~/.zshrc
# Custom Aliases
alias netstat="/mnt/c/Windows/System32/NETSTAT.EXE"
source ~/.

Reference