Lệnh netstat là gì? Cách sử dụng lệnh netstat trên Linux

Bài viết sẽ hướng dẫn từng bước về cách sử dụng lệnh netstat trên Linux để theo dõi các kết nối mạng và phát hiện các hoạt động đáng ngờ. Chi tiết sau đây.

Trong môi trường hệ thống Linux, việc quản lý và giám sát mạng là một phần quan trọng trong việc duy trì hoạt động ổn định của hệ thống. Lệnh netstat là một công cụ mạnh mẽ sẽ giúp quản trị viên hệ thống có thể xem và quản lý các kết nối mạng, các bảng định tuyến, giao thức mạng và các thông tin quan trọng khác. Trong bài viết này, chúng ta sẽ tìm hiểu về lệnh netstat và cách sử dụng lệnh netstat trên Linux để giải quyết các vấn đề mạng và bảo mật.

Lệnh netstat trong Linux và cách sử dụng

I. Netstat là gì? 

Lệnh netstat là một công cụ dòng lệnh cung cấp thông tin chi tiết về các kết nối mạng đang hoạt động trên hệ thống. Nó sẽ cung cấp cho chúng ta một cái nhìn tổng quan về trạng thái mạng của hệ thống.

  • Với lệnh netstat, bạn có thể:
  • Xem các kết nối mạng đang hoạt động
  • Xem danh sách các cổng đang lắng nghe
  • Xem bảng định tuyến
  • Theo dõi lưu lượng mạng
  • Phân tích các vấn đề về mạng
  • Bảo mật mạng,.....

>>> Xem thêm: Hướng dẫn sử dụng lệnh “ss” giám sát kết nối mạng trên Linux

II. Cách sử dụng lệnh netstat trên Linux

Trước khi sử dụng lệnh netstat, chúng ta cần hiểu về câu lệnh này.

1. Cú pháp và các tùy chọn của lệnh netstat trên Linux

Cú pháp của lệnh netstat đơn giản như sau:

netstat [options]

Trong đó, options là các tùy chọn để chỉ định các thông tin cụ thể cần hiển thị. Có một số tùy chọn phổ biến như sau:

  • netstat -a: Hiển thị tất cả các kết nối và cổng(bao gồm cả những kết nối không hoạt động) 
  • netstat -t: Hiển thị các kết nối TCP 
  • netstat -u: Hiển thị các kết nối UDP
  • netstat -l: Hiển thị danh sách các cổng đang lắng nghe
  • netstat -r: Hiển thị bảng định tuyến
  • …..

Còn nhiều các tùy chọn mà bạn có thể dùng netstat -h để có thể xem bảng hiển thị chi tiết hơn về các tùy chọn này.

2. Đầu ra mặc định của lệnh netstat

Khi bạn nhập lệnh mặc định của netstat:

netstat

Câu lệnh trên sẽ trả về đầu ra mặc định của lệnh, bao gồm hai thành phần chính:

  • Active Internet connections: Cung cấp thông tin về các kết nối mạng hiện đang hoạt động trên hệ thống dựa trên giao thức mạng
  • Active UNIX domain sockets:  Cung cấp thông tin về các kết nối mạng hiện đang hoạt động trên hệ thống dựa trên giao thức UNIX
Đầu ra mặc định của lệnh netstat

2.1. Các trường trong Active Internet connections:

Các cột thông tin trong mục này sẽ bao gồm:

  • Proto: Loại giao thức mạng, có thể là TCP hoặc UDP
  • Recv-Q: Số lượng packet được nhận đang đợi
  • Send-Q: Số lượng packet được gửi đang đợi
  • Local Address: Địa chỉ IP nguồn và số cổng
  • Foreign Address: Địa chỉ IP đích và số cổng
  • State: Trạng thái của kết nối

Thông qua các cột thông tin truong Active Internet, người dùng có thể theo dõi và kiểm tra các kết nối TCP và UDP đang hoạt động trên hệ thống, cũng như xác định được các cổng mạng đang lắng nghe và chờ kết nối từ máy tính khác

