리눅스 netstat과 ss 차이

 

서버에서 포트가 열려 있는지 확인할 때 예전에는 netstat을 자주 썼다.

나도 거의 습관처럼 아래 명령어를 썼다.

netstat -tulnp
 

그런데 요즘 리눅스 서버에서는 netstat이 아예 설치되어 있지 않은 경우가 꽤 있다.

netstat: command not found
 

처음 보면 순간 당황한다.
포트 확인해야 하는데 왜 명령어가 없지 싶다.

이때 대신 쓰는 명령어가 ss다.

 
 

역할은 거의 비슷하다.
서버에서 열려 있는 포트, 연결된 TCP 세션, 어떤 프로세스가 포트를 사용 중인지 확인할 때 쓴다.

netstat은 오래된 방식

netstat은 예전부터 많이 쓰이던 네트워크 상태 확인 명령어다.

보통 net-tools 패키지에 포함되어 있다.

netstat -tulnp
 

옵션은 대략 이런 의미다.

-t : TCP
-u : UDP
-l : LISTEN 상태
-n : 주소와 포트를 숫자로 표시
-p : 프로세스 정보 표시
 

예를 들어 8080 포트가 열려 있는지 보고 싶으면 이렇게 확인할 수 있다.

netstat -tulnp | grep 8080
 

운영 문서나 예전 블로그 글을 보면 아직도 netstat 기준으로 설명된 경우가 많다.
그래서 아예 모를 필요는 없다.

다만 최신 리눅스 환경에서는 기본 설치가 안 되어 있을 수 있다.

ss는 요즘 더 많이 쓰는 방식

ss는 socket statistics의 줄임말로 보면 된다.
현재 서버의 소켓 상태를 확인하는 명령어다.

요즘 리눅스에서는 iproute2 패키지에 포함되어 있고, 대부분 기본으로 설치되어 있다.

netstat으로 보던 내용은 보통 ss로도 확인할 수 있다.

ss -tulnp
 

열려 있는 TCP 포트만 보고 싶으면 이렇게 쓴다.

ss -ltn
 

현재 연결된 TCP 세션을 보고 싶으면 아래처럼 쓴다.

ss -tan state established
 

웹소켓처럼 연결이 계속 유지되는 서버라면 이 명령어를 자주 보게 된다.

ss -tan state established | grep ':8080'
 

연결 개수만 보고 싶으면 wc -l을 붙이면 된다.

ss -tan state established | grep ':8080' | wc -l
 

netstat과 ss 차이

구분 netstat ss
포함 패키지 net-tools iproute2
사용 시기 예전부터 많이 사용 요즘 리눅스에서 주로 사용
기본 설치 없는 경우 있음 대부분 기본 설치
속도 연결이 많으면 느릴 수 있음 상대적으로 빠름
용도 포트, 연결 상태 확인 포트, 연결 상태 확인

둘 다 목적은 비슷하다.

다만 새로 익힌다면 ss를 먼저 보는 게 낫다.
특히 운영 서버에서 연결 수가 많거나, 웹소켓처럼 오래 유지되는 연결을 확인할 때는 ss가 더 편하다.

자주 쓰는 명령어 정리

열려 있는 TCP 포트 확인:

ss -ltn
 

TCP/UDP 포트와 프로세스 확인:

sudo ss -tulnp
 

특정 포트 확인:

sudo ss -tulnp | grep 8080
 

현재 연결된 TCP 세션 확인:

ss -tan state established
 

특정 포트에 연결된 세션 확인:

ss -tan state established | grep ':8080'
 

특정 포트 연결 개수 확인:

ss -tan state established | grep ':8080' | wc -l
 

예전 방식으로는 이렇게 썼다.

netstat -tulnp
netstat -ant | grep ESTABLISHED
 

요즘은 아래처럼 바꿔 쓰면 된다.

ss -tulnp
ss -tan state established
 

netstat과 ss는 둘 다 서버의 네트워크 상태를 확인하는 명령어다.

예전 글이나 운영 문서에서는 netstat을 많이 볼 수 있고, 최신 리눅스 서버에서는 ss를 더 자주 쓰게 된다.

ss -ltn
ss -tan state established
sudo ss -tulnp
 

서버를 운영하다 보면 이런 명령어가 은근히 자주 필요하다.
복잡한 장애 분석까지는 아니어도, “지금 포트가 열려 있나?”, “연결이 붙어 있나?” 정도를 빠르게 확인하는 데는 ss가 꽤 편하다.

작업 기록과 샘플 코드는 GitHub에도 정리해두고 있어요.

GitHub 팔로우

Continue Reading

이전 글 / 다음 글