IT일반

"포트가 이미 사용 중"일 때 확인 방법과 해결책

요긴소프트 2024. 11. 16. 18:26
728x90
반응형

Windows 애플리케이션 개발 시 특정 포트를 사용하려고 할 때 "포트가 이미 사용 중"이라는 오류를 마주치는 경우가 있습니다. 최근에는 LM Studio에서 API 서버를 구동시키기 위해 Start 버튼을 눌렀을 때 오류가 발생했는데, 이는 Windows의 동적 포트 범위 예약 때문일 수 있습니다. 이 문제를 해결하는 방법을 알아보겠습니다.

문제 상황 확인하기

먼저 다음 명령어로 현재 예약된 TCP 포트 범위를 확인할 수 있습니다:

netsh int ip show excludedportrange protocol=tcp

이 명령어를 실행하면 현재 시스템에서 예약된 포트 범위 목록이 표시됩니다.

주요 원인

이러한 포트 예약의 주요 원인은 다음과 같습니다:

  1. Hyper-V
  2. Windows NAT Driver (WinNAT)
  3. Windows Sandbox
  4. 기타 가상화 관련 서비스

해결 방법

1. WinNAT 서비스 재시작

가장 간단한 해결 방법은 WinNAT 서비스를 재시작하는 것입니다:

net stop winnat
net start winnat

2. 동적 포트 범위 변경

더 영구적인 해결책으로, Windows의 동적 포트 범위를 조정할 수 있습니다:

  • 현재 동적 포트 범위 확인:
netsh int ipv4 show dynamicport tcp
  • 새로운 범위 설정:
netsh int ipv4 set dynamic tcp start=60001 num=5534

이 명령은 동적 포트 범위를 60001부터 시작하도록 설정합니다.

3. 특정 포트 영구 예약

필요한 포트를 미리 예약하여 다른 서비스가 사용하지 못하도록 할 수 있습니다:

netsh int ipv4 add excludedportrange protocol=tcp startport=50005 numberofports=2

4. Hyper-V 비활성화

마지막 방법으로, Hyper-V를 완전히 비활성화할 수 있습니다. 단, 이는 가상화 기능이 필요한 경우 권장되지 않습니다.

주의사항

  • WinNAT 서비스 재시작 후 WSL2를 사용 중이라면 네트워크 연결이 끊길 수 있으며, 이 경우 시스템 재시작이 필요할 수 있습니다.
  • 동적 포트 범위 변경 후에는 반드시 시스템을 재시작해야 변경사항이 적용됩니다.
  • 포트 범위를 변경할 때는 기존 애플리케이션의 동작에 영향을 주지 않도록 주의해야 합니다.

결론

Windows에서 포트 충돌 문제는 주로 가상화 관련 서비스들의 동적 포트 할당으로 인해 발생합니다. 상황에 따라 적절한 해결 방법을 선택하여 적용하면 됩니다. 가장 안전한 방법은 동적 포트 범위를 조정하는 것이며, 필요한 경우 특정 포트를 미리 예약하는 것이 좋습니다.

728x90
반응형