2.2. Các trường trong Active UNIX domain sockets

Các cột thông tin trong mục này sẽ bao gồm

  • Proto: Loại giao thức, thường là unix
  • RefCnt: Số lượng tham chiếu tới socket
  • Flags: Các cờ mô tả trạng thái của socket
  • Type: Loại socket, chẳng hạn như STREAM(luồng) hoặc DGRAM(datagram)
  • State: Trạng thái của socket, chẳng hạn như CONNECTED, LISTENING hoặc CLOSED
  • I-NODE: Số inode của socket
  • Path: Đây là đường dẫn của socket trong không gian tệp hệ thống tương ứng với kết nối UNIX domain

Phần Active UNIX sẽ cho phép người dùng xem thông tin chi tiết về các kết nối sử dụng giao thức UNIX domain socket, nó sẽ đặc biệt hữu ích trong việc tương tác giữa các tiến trình trên cùng một hệ thống UNIX

>>> Xem thêmThao Tác Thêm, Sửa, Xóa, Copy, Đổi Tên File và Folder Trong Linux

III. Một số ví dụ sử dụng lệnh netstat trên Linux

Tùy các bản phân phối của Linux, có một số bản có thể sẽ không được tích hợp sẵn câu lệnh netstat. Nếu máy của bạn chưa có câu lệnh này, chúng ta có thể thực hiện cài đặt như sau

# Đối với các máy như Ubuntu

sudo apt install -y net-tools

# Đối với các máy như CentOS

sudo yum install -y net-tools

1. Hiển thị bảng thống kê về mạng

Việc xem bảng thống kê về mạng sẽ giúp chúng ta nắm được tình trạng mạng của hệ thống. Để thực hiện điều này, chúng ta thực hiện như sau:

netstat -s

Đầu ra sẽ trông như sau:

Hiển thị bảng thống kê về mạng

Lệnh này sẽ hiển thị các giao thức mạng trong hệ thống, trong mỗi giao thức này sẽ hiển thị các thông tin như:

  • Số lượng gói tin đã gửi và đã nhận
  • Số lượng gói tin bị lỗi
  • Số lượng gói tin bị rơi,....

2. Xem thông tin về các kết nối TCP, UDP bao gồm cả tên chương trình đang sử dụng kết nối

Để xem được thông tin về các kết nối mạng bao gồm cả tên chương trình đang sử dụng kết nối thì chúng ta thực hiện như sau:

# Lệnh này bao gồm các options -a, -u, -t, -n, -p

netstat -autnp

# Lưu ý rằng bạn sẽ cần quyền roots để hiển thị số PID và tên chương trình

sudo netstat -autnp

Đầu ra sẽ trông như sau:

Hiển thị tên chương trình đang sử dụng kết nối

3. Xem bảng định tuyến mà không ẩn địa chỉ IP và số cổng

Đôi khi đầu ra của lệnh netstat sẽ tự động thay thế địa chỉ IP và số cổng thành tên miền và tên dịch vụ. Vì vậy để xem được rõ các mục này, chúng ta thực hiện như sau:

# Sử dụng hai options là -r và -n

netstat -rn

Kết quả sẽ hiển thị như sau:

ducmanh287@ubuntusv:~$ netstat -rn

Kernel IP routing table

Destination       Gateway            Genmask             Flags  MSS Window  irtt    Iface

0.0.0.0              192.168.217.2   0.0.0.0                  UG       0         0         0     ens33

192.168.217.0  0.0.0.0               255.255.255.0      U          0         0         0     ens33

192.168.217.2  0.0.0.0               255.255.255.255  UH       0          0        0     ens33

