Linux에서 ss 명령을 사용하는 방법

0
1311

Linux 랩탑 시스템의 터미널 창.
Fatmawati Achmad Zaenuri / 셔터 스톡

그만큼 ss 명령은 고전을 대체하는 현대적입니다 netstat. Linux에서이를 사용하여 네트워크 연결에 대한 통계를 얻을 수 있습니다. 이 편리한 도구로 작업하는 방법은 다음과 같습니다.

ss 명령 대 netstat

더 이상 사용되지 않는 제품의 대체품 netstat 명령, ss 컴퓨터가 다른 컴퓨터, 네트워크 및 서비스와 통신하는 방법에 대한 자세한 정보를 제공합니다.

ss TCP (Transmission Control Protocol), UDP (User Datagram Protocol), Unix (인터 프로세스) 및 원시 소켓에 대한 통계를 표시합니다. 원시 소켓은 네트워크 OSI 수준에서 작동하므로 TCP 및 UDP 헤더는 전송 계층이 아니라 응용 프로그램 소프트웨어에서 처리해야합니다. ICMP (Internet Control Message Protocol) 메시지와 핑 유틸리티는 모두 원시 소켓을 사용합니다.

ss 사용

설치할 필요가 없습니다 ss이미 최신 Linux 배포판에 포함되어 있기 때문입니다. 그러나 출력은 매우 길 수 있습니다. 630 개가 넘는 라인이 포함 된 결과가있었습니다. 결과도 매우 넓습니다.

이 때문에 스크린 샷에 맞지 않기 때문에 얻은 ​​결과의 텍스트 표현이 포함되었습니다. 더 관리하기 쉽도록 정리했습니다.

네트워크 연결 나열

사용 ss 명령 줄 옵션이 없으면 듣지 않는 소켓이 나열됩니다. 즉, 청취 상태가 아닌 소켓을 나열합니다.

이것을 보려면 다음을 입력하십시오.

ss

터미널 창에서 ss

터미널 창의 ss 출력.

Netid State Recv-Q Send-Q          Local Address:Port Peer Address:Port   Process
u_str ESTAB 0      0                           * 41826           * 41827
u_str ESTAB 0      0 /run/systemd/journal/stdout 35689           * 35688
u_str ESTAB 0      0                           * 35550           * 35551
...
u_str ESTAB 0      0                           * 38127           * 38128
u_str ESTAB 0      0 /run/dbus/system_bus_socket 21243           * 21242
u_str ESTAB 0      0                           * 19039           * 19040
u_str ESTAB 0      0 /run/systemd/journal/stdout 18887           * 18885 
u_str ESTAB 0      0 /run/dbus/system_bus_socket 19273           * 17306
icmp6 UNCONN 0     0                           *:ipv6-icmp       *:*
udp   ESTAB 0      0         192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps

열은 다음과 같습니다.

  • 네이드: 소켓 유형. 이 예에서는 IP 버전 6 ICMP 소켓 인 “u_str”, Unix 스트림, “udp”및 “icmp6″이 있습니다. Linux 매뉴얼 페이지에서 Linux 소켓 유형에 대한 자세한 설명을 찾을 수 있습니다.
  • 상태: 소켓이있는 상태입니다.
  • Recv-Q: 수신 된 패킷 수입니다.
  • Send-Q: 전송 된 패킷 수
  • 현지 주소 : 포트: 로컬 주소 및 포트 (또는 Unix 소켓과 동등한 값)
  • 피어 주소 : 포트: 원격 주소 및 포트 (또는 Unix 소켓과 동등한 값)

UDP 소켓의 경우 “상태”열은 일반적으로 비어 있습니다. TCP 소켓의 경우 다음 중 하나 일 수 있습니다.

  • 들리다: 서버 측만 해당. 소켓이 연결 요청을 기다리고 있습니다.
  • 보냄 : 클라이언트 측만 해당. 이 소켓은 연결 요청을했으며 수락 여부를 기다리고 있습니다.
  • 동기화 됨 : 서버 측만 해당. 이 소켓은 연결 요청을 수락 한 후 연결 승인을 기다리고 있습니다.
  • 설립 : 서버와 클라이언트. 서버와 클라이언트간에 작업 연결이 설정되어 두 서버간에 데이터를 전송할 수 있습니다.
  • 핀 대기 -1 : 서버와 클라이언트. 이 소켓은 원격 소켓으로부터의 연결 종료 요청 또는이 소켓에서 이전에 전송 된 연결 종료 요청의 승인을 기다리고 있습니다.
  • 핀-웨이트 -2 : 서버와 클라이언트. 이 소켓은 원격 소켓으로부터 연결 종료 요청을 기다리고 있습니다.
  • 마감 대기 시간 : 서버와 클라이언트. 이 소켓은 로컬 사용자의 연결 종료 요청을 기다리고 있습니다.
  • 폐쇄: 서버와 클라이언트. 이 소켓은 원격 소켓으로부터의 연결 종료 요청 확인을 기다리고 있습니다.
  • 마지막 -ACK : 서버와 클라이언트. 이 소켓은 원격 소켓으로 전송 된 연결 종료 요청에 대한 승인을 기다리고 있습니다.
  • 대기 시간 : 서버와 클라이언트. 이 소켓은 원격 소켓의 종료 요청을 수신했음을 알리기 위해 승인을 원격 소켓에 보냈습니다. 이제 승인이 수신되기를 기다리고 있습니다.
  • 닫은: 연결이 없으므로 소켓이 종료되었습니다.

