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:
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 đó options là 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:
- -t hay - -tcp: Tùy chọn này sẽ hiển thị thông tin về các kết nối TCP
- -u hay - -udp: Tùy chọn này sẽ hiển thị thông tin về các kết nối UDP
- -l hay - -listening: Tùy chọn này sẽ hiển thị danh sách các cổng đang lắng nghe
- -a hay - -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 -h hay - -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 …… |
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 -l như 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:
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:
Đố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 -n như sau:
ss -n |
Các bạn có thể nhìn thấy rõ sự khác biệt trong ảnh sau:
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 Linux và 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ới suncloud.vn để cùng cập nhật kiến thức công nghệ mới nhất nhé.