리눅스에서 어떤 포트가 열려 있고 어떤 프로세스가 사용 중인지 확인하려면 netstat, ss, lsof 같은 명령을 사용합니다.
포트 충돌이나 서버 접속 문제를 볼 때는 먼저 listen 상태의 포트를 확인하고, 이어서 해당 포트를 점유한 프로세스를 찾는 순서가 실용적입니다.
핵심 정리
리눅스에서 포트 문제를 볼 때는 어떤 주소와 포트가 listen 중인지, 어떤 프로세스가 그 포트를 잡고 있는지, 외부에서 접근 가능한 바인딩인지 순서대로 확인하는 것이 좋습니다.
- netstat과 ss는 현재 열려 있는 포트와 listen 상태를 확인하는 데 사용합니다.
- lsof는 특정 포트를 점유한 프로세스 이름과 PID를 찾는 데 유용합니다.
- 127.0.0.1에만 바인딩된 포트는 외부 호스트에서 직접 접근할 수 없습니다.
- 0.0.0.0 바인딩은 모든 네트워크 인터페이스에서 대기한다는 뜻입니다.
- 포트가 열려 있어도 방화벽이나 보안 그룹에서 막히면 외부 접속은 실패할 수 있습니다.
포트 장애는 listen 여부, 프로세스 점유, 바인딩 주소, 방화벽을 분리해서 보면 원인을 빠르게 좁힐 수 있습니다. 먼저 로컬에서 열려 있는지 확인한 뒤 외부 접근 경로를 확인하는 흐름이 안전합니다.
이어서 볼 글
- Linux 포트 확인 명령어: ss, lsof, nc, nmap - ss, lsof에 더해 nc와 nmap까지 포함한 포트 점검 명령어 정리이다.
- NTP 시간 동기화 설정: ntpd, ntpq, UDP 123 확인 - 실제 UDP 123 포트 확인이 필요한 NTP 운영 사례이다.
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)'Programming > Android' 카테고리의 다른 글
| 안드로이드 저장소 개념: SharedPreferences, 내부 저장소, 외부 저장소 (2) | 2019.03.06 |
|---|
