[Windows] 특정 port가 시스템에 예약되어 있어서 사용 불가능 한 경우 해결방법

 서버 프로그램을 동작 시키기 위해 특정 TCP 포트를 열려고 할 때 이미 사용중인 포트라는 오류가 뜨면 일반적으로 netstat를 사용하거나 마소에서 제공하는 TCPView(https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview) 등을 사용해서 해당 포트를 점유중인 프로세스를 찾아 종료시키면 해결이 되지만 실제로 해당 포트가 사용되고 있는 않는데도 포트를 열 수 없다고 오류가 뜨는 경우가 있습니다.

 이럴 때는 시스템에서 사용자가 쓰지 못하도록 특정 포트 번호 영역을 점유해두어서 그렇습니다. 확인 방법은 관리자 권한으로 터미널 창을 하나 열어서 아래 커맨드를 입력합니다.

netsh interface ipv4 show excludedportrange protocol=tcp

시스템에 의해 점유된 포트 번호들이 나타나면 본인이 사용하길 원하는 range를 아래 커맨드로 목록에서 삭제시키면 됩니다.

netsh int ipv4 delete excludedportrange protocol=tcp startport=54022 numberofports=100

 

명령어가 길어서 귀찮으신 분들은 아래 커맨드로 NAT를 재시작 해도 간단히 해결됩니다.

net stop winnat
net start winnat