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.