청취 소켓 나열

청취 소켓을 확인하기 위해 -l (듣기) 옵션 :

ss -l

터미널 창에서 ss -l.

Netid State  Recv-Q Send-Q               Local Address:Port                  Peer Address:Port Process 
nl    UNCONN 0      0                             rtnl:NetworkManager/535                * 
nl    UNCONN 0      0                             rtnl:evolution-addre/2987              * 
...
u_str LISTEN 0      4096          /run/systemd/private 13349                            * 0 
u_seq LISTEN 0      4096             /run/udev/control 13376                            * 0 
u_str LISTEN 0      4096             /tmp/.X11-unix/X0 33071                            * 0 
u_dgr UNCONN 0      0      /run/systemd/journal/syslog 13360                            * 0 
u_str LISTEN 0      4096    /run/systemd/fsck.progress 13362                            * 0 
u_dgr UNCONN 0      0    /run/user/1000/systemd/notify 32303                            * 0

이 소켓들은 모두 연결되지 않은 상태입니다. “rtnl”은 커널과 사용자 공간 프로세스간에 정보를 전송하는 데 사용되는 라우팅 넷 링크를 의미합니다.

모든 소켓 나열

모든 소켓을 나열하려면 -a (전체) 옵션 :

ss -a

터미널 창에서 ss -a.

Netid State  Recv-Q Send-Q    Local Address:Port                 Peer Address:Port    Process 
nl    UNCONN 0      0                  rtnl:NetworkManager/535               * 
nl    UNCONN 0      0                  rtnl:evolution-addre/2987 * 
...
u_str LISTEN 0      100       public/showq 23222                            * 0 
u_str LISTEN 0      100      private/error 23225                            * 0 
u_str LISTEN 0      100      private/retry 23228                            * 0 
...
udp   UNCONN 0      0             0.0.0.0:631                         0.0.0.0:* 
udp   UNCONN 0      0             0.0.0.0:mdns                        0.0.0.0:* 
...
tcp   LISTEN 0      128              [::]:ssh                            [::]:* 
tcp   LISTEN 0      5               [::1]:ipp                            [::]:* 
tcp   LISTEN 0      100             [::1]:smtp                           [::]:*

출력에는 상태에 관계없이 모든 소켓이 포함됩니다.

TCP 소켓 나열

일치하는 소켓 만 표시되도록 필터를 적용 할 수도 있습니다. 우리는 -t (TCP) 옵션을 사용하므로 TCP 소켓 만 나열됩니다.

ss -a -t

 터미널 창에서 ss -a -t.

UDP 소켓 나열

그만큼 -u (UDP) 옵션은 동일한 유형의 필터링 동작을 수행합니다. 이번에는 UDP 소켓 만 표시됩니다.

ss -a -u

터미널 창에서 ss -a -u.

State  Recv-Q Send-Q    Local Address:Port Peer   Address:Port Process 
UNCONN 0      0               0.0.0.0:631         0.0.0.0:* 
UNCONN 0      0               0.0.0.0:mdns        0.0.0.0:* 
UNCONN 0      0               0.0.0.0:60734       0.0.0.0:* 
UNCONN 0      0         127.0.0.53%lo:domain      0.0.0.0:* 
ESTAB 0       0    192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps 
UNCONN 0      0                   [::]:mdns          [::]:* 
UNCONN 0      0                   [::]:51193         [::]:*

유닉스 소켓 나열

유닉스 소켓 만 보려면 -x 아래와 같이 (Unix) 옵션 :

ss -a -x

터미널 창의 ss -a -x.

