Trong Linux, ss
là lệnh dùng để kiểm tra các kết nối mạng và socket đang hoạt động trên hệ thống. Đây là công cụ thay thế hiện đại cho netstat
, giúp quản trị viên theo dõi lưu lượng, kiểm tra dịch vụ, phát hiện bất thường nhanh chóng và chính xác. Bài viết sẽ giới thiệu chi tiết về cú pháp và các tùy chọn thường dùng của ss
, kèm theo những ví dụ thực tế như: kiểm tra SSH, lọc IP lạ, thống kê kết nối web, và phát hiện trạng thái CLOSE-WAIT. Ngoài ra, bạn cũng sẽ tìm thấy phần so sánh với netstat
và giải pháp lưu trữ tối ưu từ Vietnix cho website của bạn.
Điểm chính cần nắm
- Lệnh ss Linux là gì?: Giới thiệu khái quát về lệnh
ss
, công dụng và lợi ích khi sử dụng trong quản trị mạng. - 8 ví dụ thực tế cho lệnh ss trong Linux: Cung cấp các tình huống thực tế để ứng dụng lệnh
ss
vào việc giám sát và kiểm tra kết nối mạng. - So sánh lệnh ss và lệnh netstat: Đưa ra sự khác biệt giữa
ss
vànetstat
, giúp người dùng lựa chọn công cụ phù hợp. - Vietnix – Giải pháp lưu trữ tối ưu cho website của bạn: Giới thiệu dịch vụ hosting tốc độ cao và hỗ trợ kỹ thuật 24/7 từ Vietnix.
- FAQ: Tổng hợp các câu hỏi thường gặp liên quan đến cách sử dụng lệnh
ss
trong Linux.
Lệnh ss Linux là gì?
Lệnh ss
(socket statistics) là một công cụ dòng lệnh dùng để hiển thị thông tin chi tiết về các kết nối socket trên hệ thống Linux. ss
thường được sử dụng để thay thế cho lệnh netstat
, nhờ khả năng hiển thị nhanh hơn và đầy đủ hơn các thông tin liên quan đến kết nối mạng, bao gồm TCP, UDP, UNIX socket… Công cụ này thuộc gói iproute2
– mặc định có trên hầu hết các bản phân phối Linux hiện nay.

Cú pháp lệnh ss
cơ bản
ss [tùy chọn]
Nếu chạy không có tùy chọn nào:
ss

Lệnh trên sẽ hiển thị tất cả các socket đang hoạt động, bất kể trạng thái. Kết quả đầu ra bao gồm nhiều cột thông tin như:
- Netid: Giao thức của socket (tcp, udp, unix…)
- State: Trạng thái kết nối (ESTAB, LISTEN, TIME-WAIT…)
- Recv-Q / Send-Q: Dữ liệu đang chờ nhận hoặc gửi
- Local Address:Port: Địa chỉ và cổng cục bộ
- Peer Address:Port: Địa chỉ và cổng đối tác
Tùy chọn thông dụng của lệnh ss
Dưới đây là các tùy chọn thường dùng với ss
để lọc và hiển thị thông tin theo nhu cầu:
Tùy chọn | Mô tả |
---|---|
-a | Hiển thị tất cả socket (bao gồm đang nghe và không nghe) |
-l | Chỉ hiển thị socket ở trạng thái lắng nghe (LISTEN) |
-t | Hiển thị các kết nối TCP |
-u | Hiển thị các kết nối UDP |
-x | Hiển thị UNIX socket |
-p | Hiển thị PID và tên tiến trình sử dụng socket |
-s | Hiển thị thống kê tóm tắt kết nối |
state <trạng_thái> | Lọc kết nối theo trạng thái (ví dụ: established , time-wait ) |
sport / dport | Lọc theo cổng nguồn hoặc đích |
dst / src | Lọc theo địa chỉ IP đích hoặc nguồn |
Ví dụ:
ss -t state established
# Hiển thị các kết nối TCP đã thiết lập.
ss -at '( dport = :22 or sport = :22 )'# Hiển thị các kết nối TCP đã thiết lập.
# Hiển thị các kết nối TCP đi đến hoặc đi từ cổng SSH (22).
8 ví dụ thực tế cho lệnh ss trong Linux
- Kiểm tra dịch vụ SSH đang nghe ở cổng nào
- Kiểm tra có kết nối từ IP lạ không
- Kiểm tra số lượng kết nối đến web server
- Phát hiện bất thường (quá nhiều CLOSE-WAIT)
- Liệt kê tất cả các kết nối (bao gồm đang lắng nghe và không lắng nghe)
- Liệt kê tất cả các kết nối UDP (đang hoạt động hoặc không)
- Liệt kê các socket UDP đang lắng nghe
- Hiển thị thống kê tóm tắt về kết nối mạng
Kiểm tra dịch vụ SSH đang nghe ở cổng nào
Nếu bạn muốn xác định dịch vụ SSH có đang chạy hay không, và đang lắng nghe trên cổng nào, bạn có thể sử dụng lệnh:
ss -ltpn
Trong đó:
-l
: Chỉ hiển thị các socket ở trạng thái LISTEN-t
: Lọc chỉ các kết nối TCP-p
: Hiển thị thông tin tiến trình (PID và tên)-n
: Hiển thị địa chỉ và cổng ở dạng số (tránh dịch DNS)

