Netstat là một tiện ích dòng lệnh được tích hợp sẵn trên các hệ điều hành Windows, Linux, giúp quản trị viên tiếp cận dữ liệu kết nối, trạng thái và điểm yếu bảo mật mạng. Qua bài viết này, mình sẽ cùng bạn tìm hiểu rõ hơn về chức năng, tùy chọn và ví dụ sử dụng lệnh netstat chi tiết giúp bạn giám sát và khắc phục sự cố mạng.
Những điểm chính
- Khái niệm Netstat: Hiểu rõ Netstat là gì và vai trò trong việc cung cấp thống kê mạng trên đa nền tảng Windows, Linux, macOS.
- Các chức năng chính: Nắm vững các khả năng từ kiểm tra cổng đang mở, giám sát kết nối đến phát hiện phần mềm độc hại và lỗi định tuyến.
- Các loại thông tin mà netstat cung cấp: Biết được những dữ liệu chi tiết mà Netstat có thể truy xuất như giao thức, địa chỉ IP, PID và bảng định tuyến hệ thống.
- Cấu trúc lệnh chuẩn: Biết cách áp dụng cú pháp lệnh chính xác trên từng hệ điều hành để bắt đầu quá trình truy xuất dữ liệu mạng.
- Các tùy chọn phổ biến: Sử dụng thành thạo các tham số như
-a,-n,-pđể lọc và hiển thị chính xác những thông tin mạng cần thiết. - Quy tắc kết hợp cú pháp: Biết cách gộp tham số và sử dụng quyền quản trị để thực thi lệnh Netstat một cách ngắn gọn, hiệu quả nhất.
- Cách đọc và phân tích kết quả: Hiểu rõ ý nghĩa các cột dữ liệu và các trạng thái kết nối TCP để chẩn đoán chính xác tình trạng hệ thống.
- Xác định IP chiếm tài nguyên: Học cách phối hợp Netstat và lệnh
ssđể tìm ra các địa chỉ IP đang gây quá tải cho máy chủ. - Lưu ý khi sử dụng: Nắm được các quy tắc về quyền hạn và tần suất theo dõi để tối ưu hóa hiệu quả giám sát mạng.
- Công cụ giám sát thay thế: Khám phá thêm các giải pháp mạnh mẽ như
ss,Wireshark,Nmapđể bổ trợ cho công việc quản trị chuyên sâu. - Giải đáp thắc mắc (FAQ): Nhận được câu trả lời về việc dùng Netstat trong script tự động, so sánh với Task Manager và cách chặn IP qua firewall.
Netstat là gì?
Netstat (Network Statistics) là một tiện ích dòng lệnh được tích hợp sẵn trên hầu hết các hệ điều hành phổ biến như Windows, Unix, Linux và macOS dùng để cung cấp các thông tin thống kê chi tiết về các kết nối mạng vào và ra trên máy tính. Netstat giúp người dùng kiểm tra các cổng đang mở, xem bảng định tuyến, thống kê giao diện mạng và xác định các vấn đề về kết nối hoặc bảo mật.

