Linux Networking: Sử dụng Netstat quản lý mạng trên Linux

Tram Ho

Giới thiệu

netstat (network statistics) là một công cụ mạng nằm trong gói công cụ net-tools, sử dụng dòng lệnh, được sử dụng để khắc phục sự cố và cấu hình mạng. netstat là công cụ hoạt động đa nền tảng, được tích hợp sẵn trên các hệ điều hành Linux, Unix-Like và có sẵn trên cả Windows. Đây là một trong những công cụ gỡ lỗi dịch vụ mạng cơ bản nhất trên Unix/Linux, mạnh mẽ và rất hữu dụng đối với quản trị viên mạng Linux cũng như quản trị viên hệ thống trong việc giải quyết các vấn đề về sự cố liên quan đến network như là lượng connect kết nối, traffic, tốc độ, trạng thái của từng port, Ip… Nó cũng có thể được coi là một công cụ monitor, giúp giám sát các kết nối mạng (cả đến và đi) bằng cách cung cấp các thông tin như bảng định tuyến hay một số thống kê giao diện mạng.

Trong phạm vi bài viết này, mình sẽ cùng các bạn tìm hiểu sử dụng netstat trên hệ điều hành Linux nhé!

Note

Hiện tại bộ công cụ iproute2 đã được thay thế mặc định cho bộ công cụ net-tools ở các bản phân phối Linux mới như RHEL7, CentOS 7,… Cùng với đó, công cụ ss mới cũng được sử dụng thay cho netstat với một số ưu điểm ưu điểm đơn giản hơn và nhanh hơn công cụ truyền thống netstat. Các chức năng và cách sử dụng của lệnh ss nhìn chung cũng tương tự như netstat.

Các tùy chọn thiết lập lệnh netstat

Lệnh netstat được xây dựng với nhiều các cờ tùy chọn khác nhau, để xem thông tin sử dụng lệnh và các tùy chọn, bạn sẽ dử dụng netstat -h hoặc netstat --help

Có rất nhiều tùy chọn, một số tùy chọn phổ biến thường được sử dụng mà bạn có thể chú ý ở đây là

  • -a: Hiển thị tất cả các sockets, kể cả listening và non-listening
  • -l: Hiển thị các socket đang lắng nghe
  • -t: Chỉ hiển thị các kết nối tcp
  • -u: Chỉ hiển thị các kết nối udp
  • -n: Xem địa chỉ số (không phân giải)
  • -p: Hiển thị chương trình PID cho từng socket
  • -r: Hiển thị bảng định tuyến
  • -s: Pull và hiển thị thống kê mạng được sắp xếp theo giao thức
  • -i: Hiển thị danh sách các giao diện mạng

Tiếp theo, mình sẽ chỉ cho các bạn một vài ví dụ cụ thể trong việc sử dụng lệnh netstat này nha!

Các ví dụ lệnh netstat thường được sử dụng

1. Liệt kê tất cả các port

  • netstat -a

Đây là một lệnh kiểm tra tổng quá, nó bao gồm rất rất nhiều thông tin bao gồm tất cả các port ( của cả giao thức TCP và UDP), các listening và non-listening sockets. Bởi vì bao gồm rất nhiêu thứ nên trong thực tế, khi sử dụng , ta sẽ kết hợp tùy chọn cùng các tùy chọn khác để lọc ra các nhóm thông tin cụ thể cũng như chi tiết hơn như các lệnh dưới đây.

  • netstat -at: Chỉ kiểm tra các port TCP
  • netstat -au: Chỉ kiểm tra các port UDP
  • netstat -l: Đây là tùy chọn có phạm vi nhỏ hơn -a khi chỉ liệt kê các port đang ở trạng thái listening. Tùy chọn này cũng thường đi kèm với tùy chọn -t hay -u để lọc ra các kết nối TCP hay UDP.

Kiểm tra các tiến trình

Sử dụng tùy chọn -p của netstat sẽ hiển thị cho chúng ta thấy tên chương trình và process ID (PID) của chúng. Chẳng hạn như ta sử dụng lệnh netstat -ltupn. Lệnh này có ý nghĩa sẽ hiển thị tất cả port TCP và UDP đang ở trạng thái listening cùng với tên chương trình và PID của chúng. Ở đây mình hay dùng thêm tùy chọn -n để hiển thị các địa chỉ và số cổng được biểu diễn dưới dạng số, mà không hiển thị một tên cụ thể.

Hiển thị thống kê mạng

Để hiển thị các thông tin thống kê mạng, chúng ta sử dụng lệnh netstat -s hoặc cũng có thể lọc thông tin theo các kết nối TCP, UDP…

Hiển thị bảng định tuyến

Để xem bảng định tuyến IP của kernel, chúng ta sử dụng lệnh netstat -r :

Hiển thị các giao diện mạng

Để hiển thị các giao diện mạng của kernel, chúng ta sử dụng lệnh netstat -i

Netstat kết hợp cùng các lệnh linux khác

Ngoài kết hợp giữa các tùy chọn chỉ thị lệnh khác nhau, netstat càng trở nên hữu dụng hơn khi được kết hợp với các lệnh linux khác bằng cách sử dụng cơ chế đường ống pipe trong linux. Ví dụ:

  • Khi bạn muốn kiểm tra một cổng cụ thể, chẳng hạn như cổng 22:

  • Hiện thị số kết nối của mỗi ip đến server

Trong đó:

  • netstat -apn: Hiển thị tất cả các kết nối cùng tên chương trình và PID của chúng, các địa chỉ ip và port ở dạng số, không phân giải tên.
  • grep 'tcp|udp': Lọc lấy các kết nối TCP và UDP
  • awk '{print $5}': Chỉ in ra cột số 5 là cột IP:PORT
  • cut -d: -f1: Chia các dòng kết quả thành các cột, điểm phân chia là ký tự : sau đó lấy thông tin cột 1 (các IP không có cổng)
  • sort: sắp xếp kết quả
  • uniq -c: nhóm các IP giống nhau lại, hiển thị ra cột đầu tiên sẽ hiển thị số lượng của các IP giống nhau
  • sort -n: sắp xếp kết quả theo số, từ thấp đến cao

Tạm kết

Qua bài viết trên, mình đã giới thiệu đến các bạn các chức năng cũng như cách dùng cơ bản của netstat. Hy vọng qua bài viết này, các bạn có thể hiểu và nắm rõ hơn về netstat – một phương pháp kinh điển để khắc phục các sự cố về mạng trên hệ điều hành Unix/Linux.

Cảm ơn các bạn đã theo dõi bài viết của mình :3

References

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo