Hướng dẫn sử dụng lệnh “ss” giám sát kết nối mạng trên Linux

Lệnh ss là gì? Cách sử dụng lệnh ss trên hệ điều hành Linux như thế nào? Các thông tin hiển thị với lệnh ss ra sao? Tìm hiểu chi tiết ngay sau đây nhé.

Trong cuộc sống thực tế, việc theo dõi và quản lý các kết nối mạng là điều rất quan trọng đối với các công ty dịch vụ mạng. Ở Windows, chúng ta có thể sử dụng các phần mềm thứ 3 như:GlassWire, NetBalancer, Real Network Monitor,...còn trên Linux, chúng ta có thể thực hiện thông qua lệnh ss. Bài viết này sẽ giúp bạn hiểu rõ hơn về câu lệnh này.

Có thể bạn quan tâm:

Giám sát các kết nối mạng trong Linux

I. Lệnh ss là gì?

Lệnh ss là một công cụ được sử dụng để hiển thị các thông tin liên quan đến "Network Socket"trên hệ thống Linux. Công cụ này sẽ hiển thị các thông tin chi tiết hơn so với lệnh "netstat"thường hay được sử dụng để hiển thị các kết nối network socket đang hoạt động.

Với công cụ này, bạn có thể:

  • Xem được các thông tin chi tiết về các kết nối mạng
  • Phân tích và theo dõi lưu lượng mạng
  • Kiểm tra trạng thái của các cổng
  • Kiểm tra các tiến trình mạng đang chạy trên hệ thống

II. Cách sử dụng lệnh ss trên Linux

Lệnh ss được sử dụng theo cú pháp như sau:

ss [options]

Trong đóoptionslà các tùy chọn để chỉ định loại kết nối và thông tin cụ thể cần hiển thị. Một vài tùy chọn phổ biến bao gồm:

  • -thay- -tcp:Tùy chọn này sẽ hiển thị thông tin về các kết nối TCP
  • -uhay- -udp:Tùy chọn này sẽ hiển thị thông tin về các kết nối UDP
  • -lhay- -listening:Tùy chọn này sẽ hiển thị danh sách các cổng đang lắng nghe
  • -ahay- -all:Tùy chọn này sẽ hiển thị tất cả các kết nối, bao gồm cả các kết nối đang lắng nghe (LISTEN)

Để nắm rõ hơn về các tùy chọn của lệnh ss, các bạn có thể dùng tùy chọn-hhay- -helpđể tham khảo danh sách đầy đủ.

Ngoài các tùy chọn cơ bản trên, bạn có thể kết hợp với các điều kiện lọc để hiển thị được chính xác các thông tin kết nối mà bạn cần tìm:

ss [options] [filters]

Với một số filters như:

  • state:Lọc theo trạng thái của kết nối
  • dst:Lọc theo địa chỉ đích
  • src:Lọc theo địa chỉ nguồn
  • dport:Lọc theo cổng đích
  • sport:Lọc theo cổng nguồn

Một số ví dụ khi tìm kiếm kết hợp giữa options và filters:

# Lọc các kết nối TCP có cổng nguồn là 22

ss -t sport 22

# Lọc tất cả các kết nối đến địa chỉ IP: 192.168.217.1

ss -a dst 192.168.217.1

# Hiển thị các kết nối UDP có trạng thái Đã thiết lập kết nối

ss -u state established

……

Lệnh ss trên Linux

III. Các trường thông tin cơ bản được hiển thị bởi lệnh ss trên Linux

Bạn có thể nhập lệnh mặc định như sau để hiển thị danh sách các kết nối đã thiết lập, không phân biệt loại kết nối

ss

Đầu ra của lệnh sẽ trông như sau:

ducmanh287@ubuntusv:~$ ss

Netid      State        Recv-Q  Send-Q                       Local Address:Port            Peer Address:Port         Process

u_dgr      ESTAB        0             0                      /run/systemd/notify 29223                            * 0

u_dgr      ESTAB        0             0        /run/systemd/journal/socket 29251                            * 0

u_str       ESTAB        0             0                                                  *  31490                            * 31598

u_str       ESTAB        0             0                                                  *  29411                            * 29838

u_dgr      ESTAB        0             0                                                  *  29773                            * 29772

u_dgr      ESTAB        0             0                                                  *  33927                            * 33926

u_str       ESTAB        0             0                                                  *  31800                            *  31362

Các trường trong đầu ra sẽ bao gồm:

  • Netid:Biểu thị loại socket được sử dụng cho kết nối. Các giá trị có thể là TCP, UDP, u_seq(Chuỗi Unix) và u_str(Chuỗi Unix)
  • State:Hiển thị trạng thái của kết nối. Bạn có thể nhìn thấy các giá trị như ESTAB(được thiết lập), UNCONN(không kết nối), LISTEN(đang lắng nghe)
  • Recv-Q:Số lượng packet được nhận đang đợi
  • Send-Q:Số lượng packet được gửi đang đợi
  • Local Address:Port:Địa chỉ cục bộ và cổng

IV. Một số ví dụ về việc sử dụng lệnh ss trên Linux

1. Kiểm tra danh sách các cổng đang lắng nghe

Để kiểm tra danh sách tất cả các cổng đang lắng nghe, chúng ta sử dụng options-lnhư sau:

ss -l

Đầu ra của lệnh này sẽ là danh sách các cổng đang lắng nghe trên hệ thống:

Hiển thị danh sách các cổng đang lắng nghe trên Linux

2. Kiểm tra các kết nối TCP hoặc UDP ở tất cả trạng thái

Đối với các kết nối TCP, chúng ta thực hiện như sau:

# Các bạn có thể gộp các options như thế này:

ss -at

# Hoặc cũng có thể viết tách riêng từng options như thế này:

ss -a -t

Dù bạn có viết theo cách nào thì lệnh ss đều cho ra một kết quả như sau:

Kiểm tra các kết nối TCP trên hệ thống

Đối với các kết nối UDP, chúng ta cũng thực hiện tương tự, và có thể viết theo một trong hai cách như ở TCP đều cùng cho ra một kết quả cần tìm:

ducmanh287@ubuntusv:~$ ss -a -u

State            Recv-Q     Send-Q                      Local Address:Port                  Peer Address:Port             Process

UNCONN          0             0                             127.0.0.53%lo:domain                        0.0.0.0:*

UNCONN          0             0            192.168.217.128%ens33:bootpc                         0.0.0.0:*

ducmanh287@ubuntusv:~$

3. Kiểm tra tất cả các kết nối đến một địa chỉ IP nhất định

Việc kiểm tra các kết nối đến hoặc đi từ một địa chỉ IP nhất định bằng lệnh ss sẽ được thực hiện như sau:

# Ví dụ tôi cần lọc các kết nối đến và đi khỏi địa chỉ IP: 192.168.217.128

ducmanh287@ubuntusv:~$ ss dst 192.168.217.128 or src 192.168.217.128


Netid      State      Recv-Q      Send-Q                Local Address:Port             Peer Address:Port           Process

tcp        ESTAB          0               64                192.168.217.128:ssh             192.168.217.1:51460

tcp        ESTAB          0                0                 192.168.217.128:ssh             192.168.217.1:51463

4. Hiển thị rõ ràng các địa chỉ IP và số cổng dưới dạng số

Đôi khi, lệnh ss sẽ cho ra kết quả nhưng ẩn đi địa chỉ IP và số cổng mà chỉ hiển thị tên miền và tên dịch vụ. Vậy để lệnh ss cho ra kết quả hiển thị rõ ràng hơn, chúng ta đơn giản chỉ việc sử dụng options-nnhư sau:

ss -n

Các bạn có thể nhìn thấy rõ sự khác biệt trong ảnh sau:

Hiển thị rõ địa chỉ IP và số cổng

V. Tổng kết

Trong bài viết này, chúng ta đã cùng tìm hiểu vềlệnh ss trên Linuxvà cách sử dụng nó để có thể quản lý mạng. Việc nắm vững cách sử dụng lệnh ss sẽ giúp bạn dễ dàng theo dõi và xử lý các vấn đề mạng một cách hiệu quả trên hệ thống của mình. Trở lại vớisuncloud.vnđể cùng cập nhật kiến thức công nghệ mới nhất nhé.