Tin tức và phân tích của tất cả các thiết bị di động

Cách sử dụng lệnh ss trong linux

Lệnh ss là một sự thay thế hiện đại cho netstat cổ điển. Bạn có thể sử dụng nó trên linux để lấy số liệu thống kê về các kết nối mạng của mình. Đây là cách làm việc với công cụ tiện dụng này.

lệnh ss so với netstat

Việc thay thế netstat,ss không dùng nữa cung cấp cho bạn thông tin chi tiết về cách máy tính của bạn giao tiếp với các máy tính, mạng và dịch vụ khác.

ss hiển thị số liệu thống kê cho Giao thức điều khiển truyền dẫn (TCP), Giao thức gói dữ liệu người dùng (UDP), Unix (xử lý liên kết) và ổ cắm thô. Các ổ cắm thô hoạt động ở cấp độ OSI của mạng, có nghĩa là các tiêu đề TCP và UDP phải được xử lý bằng phần mềm, không phải bởi lớp vận chuyển. Giao thức thông báo điều khiển Internet (ICMP) và tiện ích ping đều sử dụng ổ cắm thô.

Sử dụng ss

Bạn không cần cài đặt ss vì nó đã là một phần của bản phân phối Linux hiện tại. Tuy nhiên, kết quả có thể rất dài – chúng tôi nhận được kết quả với hơn 630 hàng. Kết quả cũng rất rộng.

Vì lý do này, chúng tôi đã bao gồm các văn bản trình bày kết quả mà chúng tôi thu được, vì chúng sẽ không vừa với ảnh chụp màn hình. Chúng tôi đã cắt bớt chúng để dễ quản lý hơn.

Danh sách kết nối mạng

Sử dụng ss mà không có tùy chọn dòng lệnh sẽ hiển thị các ổ cắm không nghe. Đó là, nó liệt kê các ổ cắm không nghe.

Để xem nó, gõ:

ss

Xuất ss trong một cửa sổ đầu cuối.

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

Các cột như sau:

netid: loại ổ cắm. Trong ví dụ của chúng tôi, chúng tôi có “u_str”, luồng unix, “udp” và “icmp6”, phiên bản ổ cắm IP ICMP 6. Bạn có thể tìm thêm mô tả về Các loại Ổ cắm Linux trong các trang hướng dẫn về Linux.
Trạng thái: Trạng thái ổ cắm.
Recv-Q: Số gói tin nhận được.
Send-Q: số packet được gửi.
Địa chỉ cục bộ: Cổng: Địa chỉ cục bộ và cổng (hoặc các giá trị tương đương với Unix socket).
Peer address: Port: địa chỉ và cổng từ xa (hoặc các giá trị tương đương với Unix socket).

Đối với ổ cắm UDP, cột “Trạng thái” thường trống. Đối với ổ cắm TCP, nó có thể là một trong những cách sau:

NGHE: chỉ phía máy chủ. Ổ cắm đang chờ yêu cầu kết nối.
SYN-SENT: chỉ phía máy khách. Ổ cắm này đã gửi yêu cầu kết nối và đang chờ xem nó có được chấp nhận hay không.
SYN-RECEIVED: chỉ phía máy chủ. Ổ cắm này chờ xác nhận kết nối sau khi chấp nhận yêu cầu kết nối.
THÀNH LẬP: máy chủ và máy khách. Một kết nối đang hoạt động đã được thiết lập giữa máy chủ và máy khách, cho phép gửi dữ liệu giữa chúng.
FIN-WAIT-1: máy chủ và máy khách. Ổ cắm này chờ yêu cầu kết thúc kết nối từ ổ cắm từ xa hoặc xác nhận yêu cầu kết thúc kết nối được gửi trước đó từ ổ cắm này.
FIN-WAIT-2: máy chủ và máy khách. Ổ cắm này chờ yêu cầu kết thúc kết nối từ một ổ cắm từ xa.
CLOSE-WAIT: máy chủ và máy khách. Ổ cắm này chờ yêu cầu kết thúc kết nối từ người dùng cục bộ.
KẾT THÚC: máy chủ và máy khách. Ổ cắm này đang chờ xác nhận yêu cầu kết thúc kết nối từ ổ cắm từ xa.
LAST-ACK: máy chủ và máy khách. Ổ cắm này chờ xác nhận yêu cầu kết thúc kết nối đã được gửi đến ổ cắm từ xa.
THỜI GIAN CHỜ: ​​máy chủ và máy khách. Ổ cắm này đã gửi một xác nhận đến ổ cắm từ xa để cho bạn biết rằng nó đã nhận được yêu cầu kết thúc ổ cắm từ xa. Bây giờ nó chờ để đảm bảo đã nhận được xác nhận.
ĐÃ ĐÓNG: không có kết nối, vì vậy ổ cắm đã kết thúc.

Danh sách các ổ cắm nghe

Để xem các socket nghe, chúng ta sẽ thêm tùy chọn -l (nghe), ví dụ:

ss -l

ss -l trong cửa sổ đầu cuối.

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

Các ổ cắm này không được kết nối và đang lắng nghe. “Rtnl” là một liên kết mạng định tuyến được sử dụng để truyền thông tin giữa các quy trình nhân và không gian người dùng.

Danh sách tất cả các ổ cắm

