Nếu bạn sử dụng Linux, chắc hẳn sẽ đến lúc bạn cần biết thêm về mạng của mình. Có một số công cụ có thể giúp bạn làm điều này, và một số phức tạp hơn các công cụ khác. Lệnh ss là thứ bạn có thể tin tưởng sẽ được cài đặt sẵn trên nhiều máy, vì vậy việc biết đến nó rất tiện lợi.
Lệnh ss là gì?
Mặc dù tên lệnh hai chữ cái này có vẻ bí ẩn, nhưng thực tế nó khá đơn giản. Giống như nhiều lệnh Linux/Unix khác, tên là viết tắt của chức năng của lệnh. Ở đây, ss là viết tắt của Socket Statistics (Thống kê Socket).
Socket Statistics là công cụ thay thế cho công cụ cũ netstat, nhằm mục đích dễ sử dụng và dễ hiểu hơn. Nó đơn giản hiển thị thông tin về các socket. Điều này không chỉ bao gồm các socket TCP và UDP - những loại phổ biến nhất - mà còn bao gồm DCCP, RAW và Unix domain sockets.
Cách sử dụng cơ bản
Cách đơn giản nhất để sử dụng lệnh ss là chạy nó không có đối số. Điều này sẽ hiển thị khá nhiều dữ liệu, nên bạn có thể muốn truyền nó qua less để đọc dễ dàng hơn.
ss | less
Mặc định như vậy chưa thực sự hữu ích. Nó hiển thị rất nhiều thông tin, nhưng quá nhiều khiến việc đọc trở nên khó khăn. Để dễ dàng hơn, bạn có thể lọc các loại socket nhất định.
Ví dụ, bạn có thể liệt kê chỉ các socket TCP.
ss -t

Hoặc bạn có thể liệt kê các socket UDP.
ss -u
Theo mặc định, các tùy chọn này chỉ liệt kê các socket đã thiết lập kết nối. Để liệt kê tất cả các socket TCP đang lắng nghe hoặc đã kết nối, bạn có thể chạy:
ss -t -a
Cho đến nay mọi thứ vẫn khá đơn giản. Hãy tìm hiểu thêm.
Những việc hữu ích bạn có thể làm với lệnh ss
Bây giờ bạn đã quen với cơ bản, đã đến lúc sử dụng lệnh ss để giám sát mạng của bạn. Có nhiều điều bạn có thể làm, nhưng đây là một vài ý tưởng để bắt đầu.
Giám sát trạng thái TCP
Nếu bạn am hiểu về mạng, bạn đã biết rằng kết nối TCP có các giai đoạn khác nhau. Chúng chi tiết hóa toàn bộ vòng đời của một kết nối. Chúng ta có thể đi sâu vào các loại giai đoạn nhất định bằng lệnh ss.
Ngoài các trạng thái TCP tiêu chuẩn như "established" (đã thiết lập) và "closed" (đã đóng), lệnh ss hỗ trợ một số bộ lọc tùy chỉnh. Ví dụ, trạng thái "connected" (đã kết nối) đơn giản là mọi trạng thái TCP ngoại trừ "listening" (đang lắng nghe) và "closed". Để sử dụng điều này, hãy chạy:
ss state connected
IPv4 và IPv6
Nếu mạng của bạn sử dụng kết hợp địa chỉ IPv6 và IPv4, bạn có thể lọc chúng bằng lệnh ss. Chỉ cần sử dụng cờ -4 hoặc -6. Nếu bạn muốn xem tất cả các kết nối IPv4, bạn có thể kết hợp với trạng thái TCP.
ss -4 state connected

Nếu bạn muốn xem tất cả các socket IPv6, chỉ cần chạy:
ss -6
Tiến trình nào đang sử dụng socket này?
Nếu bạn biết một socket đang lắng nghe nhưng không biết lý do, bạn có thể dễ dàng truy tìm. Chạy lệnh sau sẽ hiển thị tên và ID tiến trình của tất cả các socket TCP IPv4 đã kết nối.
ss -4p state connected

Hiển thị tóm tắt
Đôi khi bạn chỉ muốn một cái nhìn nhanh về các socket trên một máy nhất định. Đây cũng là một trong những lệnh dễ chạy nhất, vì nó chỉ bao gồm chữ "s" và một dấu gạch ngang:
ss -s

Lệnh này đưa ra tóm tắt tất cả các socket trên máy của bạn và hiển thị chúng là IPv4 hay IPv6.
Muốn biết thêm về mạng của bạn?
Đây mới chỉ là khởi đầu những gì bạn có thể làm với lệnh ss. Đây là một công cụ mạnh mẽ và rất đáng để học. Để đào sâu hơn, hãy mở terminal và xem tài liệu trong trang man của công cụ. Chỉ cần chạy man ss để bắt đầu.
Nếu bạn đang tìm cách bảo mật máy của mình, ss rất tiện lợi, nhưng nó không phải là công cụ duy nhất. Hãy xem hướng dẫn của chúng tôi về kiểm tra các cổng mở trên Linux để tìm hiểu thêm.