Lệnh tcpdump
là một công cụ dòng lệnh giúp bạn theo dõi và phân tích lưu lượng mạng ngay trên Linux. Bài viết này sẽ giúp bạn hiểu rõ tcpdump là gì, những đặc điểm nổi bật và cú pháp cơ bản để bắt đầu sử dụng. Bạn cũng sẽ được hướng dẫn cách cài đặt cụ thể trên từng bản phân phối phổ biến như Ubuntu, CentOS, Fedora và Arch. Ngoài ra, bài viết còn giới thiệu các lệnh mẫu thông dụng, biểu thức lọc nâng cao và cách tận dụng công cụ này trong công việc quản trị mạng.
Điểm chính cần nắm
- Lệnh tcpdump trong Linux là gì?: Giới thiệu tổng quan về công cụ tcpdump và ứng dụng trong phân tích lưu lượng mạng.
- Cú pháp của lệnh tcpdump: Trình bày cú pháp chuẩn của tcpdump và cách sử dụng các tuỳ chọn.
- Cài đặt lệnh tcpdump chi tiết: Hướng dẫn cài đặt tcpdump trên các bản phân phối Linux phổ biến.
- Các lệnh cơ bản sử dụng tcpdump trên Linux: Tổng hợp các lệnh tcpdump thường dùng để theo dõi mạng.
- Biểu thức lọc nâng cao trong tcpdump: Giải thích cách sử dụng các biểu thức lọc để phân tích lưu lượng chi tiết hơn.
- Vietnix – Hạ tầng vững chắc cho quản trị mạng và hệ thống: Giới thiệu dịch vụ hạ tầng VPS tại Vietnix phù hợp cho công việc giám sát và phân tích mạng.
- FAQ: Giải đáp các câu hỏi thường gặp liên quan đến lệnh tcpdump trong Linux.
Lệnh tcpdump trong Linux là gì?
Lệnh tcpdump
trong Linux là một công cụ dòng lệnh dùng để bắt và phân tích lưu lượng mạng đi qua một giao diện mạng trên hệ thống. Đây là công cụ mạnh mẽ và phổ biến, thường được sử dụng để:
- Chuẩn đoán sự cố mạng.
- Phân tích bảo mật mạng.
- Kiểm tra lưu lượng ứng dụng.
- Theo dõi các gói dữ liệu trong thời gian thực (real time).

Một số đặc điểm nổi bật của tcpdump
- Hoạt động trực tiếp từ dòng lệnh, phù hợp để chạy trên máy chủ không có giao diện đồ họa (GUI).
- Hỗ trợ lọc gói tin mạnh mẽ theo địa chỉ IP, cổng, giao thức, v.v.
- Có thể chạy dưới nền hoặc lên lịch tự động với
cron
. - Kết hợp tốt với thư viện
libpcap
để truy cập dữ liệu gói tin.
Cú pháp của lệnh tcpdump
Cú pháp cơ bản
sudo tcpdump [tùy chọn] [bộ lọc]
Tùy chọn thường dùng của lệnh tcpdump
trong Linux
Tùy chọn | Mô tả |
---|---|
-i <giao_diện> | Chỉ định giao diện mạng để bắt gói (vd: eth0 , any ) |
-c <số> | Dừng sau khi bắt đủ số lượng gói |
-n | Không phân giải tên miền (hiển thị IP thô) |
-nn | Không phân giải IP và cổng (hiển thị số cổng thô) |
-v , -vv , -vvv | Mức độ chi tiết khi hiển thị gói tin |
-w <file> | Ghi gói tin vào file (dạng nhị phân .pcap ) |
-r <file> | Đọc gói tin từ file .pcap |
-t | Ẩn dấu thời gian hiển thị |
-tttt | Hiển thị thời gian đầy đủ, có ngày giờ |
-s <bytes> | Chỉ định số byte cần chụp trong mỗi gói (mặc định thường là 262144 hoặc 65535) |
Biểu thức bộ lọc ([biểu_thức_bộ_lọc]
):
Các biểu thức giúp lọc gói tin theo điều kiện. Một số ví dụ:
- Giao thức:
tcp
,udp
,icmp
,ip
,arp
- Địa chỉ IP:
host 192.168.1.10
,src 10.0.0.1
,dst 8.8.8.8
- Cổng:
port 80
,src port 443
,dst port 53
- Tổ hợp:
tcp and port 80 and src 192.168.1.5
Ví dụ:
sudo tcpdump -i wlp3s0 -nn -c 10 "tcp and port 80 and src 192.168.1.100"
-i wlp3s0
: chỉ định giao diện mạng Wi-Fi-nn
: không phân giải tên host và por-c 10
: bắt 10 gói rồi thoát"tcp and port 80 and src 192.168.1.100"
: chỉ lọc gói TCP từ IP nguồn192.168.1.100
gửi đến cổng 80