Netid State Recv-Q Send-Q               Local Address:Port  Peer Address:Port    Process 
u_str ESTAB 0      0                                * 41826            * 41827 
u_str ESTAB 0      0                                * 23183            * 23184 
u_str ESTAB 28     0               @/tmp/.X11-unix/X0 52640            * 52639 
...
u_str ESTAB 0      0      /run/systemd/journal/stdout 18887            * 18885 
u_str ESTAB 0      0      /run/dbus/system_bus_socket 19273            * 17306

원시 소켓 나열

원시 소켓에 대한 필터는 -w (원시) 옵션 :

ss -a -w

터미널 창에서 ss -a -w.

IP 버전 4 소켓 나열

TCP / IP 버전 4 프로토콜을 사용하는 소켓은 -4 (IPV4) 옵션 :

ss -a -4

터미널 창에서 ss -a -4.

IP 버전 6 소켓 나열

다음과 일치하는 IP 버전 6 필터를 켤 수 있습니다. -6 (IPV6) 옵션은 다음과 같습니다.

ss -a -6

터미널 창에서 ss -a -6.

상태 별 소켓 나열

소켓의 상태에 따라 소켓을 나열 할 수 있습니다. state 선택권. 이것은 확립, 청취 또는 닫힌 상태에서 작동합니다. 또한 resolve 옵션 (-r) : 네트워크 주소를 이름으로, 포트를 프로토콜로 확인합니다.

다음 명령은 설정된 TCP 연결을 찾습니다. ss 이름을 확인하려고합니다.

ss -t -r state established

터미널 창에서 ss -t -r 상태가 설정되었습니다.

설정된 상태에있는 4 개의 연결이 나열됩니다. 호스트 이름 ubuntu20-04가 해결되었으며 두 번째 줄의 SSH 연결에 22 대신 “ssh”가 표시됩니다.

청취 상태의 소켓을 찾기 위해 이것을 반복 할 수 있습니다 :

ss -t -r state listening

터미널 창에서 ss -t -r 상태 청취.

Recv-Q Send-Q Local Address:Port   Peer Address:Port Process 
0      128        localhost:5939        0.0.0.0:* 
0      4096    localhost%lo:domain      0.0.0.0:* 
0      128          0.0.0.0:ssh         0.0.0.0:* 
0      5          localhost:ipp         0.0.0.0:* 
0      100        localhost:smtp        0.0.0.0:* 
0      128             [::]:ssh         [::]:* 
0      5      ip6-localhost:ipp         [::]:* 
0      100    ip6-localhost:smtp        [::]:*

프로토콜 별 소켓 나열

특정 프로토콜을 사용하여 소켓을 나열 할 수 있습니다. dportsport 대상 및 소스 포트를 각각 나타내는 옵션.

소켓에 HTTPS 프로토콜을 사용하여 소켓을 나열하려면 다음을 입력하십시오. established 연결 (여는 괄호 뒤 및 닫는 괄호 앞의 공백에 유의) :

ss -a state established ‘( dport = :https or sport = :https )’

ss-상태가 터미널 창에서 '(dport = : https 또는 sport = : https)'로 설정되었습니다.

프로토콜 이름 또는 일반적으로 해당 프로토콜과 관련된 포트를 사용할 수 있습니다. SSH (Secure Shell)의 기본 포트는 포트 22입니다.

하나의 명령에 프로토콜 이름을 사용한 다음 포트 번호를 사용하여 반복합니다.

ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’

터미널 창에서 ss -a '(dport = : ssh 또는 sport = : ssh)'.

예상대로 동일한 결과를 얻습니다.

특정 IP 주소에 대한 연결 나열

이랑 dst (목적지) 옵션에서 특정 대상 IP 주소에 대한 연결을 나열 할 수 있습니다.

우리는 다음을 입력합니다 :

ss -a dst 192.168.4.25

터미널 창에서 ss -a dst 192.168.4.25.

프로세스 식별

소켓을 사용하는 프로세스를 확인하려면 프로세스 옵션 (-p아래에 표시된대로 사용해야합니다 (참고 : sudo) :

sudo ss -t -p

터미널 창에서 sudo ss -t -p.

State Recv-Q Send-Q  Local Address:Port   Peer Address:Port  Process 
ESTAB 0      0       192.168.4.28:57650  54.218.19.119:https users:(("firefox",pid=3378,fd=151)) 
ESTAB 0      0       192.168.4.28:ssh     192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))

이것은 TCP 데몬에 설정된 두 개의 연결이 SSH 데몬과 Firefox에서 사용되고 있음을 보여줍니다.

합당한 후계자

그만큼 ss 명령은 이전에 제공 한 것과 동일한 정보를 제공합니다 netstat보다 간단하고 접근하기 쉬운 방식으로 추가 옵션 및 팁은 매뉴얼 페이지를 참조하십시오.