Các chức năng chính của Netstat
Người quản trị mạng thường sử dụng Netstat để thực hiện các tác vụ sau:
- Kiểm tra các cổng đang mở: Xác định xem máy tính có đang mở các cổng không mong muốn hay không, giúp ngăn chặn rủi ro bảo mật.
- Giám sát kết nối mạng: Theo dõi các kết nối hiện hành giữa máy tính cục bộ và các máy chủ từ xa.
- Xác định chương trình đang sử dụng mạng: Tìm ra ứng dụng hoặc tiến trình (Process ID) nào đang chiếm dụng băng thông hoặc cổng mạng.
- Kiểm tra bảng định tuyến: Xem thông tin về đường đi của gói tin trong mạng để khắc phục sự cố định tuyến.
- Phát hiện phần mềm độc hại: Nhận diện các kết nối lạ hoặc đáng ngờ đang chạy ngầm.
- Thống kê lưu lượng: Xem dữ liệu về các gói tin được gửi và nhận để đánh giá hiệu suất mạng, xác định các kết nối bất thường.
- Kiểm tra trạng thái cổng: Xem cổng nào đang ở trạng thái “Listening” (đang chờ kết nối).
Các loại thông tin Netstat có thể cung cấp
Bằng cách thực thi lệnh Netstat, người dùng có thể truy xuất một loạt các thông tin mạng chi tiết, phục vụ cho việc chẩn đoán và giám sát. Các thông tin cốt lõi mà công cụ này có thể hiển thị bao gồm:
- Giao thức (Proto): Toàn bộ các kết nối TCP và UDP đang hoạt động, kèm theo trạng thái của từng kết nối.
- Các cổng đang lắng nghe: Danh sách các cổng mạng đang ở trạng thái lắng nghe (listening), sẵn sàng tiếp nhận kết nối mới.
- Bảng định tuyến (Routing Table): Cho biết lộ trình mà các gói tin sẽ đi qua để đến được địa chỉ đích trong mạng.
- Số liệu thống kê giao thức: Cung cấp báo cáo chi tiết về số lượng gói tin đã gửi, nhận, các gói tin bị lỗi hoặc bị loại bỏ cho từng giao thức cụ thể như IP, IPv6, ICMP, ICMPv6, TCP và UDP.
- Định danh tiến trình (PID): Xác định mã số định danh và tên của chương trình hoặc dịch vụ cụ thể đang sở hữu một kết nối hoặc đang chiếm dụng một cổng mạng.
- Thống kê giao diện mạng: Cung cấp các thông số về lưu lượng truyền tải trên từng card mạng, bao gồm số byte đã truyền/nhận và các lỗi phát sinh ở lớp vật lý.
- Thông tin thành viên nhóm đa hướng: Hiển thị các nhóm địa chỉ multicast mà các giao diện mạng của hệ thống đang tham gia.

Cấu trúc của lệnh netstat
Về cơ bản, cấu trúc lệnh tổng quát được áp dụng là:
netstat [options]Hoặc:
netstat [tùy chọn] [tham số]Trong đó các tùy chọn sẽ quyết định loại thông tin được hiển thị.
Đối với hệ điều hành Windows, cú pháp chi tiết và đầy đủ hơn được định nghĩa như sau:
netstat [-a] [-b] [-e] [-n] [-o] [-p <Protocol>] [-r] [-s] [<Interval>].Một điều kiện tiên quyết để lệnh Netstat có thể hoạt động chính xác là giao thức Internet (TCP/IP) phải được cài đặt và kích hoạt như một thành phần trong thuộc tính của bộ điều hợp mạng (Network Adapter). Nếu giao thức này không được cấu hình, công cụ sẽ không thể truy xuất bất kỳ thông tin kết nối nào.
Các tùy chọn phổ biến của lệnh Netstat
| Tùy chọn (Option) | Ý nghĩa và chức năng | Hệ điều hành |
|---|---|---|
-a, --all | Hiển thị tất cả các kết nối hiện có và các cổng đang lắng nghe (listening). | Linux, Windows, Unix |
-n, --numeric | Hiển thị địa chỉ và số cổng dưới dạng số (không phân giải tên miền/dịch vụ), giúp lệnh chạy nhanh hơn. | Linux, Windows, Unix |
-l, --listening | Chỉ hiển thị các socket đang ở trạng thái lắng nghe (LISTENING). | Linux |
-p, --program | Hiển thị PID (Process ID) và tên của chương trình đang sở hữu socket đó. (Tương đương với -b và -o trên Windows. Yêu cầu quyền root). | Linux |
-t, --tcp | Lọc và chỉ hiển thị các kết nối sử dụng giao thức TCP. | Linux, Windows, Unix |
-u, --udp | Lọc và chỉ hiển thị các kết nối sử dụng giao thức UDP. | Linux, Windows, Unix |
-r, --route | Hiển thị bảng định tuyến (routing table) của hệ thống. | Linux, Windows, Unix |
-i, --interfaces | Hiển thị bảng thống kê theo từng giao diện mạng (network interface) như eth0, wlan0… | Linux |
-s, --statistics | Hiển thị số liệu thống kê chi tiết theo từng giao thức (IP, ICMP, TCP, UDP), giúp chẩn đoán lỗi hoặc theo dõi lưu lượng. | Linux, Windows, Unix |
-e, --extend | Hiển thị thông tin mở rộng. Trên Linux, tùy chọn này hiển thị người dùng và inode. Trên Windows, tùy chọn này hiển thị thống kê lớp Ethernet. | Linux, Windows |
-c, --continuous | Cập nhật và hiển thị lại thông tin liên tục mỗi giây (tương đương với <interval> trên Windows). | Linux |
-o | Hiển thị Mã định danh tiến trình (PID) của mỗi kết nối. | Windows |
-b | Hiển thị tên tệp thực thi (.exe) đã tạo ra kết nối (cần quyền Admin). | Windows |
<interval> | Tự động cập nhật và hiển thị lại thông tin sau mỗi interval giây. | Windows |
Quy tắc viết và kết hợp cú pháp lệnh netstat chính xác
Để đảm bảo tính chính xác và khai thác tối đa hiệu quả của lệnh, người dùng nên tuân thủ một số quy tắc khi viết và kết hợp cú pháp:
- Sử dụng chữ thường: Mặc dù một số hệ thống không phân biệt chữ hoa và chữ thường, việc sử dụng chữ thường cho tất cả các tùy chọn (ví dụ:
netstat -a) được xem là một quy ước chuẩn. - Kết hợp tham số: Các tùy chọn có thể được gộp lại với nhau để lệnh trở nên ngắn gọn hơn. Ví dụ, thay vì viết
netstat -a -n -o, người dùng có thể viết gộp thànhnetstat -ano. - Phân tách rõ ràng: Luôn sử dụng một dấu cách để phân tách giữa lệnh chính, các tùy chọn và các tham số đi kèm (nếu có).
- Sử dụng trợ giúp: Nếu không chắc chắn về một tùy chọn nào đó, người dùng có thể sử dụng lệnh
netstat /?trên Windows hoặcnetstat --helptrên Linux để xem danh sách đầy đủ các tham số và mô tả chức năng của chúng.

