Sổ tay kỹ thuật

tcpdump – filter BPF, ghi và đọc pcap

cheatsheet#linux#tcpdump#troubleshooting· cập nhật 2026-11-06

Tra nhanh cú pháp tcpdump và filter BPF để bắt BGP, BFD, gNMI, DNS và ghi pcap xoay vòng.

Sửa trang này
Mục lục

Luôn thêm -nn (không resolve tên host/port) và chỉ định -i. Filter BPF đặt cuối lệnh, nên bọc trong nháy đơn khi có ngoặc.

Tuỳ chọn hay dùng

Mục đích Lệnh
Liệt kê interface bắt được tcpdump -D
Bắt trên interface, không resolve tcpdump -i eth0 -nn
Bắt mọi interface tcpdump -i any -nn
Dừng sau N gói tcpdump -i eth0 -nn -c 100
Xem MAC / VLAN tag tcpdump -i eth0 -nn -e
Chi tiết header (TTL, options) tcpdump -i eth0 -nn -vv
In payload hex + ASCII / chỉ ASCII -X / -A
Chỉ chiều vào hoặc ra tcpdump -i eth0 -nn -Q in
Line-buffered để pipe sang grep tcpdump -i eth0 -nn -l | grep 203.0.113.5
Snaplen đầy đủ (mặc định đã là 262144) -s 0

Filter BPF cơ bản

Mục đích Filter
Theo host / subnet host 203.0.113.5 / net 198.51.100.0/24
Nguồn hoặc đích src host 198.51.100.10 / dst net 203.0.113.0/24
Theo port / dải port port 443 / portrange 57400-57410
Kết hợp, loại trừ SSH của chính mình 'host 203.0.113.5 and not port 22'
ICMP / ICMPv6 icmp / icmp6
Theo MAC ether host 00:00:5e:00:53:01
ARP arp
Gói trong VLAN 100 'vlan 100 and host 203.0.113.5'
Chỉ SYN hoặc RST 'tcp[tcpflags] & (tcp-syn|tcp-rst) != 0'
SYN không kèm ACK (kết nối mới) 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'
Gói IPv4 bị fragment 'ip[6:2] & 0x3fff != 0'

Giao thức mạng hay soi

Mục đích Lệnh
BGP (TCP 179) tcpdump -i eth0 -nn -v 'tcp port 179'
BGP chỉ SYN/RST (session không lên) tcpdump -i eth0 -nn 'tcp port 179 and tcp[tcpflags] & (tcp-syn|tcp-rst) != 0'
BFD single-hop / multihop / echo tcpdump -i eth0 -nn 'udp port 3784 or udp port 4784 or udp port 3785'
gNMI/gRPC (port tuỳ cấu hình: 9339 IANA, 57400 hay gặp trên IOS XR) tcpdump -i eth0 -nn 'tcp port 57400 or tcp port 9339'
OSPF (IP proto 89) tcpdump -i eth0 -nn 'ip proto 89'
IS-IS (không phải IP, dùng OSI) tcpdump -i eth0 -nn isis
LACP / LLDP tcpdump -i eth0 -nn -e 'ether proto 0x8809' / 'ether proto 0x88cc'
DNS tcpdump -i any -nn 'port 53'
NetFlow/IPFIX, sFlow tới collector tcpdump -i eth0 -nn 'udp port 2055 or udp port 4739 or udp port 6343'
Syslog / SNMP trap 'udp port 514' / 'udp port 162'

Ghi và đọc pcap

Mục đích Lệnh
Ghi ra file (mở bằng Wireshark) tcpdump -i eth0 -nn -w /tmp/bgp.pcap 'tcp port 179'
Ghi file và đồng thời in ra màn hình tcpdump -i eth0 -nn -w /tmp/cap.pcap --print
Xoay vòng 10 file x 100 MB tcpdump -i eth0 -nn -C 100 -W 10 -w /tmp/ring.pcap
Mỗi giờ 1 file theo tên thời gian tcpdump -i eth0 -nn -G 3600 -w '/tmp/cap-%Y%m%d-%H%M.pcap'
Đọc file tcpdump -nn -r /tmp/bgp.pcap
Đọc file kèm filter tcpdump -nn -r /tmp/cap.pcap 'host 203.0.113.5'
Thời gian tuyệt đối dễ đọc tcpdump -nn -tttt -r /tmp/cap.pcap
Bắt từ xa, xem bằng Wireshark local ssh host 'sudo tcpdump -i eth0 -nn -U -w - "port 179"' | wireshark -k -i -

Bắt trên link tải lớn mà không có filter sẽ làm đầy đĩa rất nhanh và tốn CPU. Luôn có filter, -c hoặc -C/-W giới hạn dung lượng.

Session BGP đứng ở Active: nếu thấy SYN đi ra mà nhận về RST thì peer không listen hoặc ACL/neighbor chưa khai báo; không thấy gì quay về thì nghi đường đi/firewall. Xem thêm BGP troubleshooting.