Lệnh trên sẽ trả về thông tin như sau:
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
Trong ví dụ này, bạn có thể thấy dịch vụ sshd
đang lắng nghe trên cổng TCP 22 – cổng mặc định của SSH. Nếu cổng hiển thị khác, có thể hệ thống đang sử dụng một cổng tùy chỉnh cho SSH.
Kiểm tra có kết nối từ IP lạ không
Để giám sát các kết nối TCP đến hệ thống và kiểm tra xem có địa chỉ IP nào không mong muốn đang kết nối hay không, bạn có thể sử dụng lệnh:
ss -tn state established
Lệnh này hiển thị tất cả các kết nối TCP đang ở trạng thái “đã thiết lập” (established), nghĩa là phiên kết nối đã hoàn tất bắt tay và đang hoạt động.

Ví dụ kết quả:
ESTAB 0 0 192.168.1.100:22 203.0.113.10:55342
Trong dòng này, IP 203.0.113.10
đang kết nối đến cổng SSH trên máy chủ. Nếu bạn thấy nhiều kết nối từ các địa chỉ IP không quen thuộc, bạn có thể cần xem xét kỹ để xác định liệu đó có phải là truy cập hợp lệ hay không.
Bạn cũng có thể dùng
grep
để lọc nhanh theo một địa chỉ IP cụ thể, ví dụ:ss -tn | grep 203.0.113.10
Kiểm tra số lượng kết nối đến web server
Khi vận hành web server (Apache, Nginx…), bạn có thể cần theo dõi số lượng kết nối đến cổng HTTP hoặc HTTPS. Để kiểm tra điều này, bạn sử dụng:
ss -tn | grep ':80' | wc -l
Hoặc bạn có thể dùng lệnh sau:
ss -tn | grep ':443' | wc -l

Trong đó:
sport = :80
: lọc socket có cổng nguồn là 80 (HTTP)sport = :443
: lọc socket có cổng nguồn là 443 (HTTPS)wc -l
: đếm số dòng – tức là số lượng kết nối
Lệnh này khá tiện lợi để kiểm tra lưu lượng truy cập, giám sát đột biến kết nối, hoặc chẩn đoán khi máy chủ bị quá tải.
Phát hiện bất thường (quá nhiều CLOSE-WAIT)
Kết nối TCP ở trạng thái CLOSE-WAIT
thường xuất hiện khi ứng dụng phía máy chủ không đóng kết nối đúng cách sau khi client đã yêu cầu ngắt. Nếu số lượng kết nối ở trạng thái này quá nhiều, đó có thể là dấu hiệu của rò rỉ tài nguyên hoặc lỗi logic trong ứng dụng.
Bạn có thể liệt kê các kết nối ở trạng thái này bằng lệnh:
ss -tan | grep CLOSE-WAIT

