Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스 ss 명령어로 네트워크 연결 모니터링하는 방법

리눅스 ss 명령어로 네트워크 연결 모니터링하는 방법

리눅스를 사용하다 보면 네트워크 상태를 자세히 파악해야 하는 순간이 반드시 찾아옵니다. 이럴 때 활용할 수 있는 도구는 여러 가지가 있지만, 그중 ss 명령어는 대부분의 리눅스 시스템에 기본적으로 설치되어 있어 언제든 믿고 사용할 수 있는 든든한 도구입니다.

ss 명령어란 무엇인가?

두 글자뿐인 명령어 이름이 다소 생소하게 느껴질 수 있지만, 사실 그 의미는 아주 단순합니다. 많은 리눅스/유닉스 명령어와 마찬가지로 명령어 이름은 기능의 약어입니다. 여기서 'ss'는 소켓 통계(Socket Statistics)를 의미합니다.

Socket Statistics는 오래된 netstat 도구를 대체하기 위해 개발된 것으로, 더 쉽게 사용하고 이해할 수 있도록 설계되었습니다. 소켓 관련 정보를 화면에 보여주는 도구로, 가장 널리 사용되는 TCP 및 UDP 소켓은 물론 DCCP, RAW, 유닉스 도메인 소켓까지 함께 표시할 수 있습니다.

기본 사용법

ss 명령어를 가장 간단하게 사용하는 방법은 인수 없이 그냥 실행하는 것입니다. 다만 한 번에 출력되는 데이터가 상당히 많기 때문에, less로 파이프하여 읽기 편하게 만드는 것이 좋습니다.

ss | less

이 상태 그대로는 정보가 너무 방대해서 실제로 활용하기 어렵습니다. 특정 유형의 소켓만 필터링하면 훨씬 편리해집니다.

예를 들어 TCP 소켓만 나열할 수 있습니다.

ss -t

리눅스 ss 명령어로 네트워크 연결 모니터링하는 방법

반대로 UDP 소켓만 나열할 수도 있습니다.

ss -u

기본적으로 위 옵션들은 연결이 설정된 소켓만 표시합니다. 수신 중이거나 연결된 모든 TCP 소켓을 나열하려면 다음과 같이 실행하세요.

ss -t -a

지금까지의 내용은 꽤 간단합니다. 이제 조금 더 깊이 들어가 보겠습니다.

ss 명령어로 할 수 있는 유용한 작업들

기본 사용법을 익혔으니, 이제 ss 명령어를 본격적으로 활용해 네트워크를 모니터링할 차례입니다. 가능한 작업은 매우 다양하지만, 시작하기 좋은 몇 가지 예를 소개합니다.

TCP 상태 모니터링

네트워킹에 익숙하다면 이미 알고 있겠지만, TCP 연결에는 여러 단계가 있으며 이는 연결의 전체 수명 주기를 나타냅니다. ss 명령어를 사용하면 원하는 특정 단계만 골라서 확인할 수 있습니다.

"established(연결됨)"나 "closed(종료됨)" 같은 표준 TCP 상태 외에도, ss 명령어는 몇 가지 커스텀 필터를 지원합니다. 예를 들어 "connected" 상태는 "listening"과 "closed"를 제외한 모든 TCP 상태를 의미합니다. 이 필터를 적용하려면 다음을 실행하세요.

ss state connected

IPv4와 IPv6 구분하기

네트워크에서 IPv6와 IPv4 주소를 혼용하고 있다면, ss 명령어로 이를 손쉽게 필터링할 수 있습니다. -4 또는 -6 플래그를 사용하면 됩니다. 모든 IPv4 연결을 확인하려면 TCP 상태 필터와 함께 사용할 수도 있습니다.

ss -4 state connected

리눅스 ss 명령어로 네트워크 연결 모니터링하는 방법

모든 IPv6 소켓을 확인하고 싶다면 다음 명령을 실행하면 됩니다.

ss -6

이 소켓을 사용하는 프로세스는?

어떤 소켓이 수신 중인데 그 원인을 모른다면, 간단히 추적할 수 있습니다. 다음 명령을 실행하면 연결된 모든 IPv4 TCP 소켓의 프로세스 이름과 PID(프로세스 ID)를 확인할 수 있습니다.

ss -4p state connected

리눅스 ss 명령어로 네트워크 연결 모니터링하는 방법

요약 정보 한눈에 보기

때로는 시스템의 소켓 현황을 간략하게 훑어보고 싶을 때가 있습니다. 이 역시 매우 간단한 명령으로 처리할 수 있으며, 알파벳 "s"와 대시 하나만 입력하면 됩니다.

ss -s

리눅스 ss 명령어로 네트워크 연결 모니터링하는 방법

이 명령은 시스템에 존재하는 모든 소켓의 요약 정보를 보여주며, 각 소켓이 IPv4인지 IPv6인지도 함께 표시해 줍니다.

네트워크에 대해 더 알고 싶다면?

여기서 소개한 내용은 ss 명령어로 할 수 있는 일의 시작에 불과합니다. 강력한 도구일 뿐만 아니라 배워둘 가치가 충분합니다. 더 깊이 알아보려면 터미널을 열고 man 페이지 문서를 살펴보세요. man ss를 실행하면 바로 시작할 수 있습니다.

시스템 보안을 강화하고 싶다면 ss가 유용하지만, 이것만이 유일한 선택지는 아닙니다. 리눅스에서 열린 포트를 확인하는 방법에 대한 가이드도 함께 참고해 보시기 바랍니다.