Cách đọc kết quả hiển thị của lệnh Netstat
Khi thực thi lệnh Netstat, kết quả trả về được trình bày dưới dạng một bảng bao gồm nhiều cột thông tin. Bạn cần hiểu rõ ý nghĩa của từng cột để có thể phân tích chính xác trạng thái mạng của hệ thống.
- Proto (Protocol): Cột này xác định giao thức vận chuyển đang được sử dụng cho kết nối, thông thường sẽ là TCP hoặc UDP.
- Local Address (Địa chỉ cục bộ): Cột này hiển thị địa chỉ IP của máy tính đang thực thi lệnh cùng với số cổng mà ứng dụng đang sử dụng. Trong trường hợp một cổng đang lắng nghe nhưng chưa có kết nối cụ thể nào được thiết lập, số cổng có thể được hiển thị dưới dạng dấu hoa thị (
*) hoặc số 0. - Foreign Address (Địa chỉ từ xa): Cột này cho biết địa chỉ IP và số cổng của thiết bị từ xa mà máy tính của bạn đang kết nối tới.
- State (Trạng thái): Cột này đặc biệt quan trọng và chỉ áp dụng cho các kết nối TCP. Trạng thái phản ánh giai đoạn hiện tại trong vòng đời của một kết nối. Một số trạng thái phổ biến nhất bao gồm:
LISTEN(hoặcLISTENING): Cổng đang mở và sẵn sàng chấp nhận một kết nối mới.ESTABLISHED: Kết nối đã được thiết lập thành công và quá trình truyền dữ liệu đang diễn ra.CLOSE_WAIT: Kết nối đang trong quá trình đóng từ phía đầu xa.TIME_WAIT: Máy tính cục bộ đã đóng kết nối và đang chờ một khoảng thời gian để đảm bảo các gói tin cuối cùng được xử lý.- Các trạng thái khác có thể xuất hiện bao gồm
CLOSED,FIN_WAIT_1,FIN_WAIT_2,LAST_ACK,SYN_RECEIVED, vàSYN_SEND, tất cả đều đại diện cho các bước cụ thể trong quá trình thiết lập và đóng một kết nối TCP.

