레이블이 netstat인 게시물을 표시합니다. 모든 게시물 표시
레이블이 netstat인 게시물을 표시합니다. 모든 게시물 표시

wsl 환경에서 netstat 사용하기

# WSL(Windows Subsystem for Linux) 에서
# 리눅스 netstat 가 작동하지 않는다.
which netstat
/bin/netstat

# wsl 에서는 .exe 를 실행할 수있다.
# (cmd.exe calc.exe explorer.exe 등을 실행할 수 있어 좋다.)
# 마운트된 C 드라이브의 윈도우 디렉토리의 netstat.exe 를 실행하면 된다.
# 윈도우 netstat.exe -p (PID/Program) 옵션이 없어 사용할 수 없다.
/mnt/c/Windows/System32/netstat.exe -nato

# 다음과 같이 alias 를 설정해 놓으면 편하다.
echo "alias netstat='/mnt/c/Windows/System32/netstat.exe'" >> ~/.zshrc

kernel time_wait

# 다음 netstat 로 time_wait 보면 PID/Program name 이 - 표시된 케이스가 있다.
netstat -natop | grep -i time_wait
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     Timer

tcp        0      0 1.1.1.1:12345       2.2.2.2:10000      TIME_WAIT   -                    timewait (20.69/0/0)

# - 는 해당 포트를 사용하던 /proc/$PID 가 사라져(종료) 커널이 관리하게되는 경우다.
# 커널이 잡고 있는 time_wait 포트를 없애기 위해서는 네트워크를 종료하는 방법이 있지만 서비스 중인 서버에서는 사용할 수 없다.
/etc/init.d/network restart

# 드문 경우지만 MSL(Maximum Segment Lifetime, tcp 세그먼트가 네트워크에 존재하는 최대시간으로 보통 2분)이 넘어가서 서버로 부터 fin 을 받지 못할때 발생할 수 있다.
https://en.wikipedia.org/wiki/Maximum_segment_lifetime
# tcp_tw_reuse=1 로 재사용되지 않으면 net.ipv4.tcp_fin_timeout ~ MSL 시간이 지나면 사라진다.

# tcp_fin_timeout 확인
sysctl net.ipv4.tcp_fin_timeout