Lệnh netstat là một công cụ cần thiết cho quản trị mạng. Nó hiển thị thông tin về hệ thống con mạng Linux bao gồm dữ liệu về các kết nối mạng mở, bảng định tuyến và thống kê về các giao diện mạng được cài đặt.

Lệnh netstat đơn giản nhất là chạy công cụ mà không có tham số nào:

 netstat 

Thao tác này sẽ hiển thị danh sách các kết nối đang mở hiện tại trên máy của bạn. Tuy nhiên kết quả có thể hơi khó sử dụng. Do đó, tốt hơn nên chia nhỏ các kết nối theo loại. Để liệt kê tất cả các kết nối TCP đang mở, hãy sử dụng:

 netstat -t 

Kết quả là danh sách các kết nối hiện tại đang được thực hiện cho máy tính của bạn. Trong ví dụ trên, bạn có thể thấy rằng máy tính thử nghiệm của tôi đang chạy một máy chủ SSH và có các kết nối SSH được thiết lập.

Lưu ý dòng ghi " Kết nối Internet đang hoạt động (w / o servers) ". Phần cuối cùng có nghĩa là netstat không bao gồm một danh sách các máy chủ đang chạy trên máy tính của bạn; nói cách khác, nó không liệt kê những chương trình đang chờ kết nối TCP nhưng hiện tại không có chương trình nào được thiết lập.

Để có danh sách các kết nối TCP đang hoạt động và danh sách các cổng đang lắng nghe các kết nối TCP, hãy thêm cờ -a :

 netstat -at 

-a là viết tắt của ALL và thêm bộ cổng nghe. Nhìn xuống danh sách, bạn có thể thấy rằng máy tính Linux của tôi cũng đang chờ kết nối SSH qua IPv6.

Thông tin tương tự cũng có thể được tạo cho UDP bằng cách sử dụng:

 netstat -au 

Ngược lại với cờ -a là cờ -l làm cho netstat liệt kê các cổng nghe nhưng bỏ qua các kết nối đang hoạt động.

Để xem danh sách các quá trình có kết nối mở hoặc đang chờ kết nối, hãy sử dụng cờ -p :

 sudo netstat -atp 

Bạn có thể sử dụng -p với cả -t cho TCP hoặc -u cho UDP. Cũng lưu ý rằng bạn cần chạy lệnh với sudo . Cờ -p làm cho việc diễn giải danh sách kết nối dễ dàng hơn nhiều. Từ ví dụ trên, bạn có thể thấy rằng không chỉ máy chủ SSH đang chạy (sshd), mà máy còn có máy chủ CUPS chạy cùng với máy chủ DNSMasq mini.

Nếu bạn cần kiểm tra xem một dịch vụ cụ thể có đang chạy hay không, bạn có thể sử dụng netstat kết hợp với grep . Ví dụ, trên thiết lập thử nghiệm của tôi, tôi đã cài đặt một máy chủ email (postfix). Để kiểm tra xem nó có đang chạy hay không, tôi có thể sử dụng như sau:

 sudo netstat -ltp | grep smtp 

Cờ -ltp yêu cầu netstat chỉ liệt kê các máy chủ TCP (nghĩa là các tiến trình lắng nghe các kết nối) và grep lọc đầu ra để chỉ hiển thị các dòng có chuỗi “smtp.” Kết quả là, chúng ta có thể thấy rằng quá trình “ master "(là tên của quá trình chính của Postfix) đang nghe trên IPv4 và IPv6 cho các kết nối SMTP đến.

netstat có thể tạo ra khá nhiều thông tin thống kê về hệ thống con mạng. Hãy thử các lệnh sau:

  • netstat -i để nhận thông tin về giao diện mạng
  • netstat -ie để nhận thông tin sử dụng mở rộng
  • netstat -s để có được số liệu thống kê tóm tắt cho mỗi giao thức mạng (tức là TCP, UDP, ICMP và vv)

Để có bảng định tuyến hạt nhân hiện tại, hãy sử dụng:

 netstat -rn 

Việc đọc các bảng định tuyến cần một mắt được huấn luyện, nhưng về cơ bản ví dụ trên cho thấy rằng tuyến mặc định (0.0.0.0) cho tất cả các gói khác với các gói cho máy cục bộ sẽ được gửi đến 192.168.1.254, trong thiết lập thử nghiệm của tôi là cổng mặc định và modem / bộ định tuyến Internet của tôi.

Bạn có thể chạy lệnh mà không có cờ -n, điều đó có nghĩa là netstat sẽ cố gắng giải quyết các địa chỉ.

Trang netstat man có danh sách đầy đủ tất cả các tùy chọn có sẵn, bạn có thể đọc nó bằng cách sử dụng:

 người đàn ông netstat 

Nếu bạn gặp rắc rối với các ví dụ nêu trên, hãy đặt câu hỏi trong phần bình luận bên dưới.