Hướng dẫn kiểm tra kết nối Server và xác định IP chiếm nhiều tài nguyên
Dùng netstat
Nếu bạn đang làm việc trên một hệ thống cũ hoặc đã quen với netstat, chuỗi lệnh sau vẫn hoạt động rất tốt với logic tương tự.
- Đếm kết nối
ESTABLISHED:
netstat -ant | grep ESTABLISHED | awk '{print $5}' | cut -d':' -f1 | sort | uniq -c | sort -nr
Lưu ý
Với netstat, cột chứa IP của client là cột thứ 5, nên chúng ta dùng awk '{print $5}'.
- Đếm tất cả các loại kết nối (trừ các cổng đang chờ):
netstat -ant | grep -v LISTEN | awk '{print $5}' | cut -d':' -f1 | sort | uniq -c | sort -nr
Dùng ss
ss (socket statistics) là công cụ thay thế cho netstat trên các hệ thống Linux hiện đại vì nhanh và hiệu quả hơn rất nhiều, đặc biệt trên các server có lưu lượng truy cập lớn. Lệnh để đếm tất cả kết nối đang ESTABLISHED (đã thiết lập):
ss -tn state established | awk '{print $4}' | cut -d':' -f1 | sort | uniq -c | sort -nr
Phân tích từng phần của pipeline (|):
ss -tn state establishedss: Lệnh chính.-t: Chỉ hiển thị các kết nối TCP.-n: Không phân giải tên miền. Hiển thị IP và số hiệu cổng, giúp lệnh chạy nhanh hơn rất nhiều.state established: Chỉ lọc ra những kết nối đang ở trạng tháiESTABLISHED.
awk ‘{print $4}’: Lấy cột thứ 4 trong kết quả củass, là cột chứa thông tinPeer Address:Port(IP và cổng của phía client), ví dụ:192.168.1.10:12345.cut -d':' -f1: Sử dụng dấu hai chấm (:) làm dấu phân cách (-d':') và chỉ lấy trường đầu tiên (-f1), tức là địa chỉ IP.sort: Sắp xếp danh sách các địa chỉ IP theo thứ tự, là bước bắt buộc để lệnhuniqtiếp theo có thể hoạt động chính xác.uniq -cuniq: Loại bỏ các dòng trùng lặp liền kề.-c: Count – Đếm số lần xuất hiện của mỗi dòng (mỗi IP). Kết quả sẽ có dạngsố_lần_xuất_hiện Địa_chỉ_IP.
sort -nr- Sắp xếp kết quả cuối cùng một lần nữa.
-n: Sắp xếp theo kiểu numeric (số).-r: Sắp xếp theo thứ tự đảo ngược (reverse), từ lớn đến nhỏ.
Kết quả: Bạn sẽ có một danh sách các IP và số lượng kết nối của chúng, được xếp hạng với IP có nhiều kết nối nhất nằm ở trên cùng.
Sau khi xác định được IP chiếm nhiều tài nguyên nhất, bạn có thể thực hiện các bước tiếp theo như:
- Kiểm tra log của web server (Nginx, Apache) để xem IP này đang truy cập những gì.
- Sử dụng tường lửa (iptables, firewalld) để tạm thời chặn IP này nếu xác định đây là hành vi tấn công.
Những lưu ý giúp tối ưu hóa việc dùng lệnh Netstat
Để khai thác tối đa những thông tin giá trị mà Netstat cung cấp và đảm bảo quá trình giám sát mạng diễn ra suôn sẻ, người dùng cần ghi nhớ một số lưu ý quan trọng sau:
- Sử dụng đúng cú pháp theo hệ điều hành: Bạn cần lưu ý rằng cú pháp của netstat có sự khác biệt giữa Windows, Linux và macOS.
- Yêu cầu quyền quản trị: Bạn cần chạy lệnh với quyền Administrator (Windows) hoặc quyền Root (Linux) để có thể xem được đầy đủ các thông tin chi tiết như tên tiến trình hay PID.
- Nắm vững ý nghĩa các thông số: Bạn nên tìm hiểu kỹ ý nghĩa của các cột dữ liệu như địa chỉ IP, số hiệu cổng, giao thức và trạng thái kết nối để đánh giá chính xác tình trạng mạng.
- Thực hiện theo dõi thường xuyên: Việc sử dụng lệnh định kỳ sẽ giúp bạn chủ động giám sát các cổng đang mở và kịp thời phát hiện các kết nối bất thường.
- Tận dụng việc kết hợp các tùy chọn: Bạn nên linh hoạt kết hợp các tham số như
-a,-n,-o,-phoặc-bđể trích xuất được những thông tin chuyên sâu và cụ thể theo nhu cầu xử lý sự cố.