Trong đó gồm các cột thông tin:

  • Destination: Địa chỉ mạng đích hoặc địa chỉ IP mà các gói tin được định tuyến tới.
  • Gateway: Địa chỉ IP của gateway được sử dụng để định tuyến các gói tin tới đích đến.
  • Genmask: Mặt nạ mạng được áp dụng cho đích đến, quy định các bit trong địa chỉ IP nào được coi là mạng cụ thể.
  • Flags: Các cờ định tuyến như U (up - đang hoạt động), H (host - địa chỉ đích là một máy chủ địa phương), G (gateway - địa chỉ đích là một gateway), và khác.
  • Iface: Giao diện mạng được sử dụng để gửi các gói tin tới đích đến.
  • Và một số thông tin bổ sung như MSS-kích thước tối đa của dữ liệu, Window-khả năng nhận dữ liệu, irrt-thời gian mà một gói tin cần để đi đến đích

>>> Xem thêmCác câu lệnh lọc dữ liệu file trong Linux

IV. Sử dụng lệnh netstat kết hợp với các lệnh khác trên Linux

Việc lọc thông tin với lệnh netstat cũng rất đa dạng khi bạn có thể sử dụng netstat kết hợp với các lệnh khác. Dưới đây là một số ví dụ:

1. Hiển thị danh sách các kết nối TCP theo thời gian thực

Để xem được danh sách các kết nối TCP theo thời gian thực, chúng ta sẽ kết hợp lệnh watch và netstat. Việc thực hiện như sau:

watch -n 1 'netstat -atn'

Trong đó:

  • watch là một lệnh trong Linux được sử dụng để theo dõi sự thay đổi của một lệnh hoặc một tập lệnh khác trong khoảng thời gian nhất định
  • watch -n 1: Tùy chọn này chỉ định khoảng thời gian mà câu lệnh sau nó được lặp lại
  • 'netstat -atn': Đây là câu lệnh hiển thị tất cả các kết nối TCP

Đầu ra sẽ trông như sau:

Danh sách các kết nối TCP theo thời gian thực

2. Xem số lượng kết nối mạng đang mở trên hệ thống

Để biết được số lượng kết nối mạng đang mở trên hệ thống, chúng ta sử dụng lệnh netstat kết hợp với lệnh wc như sau:

ducmanh287@ubuntusv:~$ netstat -ant | wc -l

10

ducmanh287@ubuntusv:~$

Trong đó:

  • Lệnh wc -l sẽ được dùng để đếm số lượng dòng trong đầu vào
  • Đầu vào là netstat -ant để hiển thị các kết nối tcp trên hệ thống
  • wc -l được sử dụng để đếm số lượng dòng trong kết quả đầu ra của lệnh netstat -ant, tức là số lượng kết nối TCP đang mở trên hệ thống.

3. Kiểm tra các cổng mạng được sử dụng bởi dịch vụ SSH

Mặc định dịch vụ SSH sẽ sử dụng cổng 22 cho dịch vụ của mình. Vậy nên chúng ta sẽ kết hợp lệnh netstat và lệnh grep để tìm kiếm cổng 22 như sau:

ducmanh287@ubuntusv:~$ netstat -tln | grep :22

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

tcp6      0               0 :::22                       :::*               LISTEN

V. Tổng kết

Qua bài viết trên, chúng ta cũng đã phần nào hiểu được khái niệm về lệnh netstat và cách sử dụng netstat trên Linux. Sử dụng netstat là một kỹ năng cần thiết cho bất kỳ quản trị viên hệ thống nào. Bằng cách hiểu cách sử dụng và giải thích kết quả từ lệnh này, họ có thể duy trì hệ thống mạng của mình trong tình trạng hoạt động ổn định và an toàn. Trở lại suncloud.vn để cập nhật thêm các kiến thức Linux bổ ích khác nữa nhé.

Tác giả:
author avatar
Mình là Huy, hiện mình đang là kỹ sư hệ thống tại SunCloud. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn về mạng, hệ thống, điện toán mây và an ninh bảo mật. Mình đã triển khai và vận hành rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số chứng chỉ quốc tế như CCNP, LPI, VCP, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.

Tin tức nổi bật
Tin tức khác