ss 개요
`ss` 명령어는 커널의 `netlink` 인터페이스를 통해 소켓 정보를 직접 가져오므로, 대량의 연결이 있는 시스템에서 `netstat`보다 훨씬 빠르게 작동합니다. 또한, `netstat`이 제공하지 않는 더 많은 TCP 상태 정보와 자세한 소켓 통계를 제공합니다. 현대 Linux 시스템에서 네트워크 관련 정보를 조회할 때는 `ss` 사용이 강력히 권장됩니다.
ss의 주요 역할
`ss` 명령어는 주로 다음과 같은 목적으로 사용됩니다:
주요 활용 분야
- 네트워크 연결 및 리스닝 포트 확인: 시스템의 모든 활성 TCP, UDP, UNIX 소켓을 표시합니다.
- 프로세스-포트 매핑: 어떤 프로세스가 특정 포트를 사용하고 있는지 확인합니다.
- 라우팅 테이블 확인: IP 패킷이 전송되는 경로를 정의하는 라우팅 테이블을 표시합니다.
- 네트워크 인터페이스 통계: 각 네트워크 인터페이스의 패킷 전송 및 수신 통계를 제공합니다.
- 소켓 상태 상세 분석: TCP 연결의 상세 상태(예: `ESTAB`, `LISTEN`, `TIME-WAIT` 등)와 통계를 심층적으로 분석합니다.
`ss` vs `netstat`
`ss`는 `netstat`의 현대적이고 강력한 대안입니다.
- ss: 현대적이고 빠르며, 커널의 소켓 통계 직접 접근, IPv6 완벽 지원, 더 많은 필터링 옵션 제공.
- netstat: 레거시 도구, `/proc` 파일 시스템 기반, 대규모 연결 시 느릴 수 있음, IPv6 지원 불완전.
주요 ss 명령어 옵션
`ss` 명령어는 다양한 옵션을 조합하여 원하는 네트워크 정보를 상세하게 필터링하고 표시할 수 있습니다.
1. 소켓 유형 및 상태 필터링
2. 출력 형식 및 상세 정보
3. 라우팅 및 기타
생성된 명령어:
명령어를 조합해 보세요.
설명:
`ss` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
`ss` 명령어의 다양한 활용 예시들을 통해 시스템의 네트워크 연결 및 소켓 상태를 효과적으로 모니터링하고 분석해 보세요.
모든 활성 TCP 연결 및 리스닝 포트 확인
sudo ss -tulpn
현재 시스템에서 활성화된 모든 TCP 소켓(리스닝 포함)을 숫자 주소로 표시하고, 관련된 프로그램 이름과 PID도 함께 보여줍니다.
모든 리스닝(Listening) TCP 포트만 확인
sudo ss -tlpn
현재 연결을 기다리고 있는 모든 TCP 리스닝 포트를 숫자 형식으로 표시합니다. 웹 서버, 데이터베이스 등의 서비스 포트가 열려 있는지 확인할 때 유용합니다.
특정 포트를 사용하는 프로세스 확인
sudo ss -tlpn | grep :22
포트 `22`(SSH)를 사용하고 있는 모든 TCP 연결 및 리스닝 포트의 상세 정보를 확인합니다. (SSH 서버 진단 시 유용)
ESTABLISHED 상태의 모든 TCP 연결 확인
ss -t state established
현재 활성화되어 데이터 통신 중인 모든 TCP 연결을 표시합니다. 외부 연결이 정상적인지 확인할 때 유용합니다.
TIME-WAIT 상태 소켓 수 확인
ss -s | grep -i time-wait
TCP 연결 종료 후 `TIME-WAIT` 상태로 남아있는 소켓의 수를 확인합니다. 이 수가 너무 많으면 시스템 자원 고갈의 원인이 될 수 있습니다.
모든 UDP 소켓 확인
ss -ulpn
현재 시스템에서 사용 중인 모든 UDP 소켓 연결 및 리스닝 포트를 확인합니다.
라우팅 테이블 확인
ss -r
시스템의 IP 라우팅 테이블을 표시합니다. `ip route show`와 유사합니다.