Các công cụ giám sát mạng hữu ích khác
Mặc dù Netstat là một công cụ mạnh mẽ và phổ biến, hệ sinh thái công nghệ đã phát triển nhiều giải pháp khác với những tính năng chuyên biệt và ưu việt hơn. Tùy thuộc vào nhu cầu phân tích và hệ điều hành sử dụng, người dùng có thể tham khảo một số công cụ giám sát mạng hiệu quả sau đây:
- ss (Socket Stats): Trên các hệ điều hành Linux hiện đại,
ssđược xem là tiện ích kế thừa và thay thế trực tiếp chonetstat. Công cụ này được đánh giá cao về tốc độ và hiệu quả, có khả năng truy xuất thông tin từ kernel nhanh hơn đáng kể so vớinetstat. Tương tự người tiền nhiệm,sscung cấp thông tin chi tiết về các kết nối mạng, sockets, cổng và bảng định tuyến. - iptraf-ng: Đây là một công cụ giám sát lưu lượng mạng hoạt động dựa trên giao diện dòng lệnh trên Linux. iptraf-ng cung cấp một cái nhìn động về luồng dữ liệu mạng, hiển thị thông tin về các gói tin, số liệu thống kê giao diện và các kết nối đang diễn ra theo thời gian thực, rất hữu ích cho việc theo dõi hiệu suất mạng trực tiếp.
- Wireshark: Khi cần phân tích sâu và chi tiết đến từng gói tin, Wireshark là một lựa chọn không thể thay thế. Công cụ phân tích giao thức mạng mã nguồn mở này sở hữu giao diện đồ họa mạnh mẽ, cho phép người dùng bắt, xem và phân tích lưu lượng mạng ở mức độ cực kỳ chi tiết, giúp chẩn đoán các sự cố phức tạp nhất.
- Nmap (Network Mapper): Nmap là công cụ quét mạng và kiểm tra bảo mật hàng đầu. Khác với Netstat chỉ hiển thị các kết nối hiện có trên máy cục bộ, Nmap chủ động gửi các gói tin đến các máy chủ mục tiêu để khám phá các cổng đang mở, xác định các dịch vụ đang chạy và thu thập thông tin về hệ điều hành của hệ thống.

Câu hỏi thường gặp
Netstat có thể được sử dụng trong các script tự động để giám sát mạng không?
Có. Bạn có thể kết hợp Netstat với các ngôn ngữ như Bash, PowerShell hoặc Python để tự động thu thập và phân tích dữ liệu mạng định kỳ, ví dụ phát hiện IP kết nối bất thường hoặc theo dõi băng thông.
Sự khác biệt giữa Netstat và Task Manager trong việc giám sát mạng là gì?
Task Manager chỉ hiển thị tổng quan lưu lượng mạng theo ứng dụng, còn Netstat cho thấy chi tiết từng kết nối (IP, cổng, giao thức, trạng thái), vì vậy Netstat phù hợp cho chẩn đoán kỹ thuật mang tính sâu hơn.
Có thể kết hợp Netstat với firewall để tự động chặn IP đáng ngờ không?
Có thể. Thông qua script, bạn có thể trích xuất danh sách IP có số lượng kết nối cao bằng Netstat, sau đó chuyển sang lệnh iptables (Linux) hoặc netsh advfirewall (Windows) để tự động chặn.
Netstat có cung cấp thông tin về tốc độ truyền dữ liệu thực tế không?
Không trực tiếp. Netstat chỉ hiển thị số lượng gói tin và byte đã truyền, không tính toán tốc độ theo thời gian thực. Để theo dõi throughput, bạn nên dùng công cụ như iftop hoặc nload.
Có thể sử dụng Netstat qua SSH để giám sát máy chủ từ xa không?
Hoàn toàn có thể. Khi đăng nhập qua SSH, bạn có quyền root hoặc sudo, có thể chạy trực tiếp các lệnh Netstat trên máy chủ để kiểm tra tình trạng mạng từ xa.
Netstat là công cụ hỗ trợ giám sát mạng hữu ích, rất cần thiết trong việc xây dựng lớp bảo vệ chủ động chống lại các sự cố và mối đe dọa an ninh mạng. Việc phối hợp Netstat với các giải pháp hiện đại như ss, iptraf-ng hoặc Wireshark, sẽ giúp quản trị viên tối ưu hóa hoạt động quản lý hạ tầng, chủ động phát hiện bất thường và xử lý triệt để các nguy cơ trước khi chúng ảnh hưởng tới hệ thống.




