반응형

지난번에 포트 점유로 인한 파이참(인텔리제이 등등) 실행 오류 해결법을 올렸는데 그 방법은 치명적인 문제가 있다. 명령 실행 후 wsl에서 네트워크 연결이 안 되는 것...

wsl에서 돌아가는 프로그램 개발하려고 파이참을 켜는 건데 이러면 답이 없다... 다시 정보의 바다에 나선 끝에 근본적인 해결책을 찾았다.

일단 원인부터 설명하자면 윈도우에서는 임시 포트로 사용할 수 있는 동적 포트 영역이 설정되어 있다. 그래서 프로그램이 아무 포트나 요청하면 이 영역에서 부여해주는데 무슨 영문인진 모르겠지만 이 영역이 이상하게 설정되어 있었다.

netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp

터미널을 열고 위 명령어를 입력하면 지정된 동적 포트의 범위를 볼 수 있다.

https://docs.microsoft.com/ko-kr/windows/client-management/troubleshoot-tcpip-port-exhaust

 

포트 소모 문제 해결 - Windows Client Management

포트 소모 문제를 해결하는 방법에 대해 알아봅니다. 시스템의 모든 포트가 사용될 때 포트 소모가 발생합니다.

docs.microsoft.com

이 문서를 참고하면 윈도우 기본 설정은 49152~65535인데 무슨 영문인지 tcp가 1024~15000으로 설정되어 있다. 저 영역은 등록된 포트 영역으로 여러 프로그램이 이미 사용 중인 영역이다... 아무튼 저렇게 설정되어 있으니 하이퍼v가 동적 포트를 점유하는 과정에서 파이참이 사용하는 영역을 몽땅 점유해버리는 바람에 이런 오류가 난 것이다.

이제 설정을 올바르게 바꿔보자

netsh int ipv4 set dynamicport tcp start=49152 num=16384
netsh int ipv6 set dynamicport tcp start=49152 num=16384

관리자 권한으로 터미널을 열고 위 명령을 입력한다. 아까 위에서 ipv4 tcp와 ipv6 tcp만 이상했으니 이 둘만 설정을 바꿨다.

이제 깔끔하게 재부팅 하면 끝! 근본적인 문제가 해결되었으니 이제 앞으로 Address already in use: bind 에러는 보기 힘들 것이다.

반응형

+ Recent posts