Để liệt kê tất cả các socket, bạn có thể sử dụng tùy chọn -a (all):

ss -a

ss -a trong cửa sổ đầu cuối.

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                           [::]:*

Đầu ra bao gồm tất cả các ổ cắm, bất kể trạng thái.

Danh sách ổ cắm TCP

Bạn cũng có thể áp dụng bộ lọc để chỉ hiển thị các vị trí phù hợp. Chúng tôi sẽ sử dụng tùy chọn -t (TCP), vì vậy chỉ các ổ cắm TCP sẽ được liệt kê:

ss -a -t

  ss -a -t trong cửa sổ đầu cuối.

Danh sách ổ cắm UDP

Tùy chọn -u (UDP) thực hiện cùng một loại hành động lọc. Lần này chúng ta sẽ chỉ thấy các ổ cắm UDP:

ss -a -u

ss -a -u trong cửa sổ đầu cuối.

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         [::]:*

Liệt kê các ổ cắm Unix

Để chỉ nhìn thấy các ổ cắm Unix, bạn có thể bao gồm tùy chọn -x (Unix) như hình bên dưới:

ss -a -x

ss -a -x trong cửa sổ đầu cuối.

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

Danh sách các ổ cắm thô

Bộ lọc cho các ổ cắm thô là tùy chọn -w (raw):

ss -a -w

ss -a -w trong cửa sổ đầu cuối.

Danh sách phiên bản ổ cắm IP 4

Socket sử dụng phiên bản TCP/IP 4 có thể được hiển thị bằng tùy chọn -4 (IPV4):

ss -a -4

ss -a -4 trong cửa sổ đầu cuối.

Danh sách phiên bản ổ cắm IP 6

Bạn có thể kích hoạt bộ lọc IP phù hợp trong phiên bản 6 sử dụng tùy chọn -6 (IPV6), ví dụ:

ss -a -6

ss -a -6 trong cửa sổ đầu cuối.

Danh sách ổ cắm theo tiểu bang

Bạn có thể liệt kê các ổ cắm theo trạng thái của chúng bằng cách sử dụng tùy chọn trạng thái. Điều này hoạt động ở trạng thái ổn định, trạng thái nghe hoặc đóng. Chúng tôi cũng sẽ sử dụng tùy chọn giải quyết (-r) cố gắng chuyển đổi địa chỉ mạng thành tên và cổng thành giao thức.

Lệnh sau sẽ tìm kiếm các kết nối TCP đã được thiết lập và ss sẽ cố gắng giải quyết các tên:

ss -t -r state established

trạng thái ss -t -r được thiết lập trong cửa sổ đầu cuối.

Bốn kết nối ở trạng thái đã thiết lập sẽ được hiển thị. Tên máy chủ ubuntu20-04 đã được giải quyết và thay vì 22 cho kết nối SSH, dòng thứ hai hiển thị “ssh”.

Chúng ta có thể sao chép điều này bằng cách tìm kiếm các ổ cắm ở trạng thái lắng nghe:

ss -t -r state listening

trạng thái nghe ss -t -r trong cửa sổ đầu cuối.

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        [::]:*

Danh sách socket theo giao thức

Bạn có thể liệt kê các ổ cắm bằng một giao thức cụ thể với các tùy chọn dport và sport đại diện cho cổng đích và cổng nguồn tương ứng.

Chúng ta nhập lệnh sau để hiển thị các socket sử dụng HTTPS trên kết nối đã thiết lập (chú ý khoảng trắng sau dấu ngoặc mở và trước dấu ngoặc đóng):

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

ss - được đặt là '(dport =: https hoặc sport =: https)' trong cửa sổ đầu cuối.

Chúng ta có thể sử dụng tên của giao thức hoặc cổng thường được liên kết với giao thức đó. Cổng mặc định cho Secure Shell (SSH) là cổng 22.

Chúng tôi sẽ sử dụng tên giao thức trong một lệnh và sau đó lặp lại nó bằng số cổng:

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

ss -a '(dport =: ssh hoặc sport =: ssh)' trong cửa sổ đầu cuối.

Như mong đợi, chúng tôi nhận được kết quả tương tự.

Hiển thị danh sách các kết nối đến một địa chỉ IP cụ thể

Với tùy chọn dst (đích), chúng ta có thể liệt kê các kết nối đến một địa chỉ IP đích cụ thể.

Chúng tôi nhập:

ss -a dst 192.168.4.25

ss -a dst 192.168.4.25 trong cửa sổ đầu cuối.

nhận dạng quy trình

Để xem quy trình nào đang sử dụng ổ cắm, bạn có thể sử dụng các tùy chọn quy trình (-p) như hình bên dưới (hãy nhớ rằng bạn phải sử dụng sudo):

sudo ss -t -p

Sudo ss -t -p trong cửa sổ đầu cuối.

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))

Điều này cho chúng ta thấy rằng hai kết nối được thiết lập trên ổ cắm TCP đang được sử dụng bởi daemon SSH và Firefox.

Người kế thừa xứng đáng

Lệnh ss cung cấp cùng thông tin mà netstat đã cung cấp trước đó, nhưng theo cách đơn giản hơn, dễ tiếp cận hơn. Bạn có thể kiểm tra trang hướng dẫn để biết thêm các tùy chọn và mẹo.