반응형

리눅스에서 어떤 포트가 열려 있고 어떤 프로세스가 사용 중인지 확인하려면 netstat, ss, lsof 같은 명령을 사용합니다.

포트 충돌이나 서버 접속 문제를 볼 때는 먼저 listen 상태의 포트를 확인하고, 이어서 해당 포트를 점유한 프로세스를 찾는 순서가 실용적입니다.

 

핵심 정리

리눅스에서 포트 문제를 볼 때는 어떤 주소와 포트가 listen 중인지, 어떤 프로세스가 그 포트를 잡고 있는지, 외부에서 접근 가능한 바인딩인지 순서대로 확인하는 것이 좋습니다.

  • netstat과 ss는 현재 열려 있는 포트와 listen 상태를 확인하는 데 사용합니다.
  • lsof는 특정 포트를 점유한 프로세스 이름과 PID를 찾는 데 유용합니다.
  • 127.0.0.1에만 바인딩된 포트는 외부 호스트에서 직접 접근할 수 없습니다.
  • 0.0.0.0 바인딩은 모든 네트워크 인터페이스에서 대기한다는 뜻입니다.
  • 포트가 열려 있어도 방화벽이나 보안 그룹에서 막히면 외부 접속은 실패할 수 있습니다.

포트 장애는 listen 여부, 프로세스 점유, 바인딩 주소, 방화벽을 분리해서 보면 원인을 빠르게 좁힐 수 있습니다. 먼저 로컬에서 열려 있는지 확인한 뒤 외부 접근 경로를 확인하는 흐름이 안전합니다.

이어서 볼 글

 

netstat: listen 하고 있는 포트들 확인

$ sudo netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.1:45249         0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:9868            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:9993            0.0.0.0:*               LISTEN

lsof를 쓰게 되면 어떤 프로세스인지 확인할 수 있다.

$ sudo lsof -i -P -n | grep LISTEN
systemd-r    2642 systemd-resolve   14u  IPv4    25307      0t0  TCP 127.0.0.53:53 (LISTEN)
redis-ser    2796           redis    6u  IPv4    32072      0t0  TCP 127.0.0.1:6379 (LISTEN)
docker-pr 1047663            root    4u  IPv4 31617983      0t0  TCP *:9993 (LISTEN)
docker-pr 1047671            root    4u  IPv6 31620897      0t0  TCP *:9993 (LISTEN)
반응형

+ Recent posts