Cài đặt lệnh tcpdump chi tiết
Trước khi bắt đầu sử dụng tcpdump
để bắt gói tin và phân tích lưu lượng mạng, bạn cần chắc chắn rằng công cụ này đã được cài đặt trên hệ thống. Dưới đây là hướng dẫn chi tiết cách cài đặt tcpdump
trên các bản phân phối Linux phổ biến.
Trên Ubuntu và Debian
Với các hệ điều hành dựa trên Debian như Ubuntu, việc cài đặt tcpdump
khá đơn giản qua trình quản lý gói apt
.
sudo apt update
sudo apt install tcpdump -y
Sau khi cài xong, bạn có thể kiểm tra phiên bản đã cài bằng lệnh:
tcpdump --version
Trên CentOS, RHEL
Đối với hệ điều hành CentOS hoặc Red Hat Enterprise Linux, bạn có thể sử dụng yum
hoặc dnf
(tùy vào phiên bản):
sudo yum install tcpdump -y
# hoặc
sudo dnf install tcpdump -y
Kiểm tra phiên bản:
tcpdump --version
Trên Fedora
Fedora sử dụng trình quản lý gói dnf
, bạn chỉ cần chạy:
sudo dnf install tcpdump -y
Trên Arch Linux hoặc Manjaro
Với Arch và các bản phân phối dựa trên nó như Manjaro, bạn cài đặt bằng pacman
:
sudo pacman -Syu tcpdump
Các lệnh cơ bản sử dụng tcpdump trên Linux
tcpdump là công cụ dòng lệnh mạnh mẽ dùng để bắt và phân tích các gói tin mạng. Dưới đây là tổng hợp các lệnh tcpdump thường dùng, kèm giải thích ngắn gọn để bạn dễ dàng áp dụng:
1. Bắt gói tin theo địa chỉ IP
- Theo địa chỉ nguồn:
sudo tcpdump -i wlp3s0 -nn -c 10 "tcp and port 80 and src 192.168.1.100"

- Theo địa chỉ đích:
tcpdump -i wlp3s0 dst 192.168.100.1
2. Xem danh sách interface khả dụng
tcpdump -D

3. Bắt gói tin trên interface cụ thể
tcpdump -i wlp3s0

4. Bắt gói tin theo port
tcpdump -i wlp3s0 port 22 -c 5 -n
Giải thích:
-c 5
: chỉ bắt 5 gói tin rồi dừng-n
: hiển thị địa chỉ IP và số port thay vì hostname hoặc tên dịch vụ

5. Bắt gói TCP giữa hai host
tcpdump -i wlp3s0 tcp -c 5
Bạn có thể thay tcp
bằng udp
, icmp
,…

6. Bắt một số lượng gói tin nhất định
tcpdump -c 10 -i wlp3s0

7. Bắt gói có kích thước nhỏ hơn N byte
tcpdump -i wlp3s0 -w small_packets.pcap less 1024
8. Lưu kết quả bắt gói thành file .pcap
tcpdump -i wlp3s0 -w /opt/capture.pcap
9. Đọc file .pcap
đã lưu
tcpdump -tttt -r capture.pcap
10. Hiển thị nội dung gói tin ở định dạng ASCII
tcpdump -A -i wlp3s0

11. Hiển thị nội dung gói tin ở định dạng HEX và ASCII
tcpdump -XX -i wlp3s0

12. Thêm dấu thời gian chi tiết
tcpdump -n -tttt -i wlp3s0

13. Bắt gói tin và lưu trực tiếp vào file
tcpdump -w output.pcap -i wlp3s0