Và đếm số lượng kết nối bất thường:
ss -tan | grep CLOSE-WAIT | wc -l

Nếu bạn thấy hàng trăm hoặc hàng nghìn kết nối CLOSE-WAIT
, bạn nên kiểm tra lại ứng dụng hoặc dịch vụ đang chạy để đảm bảo rằng các socket được đóng đúng cách.
Đây là một trong những kỹ thuật giám sát giúp phát hiện sớm lỗi logic trong lập trình mạng hoặc cấu hình sai của web server, proxy hoặc backend.
Liệt kê tất cả các kết nối (bao gồm đang lắng nghe và không lắng nghe)
Để xem toàn bộ các socket hiện có trên hệ thống, bao gồm cả các kết nối đang hoạt động và các socket đang lắng nghe, dùng lệnh:
ss -a
Hoặc bạn dùng lệnh này:
ss --all
Lệnh này giúp bạn theo dõi toàn bộ trạng thái kết nối mạng, từ TCP, UDP cho đến các socket Unix. Đây là bước đầu quan trọng để tổng quan về trạng thái mạng trên máy.

Liệt kê tất cả các kết nối UDP (đang hoạt động hoặc không)
Để liệt kê tất cả các kết nối UDP, bao gồm cả đang nghe và đang gửi nhận dữ liệu, dùng:
ss -ua
UDP là giao thức không kết nối, nên việc theo dõi các socket UDP giúp phát hiện dịch vụ hoặc ứng dụng đang sử dụng UDP trên máy. Tùy chọn -u
để lọc UDP, -a
để hiển thị tất cả trạng thái.

Liệt kê các socket UDP đang lắng nghe
Nếu chỉ muốn biết những socket UDP nào đang mở để nhận dữ liệu (đang “listen”), sử dụng:
ss -lu
Lệnh này tập trung vào các dịch vụ UDP đang mở cổng để chờ nhận dữ liệu từ bên ngoài, hữu ích khi bạn muốn kiểm tra dịch vụ UDP nào đang hoạt động trên máy.

Hiển thị thống kê tóm tắt về kết nối mạng
Để xem nhanh số liệu tổng quát về các loại kết nối và trạng thái trên máy, dùng:
ss -s
Lệnh này cung cấp báo cáo ngắn gọn về tổng số kết nối TCP, UDP, số kết nối đã thiết lập, đang nghe, đang đóng, v.v. Rất tiện để đánh giá nhanh hiệu suất và tình trạng mạng.

