
리눅스 서버에서 접속이 안 될 때 가장 먼저 확인하는 것 중 하나가 포트입니다.
서비스가 실행 중인지, 해당 포트가 LISTEN 상태인지, 어떤 프로세스가 포트를 잡고 있는지 확인해야 합니다.
예전에는 이런 상황에서 netstat 명령어를 많이 사용했습니다.
netstat -lntp
그런데 요즘 서버에서는 netstat이 없거나, 기본 설치가 안 되어 있는 경우가 있습니다.
이럴 때 당황할 필요는 없습니다.
대신 ss 명령어를 사용할 수 있습니다.
ss -lntp
이번 글에서는 netstat과 ss의 차이, 그리고 왜 요즘은 ss를 더 많이 쓰는지 초보 운영자 눈높이로 정리해 보겠습니다.
접속이 안 될 때 왜 포트부터 볼까?
서비스 접속이 안 된다고 해서 바로 방화벽부터 의심하면 안 됩니다.
먼저 서버 안에서 서비스가 포트를 열고 있는지 확인해야 합니다.
예를 들어 웹 서비스가 8080 포트로 떠 있어야 하는데 실제로는 포트가 안 열려 있을 수 있습니다.
이럴 때는 방화벽 문제가 아니라 서비스 프로세스 기동 문제일 수 있습니다.
확인 흐름은 보통 이렇게 봅니다.
서비스 프로세스가 떠 있는지 확인
포트가 LISTEN 상태인지 확인
서버 내부에서 curl 테스트
외부에서 접속 테스트
방화벽 또는 보안그룹 확인
즉, 포트 확인은 접속 장애를 볼 때 꽤 앞단에 있는 확인 작업입니다.
netstat은 어떤 명령어였나?
netstat은 네트워크 연결 상태, 라우팅 테이블, 포트 상태 등을 확인할 때 사용하던 명령어입니다.
예를 들어 LISTEN 포트를 확인할 때는 아래처럼 사용했습니다.
netstat -lntp
옵션을 간단히 보면 이렇습니다.
-l : LISTEN 상태만 확인
-n : 포트와 주소를 숫자로 표시
-t : TCP만 확인
-p : 프로세스 정보 표시
출력 예시는 이런 식입니다.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2345/java
여기서 봐야 할 것은 아래입니다.
Local Address
포트 번호
LISTEN 상태
PID/Program name
즉, 8080 포트가 열려 있고, java 프로세스가 잡고 있다는 뜻입니다.
그런데 왜 netstat이 없을까?
요즘 리눅스 서버에서는 netstat이 기본 설치되어 있지 않은 경우가 있습니다.
실제로 명령어를 입력했을 때 이런 메시지를 볼 수 있습니다.
netstat: command not found
이유는 netstat이 보통 net-tools 패키지에 포함되어 있는데, 최신 배포판에서는 기본 네트워크 확인 도구로 iproute2 계열 명령어를 더 많이 사용하기 때문입니다.
여기서 중요한 건 이것입니다.
netstat이 없다고 해서 포트 확인을 못 하는 게 아닙니다.
대신 ss를 쓰면 됩니다.
ss는 어떤 명령어인가?
ss는 socket statistics의 줄임말로, 소켓 상태를 확인하는 명령어입니다.
쉽게 말하면 현재 서버에서 열려 있는 포트와 연결 상태를 확인할 때 사용하는 명령어입니다.
기본적으로 포트 LISTEN 상태를 확인할 때는 아래처럼 사용합니다.
ss -lntp
netstat -lntp와 거의 비슷한 용도로 볼 수 있습니다.
예시 출력입니다.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=2345,fd=12))
여기서 봐야 할 것은 아래입니다.
State
Local Address:Port
Process
pid
즉, 8080 포트가 LISTEN 상태이고, PID 2345의 java 프로세스가 사용 중이라는 뜻입니다.
netstat과 ss 비교
실무에서 자주 쓰는 기준으로 보면 이렇게 정리할 수 있습니다.
netstat -lntp
→ 예전부터 많이 쓰던 포트 확인 명령어
ss -lntp
→ 요즘 리눅스 서버에서 더 자주 쓰는 포트 확인 명령어
비교하면 아래와 같습니다.
netstat
- 오래된 서버나 기존 문서에서 많이 보임
- net-tools 패키지가 필요할 수 있음
- 익숙한 사람이 많음
ss
- 최신 리눅스에서 기본적으로 사용되는 경우가 많음
- 속도가 빠른 편
- 출력이 더 자세한 경우가 있음
- 포트, 연결 상태, 프로세스 확인에 많이 사용
초보 운영자 입장에서는 이렇게 기억하면 됩니다.
netstat을 알고 있으면 좋지만,
실제 서버에서는 ss를 먼저 써보는 게 편하다.
가장 많이 쓰는 ss 명령어
포트 확인할 때 가장 많이 쓰는 형태는 아래입니다.
ss -lntp
옵션 의미는 이렇게 보면 됩니다.
-l : LISTEN 상태 확인
-n : 숫자로 표시
-t : TCP 확인
-p : 프로세스 정보 표시
특정 포트만 보고 싶다면 grep을 같이 씁니다.
ss -lntp | grep ':8080'
예를 들어 결과가 나오면:
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=2345,fd=12))
8080 포트가 열려 있는 상태입니다.
반대로 아무 결과도 나오지 않으면, 해당 포트가 LISTEN 상태가 아닐 가능성이 있습니다.
접속 장애 때 ss로 보는 순서
서버 접속이 안 될 때는 아래처럼 보면 좋습니다.
먼저 프로세스가 떠 있는지 확인합니다.
ps -ef | grep 서비스명
그다음 포트가 열려 있는지 확인합니다.
ss -lntp | grep ':8080'
서버 내부에서 curl로 테스트합니다.
curl http://localhost:8080
또는 응답 코드만 확인합니다.
curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8080
이렇게 보면 문제를 조금 나눠볼 수 있습니다.
프로세스가 없음
→ 서비스 기동 문제 가능성
프로세스는 있음, 포트가 안 열림
→ 애플리케이션 기동 실패 또는 설정 문제 가능성
포트는 열림, localhost curl 성공
→ 서버 내부 서비스는 응답함
내부는 되는데 외부 접속 안 됨
→ 방화벽, 보안그룹, 라우팅, LB 설정 확인 필요
이 흐름이 중요합니다.
바로 “방화벽 문제입니다”라고 말하기 전에 서버 안에서 어디까지 되는지 나눠봐야 합니다.
UDP 포트는 어떻게 볼까?
TCP뿐 아니라 UDP 포트를 봐야 할 때도 있습니다.
TCP LISTEN 확인은:
ss -lntp
UDP 확인은:
ss -lnup
옵션에서 u가 UDP를 의미합니다.
-t : TCP
-u : UDP
예를 들어 DNS, 일부 모니터링 에이전트, 특정 로그 수집 서비스는 UDP를 쓸 수 있습니다.
물론 일반적인 웹 서비스 확인은 대부분 TCP를 먼저 봅니다.
연결된 세션 확인하기
LISTEN 포트뿐 아니라 현재 연결된 세션을 보고 싶을 때도 있습니다.
ss -ant
여기서 ESTAB 상태를 보면 현재 연결된 TCP 세션을 확인할 수 있습니다.
ss -ant state established
특정 포트 기준으로 보려면:
ss -ant | grep ':8080'
이런 식으로 볼 수 있습니다.
다만 연결 세션이 많으면 출력이 많아질 수 있습니다.
운영 서버에서는 필요한 포트나 상태를 좁혀서 보는 것이 좋습니다.
ss 결과를 볼 때 주의할 점
ss -lntp를 실행했는데 프로세스명이 안 보일 때가 있습니다.
이 경우 권한 문제일 수 있습니다.
일반 계정으로 실행하면 PID나 프로세스 정보가 제한적으로 보일 수 있습니다.
필요하면 권한이 있는 계정에서 확인해야 합니다.
sudo ss -lntp
또는 root 계정에서 확인합니다.
그리고 0.0.0.0:8080과 127.0.0.1:8080도 구분해야 합니다.
0.0.0.0:8080
→ 모든 인터페이스에서 수신 가능
127.0.0.1:8080
→ 로컬 서버 내부에서만 접근 가능
만약 서비스가 127.0.0.1에만 떠 있다면 외부에서 바로 접속이 안 될 수 있습니다.
이건 초보 운영자가 자주 놓치는 부분입니다.
netstat을 꼭 설치해야 할까?
꼭 그렇지는 않습니다.
기존 문서가 netstat 기준으로 되어 있거나, 익숙한 운영자가 있다면 설치해서 사용할 수도 있습니다.
하지만 단순히 포트 확인이 목적이라면 ss로 충분한 경우가 많습니다.
netstat이 없을 때 패키지를 설치하기 전에 먼저 이렇게 생각하면 됩니다.
포트 확인만 필요한가?
→ ss -lntp로 먼저 확인
기존 운영 절차가 netstat 기준인가?
→ 설치 여부 검토
서버에 패키지 설치가 제한되어 있는가?
→ ss로 대체 확인
운영 서버에서는 불필요한 패키지를 바로 설치하기보다, 이미 있는 명령어로 확인 가능한지 먼저 보는 것이 안전합니다.
실무 보고 예시
접속 장애 상황에서 이렇게 정리할 수 있습니다.
현재 대상 서버에서 서비스 프로세스 및 포트 상태를 확인했습니다.
ps 기준 서비스 프로세스는 기동 중이며, ss -lntp 기준 8080 포트 LISTEN 상태도 확인됩니다.
서버 내부 curl 테스트 결과 HTTP 200 응답이 확인되어, 서버 내부 서비스 응답은 정상으로 보입니다.
외부 접속 경로의 방화벽, 보안그룹, LB 설정을 추가 확인하겠습니다.
포트가 안 열려 있다면 이렇게 쓸 수 있습니다.
현재 ss -lntp 기준 8080 포트 LISTEN 상태가 확인되지 않습니다.
서비스 프로세스 기동 상태와 애플리케이션 로그를 우선 확인하겠습니다.
netstat이 없어서 ss로 확인했다면 이렇게 말하면 됩니다.
해당 서버에는 netstat 명령어가 기본 설치되어 있지 않아 ss 명령어로 포트 상태를 확인했습니다.
ss -lntp 기준 대상 포트 LISTEN 여부와 프로세스 정보를 확인하겠습니다.
정리
리눅스 서버에서 접속이 안 될 때는 포트가 열려 있는지 먼저 확인해야 합니다.
예전에는 netstat을 많이 썼지만, 요즘 서버에서는 ss를 더 자주 쓰는 경우가 많습니다.
가장 기본 명령어는 아래입니다.
ss -lntp
특정 포트만 보고 싶다면:
ss -lntp | grep ':8080'
netstat과 비교하면 이렇게 기억하면 됩니다.
netstat은 예전부터 많이 쓰던 명령어
ss는 요즘 리눅스 서버에서 자주 쓰는 포트 확인 명령어
초보 운영자라면 아래 문장을 기억해도 좋습니다.
접속이 안 될 때 netstat만 찾지 말고, ss -lntp로 포트와 프로세스를 먼저 확인한다.
서버 접속 장애 대응도 결국 확인 → 판단 → 조치 순서가 중요합니다.
관련 글 연결 문구
포트 확인은 접속 장애를 볼 때 기본이 되는 확인 작업입니다.
아래 글도 함께 보면 좋습니다.
- 리눅스 서버 접속이 안 될 때 ss -lntp로 포트 확인하는 법
- 리눅스 서버 접속이 안 될 때 curl로 통신 테스트하는 법
- 리눅스 서버 서비스가 안 떠 있을 때 ps -ef로 프로세스 확인하는 법
- 리눅스 서버가 느려졌을 때 바로 재기동하기 전 기본 점검 순서
다음 글에서는 서버 재기동 전 체크리스트를 정리해 보겠습니다.
'리눅스' 카테고리의 다른 글
| 리눅스 서버 로그 확인할 때 cat부터 치지 말고 tail과 less로 안전하게 보는 법 (0) | 2026.05.21 |
|---|---|
| 리눅스 서버 재기동 전 바로 껐다 켜지 말고 확인해야 할 체크리스트 (0) | 2026.05.20 |
| 리눅스 서버 접속이 안 될 때 방화벽부터 보기 전 curl로 확인하는 법 (0) | 2026.05.18 |
| 리눅스 서버가 느릴 때 디스크 I/O 문제를 iostat으로 확인하는 법 (0) | 2026.05.17 |
| 리눅스 서버가 느려졌을 때 바로 재기동하기 전 기본 점검 순서 (0) | 2026.05.16 |