Bạn muốn kiểm tra trạng thái mạng trên hệ thống Linux của mình? Lệnh
netstat
là một công cụ mạnh mẽ để làm điều đó. Nó cung cấp thông tin chi tiết về các kết nối mạng, bảng định tuyến, thống kê giao diện mạng và hơn thế nữa. Trong bài viết này, chúng ta sẽ khám phá mọi khía cạnh của lệnh
netstat
, từ cú pháp cơ bản đến các tùy chọn nâng cao.
"Understanding the `netstat` command in Linux is essential for network administrators and developers alike. It provides a comprehensive view of network connections and activity, enabling efficient troubleshooting and monitoring."
Nếu bạn mới bắt đầu với Linux hoặc muốn tìm hiểu thêm về hệ điều hành này, hãy truy cập Linux để có thêm thông tin hữu ích.
Netstat là gì?
netstat
(network statistics) là một tiện ích dòng lệnh được sử dụng để hiển thị thông tin về các kết nối mạng hoạt động, cổng đang lắng nghe, bảng định tuyến và thống kê giao diện mạng. Nó là một công cụ quan trọng để theo dõi và gỡ lỗi các vấn đề liên quan đến mạng trên hệ thống Linux.
Cú pháp cơ bản của lệnh netstat
Cú pháp cơ bản của lệnh
netstat
như sau:
netstat [options]
Trong đó,
options
là các tùy chọn khác nhau để điều chỉnh đầu ra của lệnh. Chúng ta sẽ khám phá một số tùy chọn quan trọng nhất trong các phần tiếp theo.
Các tùy chọn thường dùng của lệnh netstat
Lệnh
netstat
cung cấp một loạt các tùy chọn để lọc và hiển thị thông tin mạng theo nhu cầu cụ thể. Dưới đây là một số tùy chọn phổ biến nhất:
-
-a
(hoặc--all
): Hiển thị tất cả các kết nối và cổng đang lắng nghe. -
-t
(hoặc--tcp
): Hiển thị chỉ các kết nối TCP. -
-u
(hoặc--udp
): Hiển thị chỉ các kết nối UDP. -
-l
(hoặc--listening
): Hiển thị chỉ các cổng đang lắng nghe. -
-n
(hoặc--numeric
): Hiển thị địa chỉ và số cổng bằng số, thay vì cố gắng xác định tên máy chủ và dịch vụ. -
-p
(hoặc--program
): Hiển thị tên của chương trình liên quan đến mỗi kết nối. Yêu cầu quyền root. -
-r
(hoặc--route
): Hiển thị bảng định tuyến. -
-i
(hoặc--interfaces
): Hiển thị thống kê giao diện mạng. -
-s
(hoặc--statistics
): Hiển thị thống kê cho mỗi giao thức.
Ví dụ sử dụng lệnh netstat
Để hiểu rõ hơn cách sử dụng lệnh
netstat
, hãy xem xét một số ví dụ thực tế:
Hiển thị tất cả các kết nối và cổng đang lắng nghe
Để hiển thị tất cả các kết nối (TCP, UDP, RAW) và các cổng đang lắng nghe, hãy sử dụng tùy chọn
-a
:
netstat -a
Lệnh này sẽ cung cấp một danh sách dài các kết nối và cổng, bao gồm cả những kết nối đang hoạt động và những kết nối đang chờ kết nối đến.
Hiển thị chỉ các kết nối TCP đang lắng nghe
Để chỉ hiển thị các kết nối TCP đang lắng nghe, hãy sử dụng tùy chọn
-lt
:
netstat -lt
Lệnh này hữu ích để xác định các dịch vụ nào đang chạy trên hệ thống và đang lắng nghe các kết nối TCP.
Hiển thị các kết nối UDP với địa chỉ số
Để hiển thị các kết nối UDP và hiển thị địa chỉ và số cổng bằng số (không phân giải tên máy chủ), hãy sử dụng tùy chọn
-nu
:
netstat -nu
Sử dụng tùy chọn này giúp bạn tránh việc tra cứu DNS, giúp lệnh chạy nhanh hơn.
Hiển thị bảng định tuyến
Để hiển thị bảng định tuyến, hãy sử dụng tùy chọn
-r
:
netstat -r
Bảng định tuyến cho biết cách hệ thống của bạn định tuyến các gói dữ liệu đến các mạng khác nhau.
Hiển thị thống kê giao diện mạng
Để hiển thị thống kê cho tất cả các giao diện mạng, hãy sử dụng tùy chọn
-i
:
netstat -i
Thống kê này bao gồm số lượng gói tin đã gửi và nhận, số lượng lỗi và số lượng va chạm.
Hiển thị chương trình liên quan đến kết nối (yêu cầu quyền root)
Để hiển thị tên chương trình liên quan đến mỗi kết nối, bạn cần sử dụng tùy chọn
-p
. Tùy chọn này yêu cầu quyền root:
sudo netstat -ap
Lệnh này sẽ hiển thị tên của chương trình đang sử dụng mỗi kết nối, giúp bạn xác định các ứng dụng đang sử dụng tài nguyên mạng.
Thay thế netstat bằng ss
Lệnh
netstat
đã bị coi là lỗi thời và được thay thế bằng lệnh
ss
(socket statistics) trong nhiều bản phân phối Linux hiện đại. Lệnh
ss
nhanh hơn và hiệu quả hơn
netstat
, đồng thời cung cấp nhiều thông tin hơn.
Cú pháp của lệnh
ss
tương tự như
netstat
:
ss [options]
Nhiều tùy chọn tương tự với
netstat
cũng có sẵn trong
ss
, chẳng hạn như
-a
,
-t
,
-u
,
-l
, và
-n
. Ví dụ, để hiển thị tất cả các kết nối TCP đang lắng nghe bằng lệnh
ss
, bạn có thể sử dụng lệnh sau:
ss -lt
Lời khuyên khi sử dụng netstat
Khi sử dụng lệnh
netstat
, hãy ghi nhớ những điều sau:
- Sử dụng các tùy chọn để lọc đầu ra và chỉ hiển thị thông tin bạn cần.
-
Sử dụng tùy chọn
-n
để tránh tra cứu DNS và tăng tốc độ lệnh. -
Chạy lệnh với quyền root (sử dụng
sudo
) để hiển thị thông tin về tất cả các kết nối, bao gồm cả những kết nối thuộc sở hữu của người dùng khác. -
Xem xét sử dụng lệnh
ss
thay vìnetstat
, đặc biệt trên các hệ thống Linux hiện đại.
Lệnh netstat có còn được hỗ trợ trên Linux không?
Mặc dù lệnh netstat vẫn còn tồn tại trên nhiều hệ thống Linux, nó được coi là lỗi thời và không còn được phát triển tích cực. Lệnh ss (socket statistics) được khuyến khích sử dụng thay thế vì nó nhanh hơn và cung cấp nhiều thông tin hơn.
Làm thế nào để hiển thị PID của tiến trình đang lắng nghe trên một cổng cụ thể bằng netstat?
Bạn có thể sử dụng lệnh
sudo netstat -nlp | grep [số cổng]
để hiển thị PID (Process ID) của tiến trình đang lắng nghe trên một cổng cụ thể. Thay thế
[số cổng]
bằng số cổng bạn muốn kiểm tra.
Sự khác biệt chính giữa netstat và ss là gì?
Sự khác biệt chính là netstat sử dụng /proc để thu thập thông tin, trong khi ss sử dụng Netlink. Netlink nhanh hơn và hiệu quả hơn trong việc truy xuất thông tin kernel, đặc biệt là trên các hệ thống có số lượng lớn kết nối.
Tôi có thể sử dụng netstat để kiểm tra kết nối mạng tới một máy chủ cụ thể không?
Bạn có thể sử dụng netstat kết hợp với các công cụ khác như grep để lọc kết quả và tìm kết nối đến một máy chủ cụ thể. Ví dụ:
netstat -an | grep [địa chỉ IP máy chủ]
. Tuy nhiên, sử dụng
ss
sẽ cho hiệu quả tốt hơn.
Lệnh `netstat -i` hiển thị thông tin gì?
Lệnh `netstat -i` hiển thị bảng giao diện mạng (network interface table), bao gồm thông tin về MTU (Maximum Transmission Unit), số lượng gói tin đã nhận và gửi (RX-OK/TX-OK), số lượng lỗi (RX-ERR/TX-ERR) và số lượng gói tin bị loại bỏ (RX-DRP/TX-DRP) cho mỗi giao diện mạng.
Kết luận
Lệnh
netstat
là một công cụ hữu ích để theo dõi và gỡ lỗi các vấn đề liên quan đến mạng trên hệ thống Linux. Mặc dù nó đang dần được thay thế bởi lệnh
ss
, việc hiểu cách sử dụng
netstat
vẫn hữu ích cho các nhà quản trị hệ thống và nhà phát triển. Hãy thử các ví dụ trong bài viết này để làm quen với lệnh và tận dụng tối đa khả năng của nó.