개요
리눅스 시스템 관리와 트러블슈팅의 핵심인 네트워크 소켓 분석 도구 ss 명령어의 사용법을 다룹니다. 구형 netstat 대신 최신 리눅스 표준으로 자리 잡은 ss 명령어로 열린 포트와 활성 연결, 프로세스 정보를 손쉽게 확인하는 실습을 진행합니다.
1. ss 명령어 기본 환경 확인 및 전체 소켓 통계 조회
우분투 시스템에서 ss 명령어를 사용하기 위해 관련 도구가 포함된 iproute2 패키지를 최신 상태로 확인하고 설치합니다.

ss 명령어는 리눅스 커널의 네트워크 소켓 상태를 빠르고 상세하게 조회하는 도구로, -s 옵션을 함께 사용하면 현재 시스템에서 열려 있는 전체 소켓의 요약 통계를 한눈에 확인할 수 있습니다.
⚙️ [주요 옵션]
-s : 전체 소켓(TCP, UDP, RAW 등)의 요약 통계 정보를 출력합니다.-t : TCP 소켓 정보만 필터링하여 출력합니다.-u : UDP 소켓 정보만 필터링하여 출력합니다.-l : 현재 연결 대기 중인 리스닝(LISTEN) 소켓 목록을 표시합니다.-a : 리스닝 상태와 연결 수립 상태를 포함한 모든(All) 소켓을 출력합니다.-n : 서비스 이름이나 호스트명 대신 포트 번호와 IP 주소를 숫자로 표시합니다.-p : 각 소켓을 사용 중인 프로세스 이름과 PID 정보를 함께 표시합니다.

2. 웹 서버 설치 및 리스닝(Listening) TCP 포트 조회
포트 조회 실습에 사용할 Nginx 웹 서버를 설치하고 서비스 데몬을 즉시 시작합니다.

ss -tl 명령어를 실행하면 현재 시스템에서 클라이언트의 접속을 기다리는 리스닝(LISTEN) 상태의 TCP 소켓 목록이 서비스 이름(예: http, ssh, domain) 형태로 출력됩니다.
출력 결과에서 방금 실행한 Nginx 웹 서버가 80번 포트(http)에서 정상적으로 대기 중인 것을 확인할 수 있습니다.

ss -tln 명령어에 -n 옵션을 추가하면 잘 알려진 서비스 이름 대신 실제 포트 번호를 숫자로 직접 표시합니다.
이를 통해 http 대신 80, ssh 대신 22와 같이 정확한 수치 포트 번호로 리스닝 상태를 명확하게 분석할 수 있습니다.

3. 포트와 연결된 프로세스 정보(PID 및 프로그램명) 확인
ss -tlp 명령어를 실행하면 현재 리스닝 중인 TCP 소켓과 함께 해당 포트를 열고 있는 프로세스의 이름과 PID 정보를 확인할 수 있습니다.
출력 결과의 Process 항목을 통해 Nginx 웹 서버와 systemd 관련 데몬이 각 포트를 점유하고 있는 구체적인 프로세스 매핑 상태가 표시됩니다.

ss -tulpn 명령어는 TCP와 UDP를 아우르는 모든 리스닝 소켓을 숫자 형태의 포트 번호와 담당 프로세스 정보까지 포함하여 한 번에 출력합니다.
이를 통해 80번(Nginx)이나 22번(SSH), 53번(systemd-resolve) 포트를 사용하는 프로세스와 PID를 숫자 포트 번호 기반으로 신속하게 파악할 수 있습니다.

4. 활성 네트워크 연결 확인 및 특정 포트 필터링
실제 네트워크 요청을 발생시켜 활성 연결 상태를 확인하기 위해 curl 패키지를 설치하고 로컬 웹 서버로 요청을 전송합니다.

ss -ta 명령어를 실행하면 대기 중인 리스닝(LISTEN) 소켓뿐만 아니라 요청 처리 후 종료 대기 중인 TIME-WAIT 상태를 포함한 모든 TCP 소켓 목록을 출력합니다.
출력 결과를 통해 방금 발생시킨 로컬 웹 요청으로 인해 생성된 127.0.0.1:http 연결의 TIME-WAIT 상태 소켓을 확인할 수 있습니다.

ss -t state established 명령어는 TCP 소켓 중 데이터 통신이 정상적으로 수립되어 유지 중인 ESTABLISHED 상태의 연결만 필터링하여 출력합니다.
앞서 발생한 요청이 이미 완료되어 세션이 종료되었기 때문에 현재 유지 중인 활성 연결은 조회되지 않습니다.

ss -tln 'sport = :80' 명령어는 소스 포트(sport) 필터를 적용하여 로컬 80번 포트를 사용하는 리스닝 상태의 TCP 소켓만 정확하게 선별하여 표시합니다.
이를 통해 수많은 네트워크 소켓 중에서 Nginx 웹 서버가 사용하는 HTTP 포트의 대기 상태만 신속하게 분리하여 점검할 수 있습니다.

지금까지 우분투 환경에서 netstat을 대체하는 ss 명령어로 네트워크 포트 상태를 확인하고 분석하는 방법을 간단하게 살펴보았습니다.
앞으로 서버 모니터링과 네트워크 트러블슈팅 시 ss 명령어를 유용하게 활용해 보시기 바랍니다.