Biểu thức lọc nâng cao trong tcpdump
Bạn có thể sử dụng biểu thức trực tiếp để lọc gói tin chính xác hơn theo các điều kiện nhất định.
Một số ví dụ:
- Gói có độ dài khác 5 byte:
tcpdump 'len != 5'
- Gói phát theo multicast:
tcpdump 'ether[0] & 1 != 0'
- Gói IP có tùy chọn header:
tcpdump 'ip[0] & 0xf != 5'
- Gói không bị phân mảnh:
tcpdump 'ip[6:2] & 0x1fff = 0'
Tham số | Ý nghĩa |
---|---|
host 1.2.3.4 | Bắt các gói liên quan đến IP 1.2.3.4 |
src 1.2.3.4 | Chỉ bắt gói từ địa chỉ IP nguồn |
dst 1.2.3.4 | Chỉ bắt gói gửi đến địa chỉ đích |
port 80 | Bắt gói tin trên cổng 80 |
tcp , udp , icmp | Bắt theo giao thức cụ thể |
net 192.168.1.0/24 | Bắt gói trong một mạng con |
Vietnix – Hạ tầng vững chắc cho quản trị mạng và hệ thống
Khi làm việc với các công cụ như tcpdump
để giám sát lưu lượng mạng, truy vết lỗi hệ thống hay kiểm tra hiệu suất dịch vụ, điều quan trọng là có một môi trường máy chủ ổn định, tốc độ cao và sẵn sàng hoạt động liên tục. Vietnix cung cấp đa dạng dòng VPS như VPS NVMe, VPS AMD, VPS SSD và VPS Giá rẻ – tất cả đều được tối ưu hóa cho hiệu suất mạng, giúp bạn xử lý tác vụ từ đơn giản đến chuyên sâu mà không gặp tình trạng nghẽn băng thông hay thiếu tài nguyên.
Đặc biệt, Vietnix còn có dịch vụ VPS n8n – dòng máy chủ tối ưu cho các hệ thống automation phức tạp, giúp bạn xây dựng các luồng công việc tự động một cách ổn định, lâu dài và hiệu quả. Với hạ tầng mạnh mẽ, tốc độ truyền tải nhanh, bảo mật cao và đội ngũ kỹ thuật hỗ trợ 24/7, Vietnix là lựa chọn đáng tin cậy cho những ai đang triển khai hệ thống giám sát, phân tích hoặc xây dựng nền tảng tự động hóa chuyên nghiệp.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
Lệnh tcpdump dùng để làm gì trong Linux?
tcpdump
là công cụ dòng lệnh dùng để bắt gói (packet capture) và phân tích lưu lượng mạng theo thời gian thực, giúp người dùng giám sát, kiểm tra hoặc phân tích sự cố mạng.
Làm sao để bắt gói mạng trên một interface cụ thể bằng tcpdump?
Sử dụng lệnh: tcpdump -i eth0
để bắt gói trên giao diện eth0
. Thay eth0
bằng tên giao diện mạng bạn muốn giám sát.
Có thể dùng tcpdump để phân tích DNS hoặc HTTP không?
Có thể dùng tcpdump để debug kết nối giữa hai server không?
Có. Bạn có thể lọc theo IP nguồn và đích để xem toàn bộ lưu lượng giữa hai server, ví dụ: tcpdump src host A and dst host B
.
Lệnh tcpdump có yêu cầu quyền root không?
Có. Thường cần chạy sudo
vì việc bắt gói yêu cầu quyền truy cập thấp tầng vào mạng.
Làm sao để kết hợp tcpdump với cron để ghi log mạng định kỳ?
Bạn có thể viết script shell sử dụng tcpdump -w
, rồi lên lịch với cron
để ghi log theo từng khung thời gian, ví dụ: mỗi giờ một file .pcap
.
Có cách nào để lọc gói chỉ khi có cả chiều đi và về (bi-directional flow)?
Bạn cần dùng biểu thức lọc kết hợp, ví dụ: tcpdump 'src host A and dst host B or src host B and dst host A'
.
Có thể dùng tcpdump để phát hiện tấn công mạng như SYN flood không?
Có. Bạn có thể dùng tcpdump 'tcp[13] == 2'
để bắt các gói SYN và đếm số lượng bất thường.
Có thể dùng tcpdump để phát hiện truy cập bất thường vào server không?
Có. Ví dụ: bạn có thể phát hiện port scan hoặc lượng kết nối bất thường từ một IP bằng cách lọc tần suất và số lượng gói.
Lời kết
Khi sử dụng hiệu quả lệnh tcpdump
, bạn có thể dễ dàng giám sát, phân tích và xử lý sự cố mạng ngay trên dòng lệnh, tiết kiệm thời gian và tối ưu vận hành hệ thống. Nếu bạn còn bất kỳ thắc mắc nào về lệnh tcpdump trong Linux, đừng ngần ngại để lại bình luận bên dưới. Hoặc bạn có thể liên hệ trực tiếp với đội ngũ kỹ thuật của Vietnix để được hỗ trợ chi tiết. Đừng quên theo dõi blog để cập nhật thêm nhiều hướng dẫn hữu ích khác dành cho quản trị hệ thống.
Mọi người cũng xem: