인텔리제이 8080 포트충돌

별빛사막·2025년 4월 10일
0

트러블슈팅

목록 보기
5/7
post-thumbnail

인텔리제이에서 어제까지 잘 실행하다가 오늘 갑자기 실행하니까 아래와 같은 port 충돌 오류가 났다

Web server failed to start. Port 8080 was already in use. 
Action: Identify and stop the process that's listening on port 8080 
or configure this application to listen on another port.

찾아보니까 대부분 아래와 같은 방식의 해결방법으로 진행하더라

  1. cmd를 관리자 모드로 실행
  2. netstat -ano | findstr 8080 명렁어 입력
  3. taskkill /f 1234 /PID 명령어로 강제 종료
  4. 인텔리제이 재실행

근데 찾아본 방법으로 진행했는데도 현재 실행중인 8080포트에 대해서 아무런 값이 나오지 않았다.

그래서 다른 방법으로 포트 충돌을 해결했다.
1. cmd를 관리자 모드로 실행
2. net stop winnatnet start winnat 명령어 입력
3. 인텔리제이 재실행

net stop winnat 과 net start winnat 명령어

winnat 이란?
WinNAT(Windows Network Address Translation)은 Windows에서 NAT(Network Address Translation) 기능을 제공하는 서비스이다.
특히, Windows에서 Docker, WSL2, Hyper-V 등의 가상화 네트워크를 사용할 때 이 서비스가 백그라운드에서 네트워크 주소를 매핑해준다.

  • net stop winnat
    → WinNAT 서비스를 중지해 네트워크 포트 포워딩 설정 등이 해제되는 걸 의미한다

  • net start winnat
    → WinNAT 서비스를 다시 시작

포트 충돌 문제가 해결된 이유?

  • 8080 포트를 점유하고 있던 게 일반 프로세스가 아니라, winnat을 통해 설정된 포트 포워딩이었을 가능성이 있다.
    → 이 경우 netstat로도 안 보이거나 LISTENING 상태가 아니어서 PID가 안 나올 수 있다.

  • Docker를 사용한다면 내부적으로 8080 포트를 컨테이너에 포워딩할 수 있고, 이건 WinNAT을 통해 처리된다.

만약 Windows에서 8080 충돌 발생했는데 netstat -ano 해도 안 보인다면?

  • WSL2 접속 >> wsl
  • 내부에서 포트 확인 >> `sudo netstat -tuln
  • 현재 8080 포트를 LISTEN 프로세스가 누군지 파악 >> lsof -i :8080 | grep LISTEN | awk '{print $1, $2}'
profile
조금씩 매일 성장하자

0개의 댓글