So sánh lệnh ss
và lệnh netstat
Cả ss
và netstat
đều được dùng để kiểm tra kết nối mạng và trạng thái socket trên hệ thống Linux. Tuy nhiên, ss
là công cụ hiện đại hơn và thường được khuyên dùng trong các bản phân phối Linux mới. Dưới đây là bảng so sánh chi tiết:
Tiêu chí | ss | netstat |
---|---|---|
Tốc độ | Nhanh hơn đáng kể | Chậm hơn, nhất là với nhiều kết nối mạng |
Hiển thị chi tiết | Hiển thị thông tin đầy đủ, có thể lọc nâng cao | Hiển thị thông tin cơ bản |
Hỗ trợ IPv6/Unix | Có | Có, nhưng không tối ưu bằng ss |
Hiển thị PID/tiến trình | Có (với tùy chọn -p ) | Có (với tùy chọn -p ) |
Cập nhật | Được tích hợp sẵn trong hệ thống mới | Thuộc gói net-tools , thường không cài sẵn |
Tình trạng hỗ trợ | Được hỗ trợ và duy trì | Đã lỗi thời, không còn phát triển tích cực |
Cú pháp lọc nâng cao | Có (lọc theo IP, port, trạng thái TCP, v.v.) | Hạn chế |
Vietnix – Giải pháp lưu trữ tối ưu cho website của bạn
Nếu bạn đang tìm kiếm một dịch vụ VPS chất lượng với tốc độ cao và hiệu suất ổn định, Vietnix là lựa chọn đáng tin cậy. Với hệ thống máy chủ hiện đại và hạ tầng được tối ưu cho tốc độ và bảo mật, Vietnix giúp website của bạn vận hành mượt mà, an toàn và liên tục. Không chỉ cung cấp VPS hiệu suất cao và các gói hosting đa dạng, Vietnix còn nổi bật nhờ đội ngũ kỹ thuật nhiều kinh nghiệm, luôn sẵn sàng hỗ trợ 24/7 để xử lý mọi sự cố nhanh chóng và chuyên nghiệp.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
Lệnh ss trong Linux là gì và dùng để làm gì?
ss
là viết tắt của “socket statistics”, dùng để hiển thị thông tin các kết nối mạng và socket trên hệ thống Linux. Đây là công cụ thay thế hiện đại hơn netstat
.
Làm sao để liệt kê tất cả các kết nối TCP đang hoạt động?
Dùng lệnh ss -t state established
để hiển thị tất cả kết nối TCP đã thiết lập (đang hoạt động).
Cách lọc kết nối theo địa chỉ IP hoặc port bằng ss?
Dùng ss dst <IP>
hoặc ss src <IP>
để lọc theo địa chỉ. Lọc theo port dùng cú pháp ss -t '( sport = :22 )'
.
Làm sao để phát hiện tình trạng CLOSE-WAIT bất thường bằng ss?
Dùng ss -t state close-wait
để lọc các kết nối TCP đang ở trạng thái CLOSE-WAIT, thường là dấu hiệu ứng dụng chưa đóng kết nối đúng cách.
Làm sao để chỉ xem các socket thuộc giao thức Unix domain?
Dùng ss -x
hoặc ss -f unix
để hiển thị các Unix socket.
Tại sao lệnh ss thường hiển thị nhiều dòng CLOSE-WAIT và điều đó có ý nghĩa gì?
CLOSE-WAIT là trạng thái TCP cho thấy ứng dụng đã nhận tín hiệu đóng từ client nhưng chưa phản hồi hoặc đóng lại. Nhiều dòng CLOSE-WAIT có thể là dấu hiệu ứng dụng lỗi hoặc không giải phóng tài nguyên socket đúng cách.
Lệnh ss có hỗ trợ hiển thị kết nối IPv6 riêng biệt không?
Có, dùng ss -6 để lọc các kết nối IPv6. Kết hợp với -t, -u nếu cần chỉ định giao thức.
Có thể dùng ss để phát hiện tấn công DDoS không?
Không trực tiếp, nhưng bạn có thể phát hiện bất thường như quá nhiều kết nối từ một IP hoặc số lượng lớn socket ở trạng thái SYN-RECV – dấu hiệu của SYN Flood.
Lời kết
Lệnh ss
giúp bạn giám sát và xử lý sự cố mạng nhanh chóng, từ kiểm tra dịch vụ đến phát hiện các kết nối bất thường. Việc thành thạo công cụ này sẽ tăng hiệu quả vận hành và bảo mật cho hệ thống Linux. Nếu bạn có bất kỳ thắc mắc nào về cách dùng ss
, đừng ngần ngại để lại bình luận. Bạn cũng có thể chia sẻ bài viết để giúp cộng đồng Linux Việt Nam học hỏi thêm. Và nếu đang tìm một giải pháp hosting mạnh mẽ, đừng bỏ qua phần giới thiệu về dịch vụ tại Vietnix.
Mọi người cũng xem: