Tcpdump – Vũ khí CLI tối thượng cho dân mạng khi cần bắt gói
Khi hệ thống đang "lag", server phản hồi chậm, hay nghi ngờ có tấn công mạng ngầm, phản xạ đầu tiên của một kỹ sư mạng kỳ cựu là gì?
👉 Chạy tcpdump.
Dù không có giao diện màu mè như Wireshark, nhưng tcpdump là công cụ bắt gói nhẹ, nhanh và mạnh mẽ nhất mà bạn có thể dùng ngay từ dòng lệnh – đặc biệt hữu dụng trong môi trường server Linux, thiết bị bảo mật, hoặc các kịch bản tự động hóa.
🎯 Tcpdump là gì?
Tcpdump là một công cụ dòng lệnh chạy trên hệ điều hành dạng UNIX/Linux, cho phép bắt và phân tích các gói tin đang đi qua một giao diện mạng. Nó có thể hiển thị thông tin trực tiếp ra màn hình hoặc lưu lại file .pcap để phân tích sau bằng Wireshark hoặc Python.
📌 Lý do tcpdump được dân chuyên chọn dùng:
🧪 Ví dụ thực chiến: Bắt gói VNC trên port 5901
sudo tcpdump -i ens192 -v -c 3 -n port 5901
📖 Giải thích:
▶️ Output bạn nhận được có thể giống thế này:
10.154.2.11.35418 > 10.154.17.151.5901: Flags [P.], seq 3320954371:3320954379, ack 3495073690 ...
Thông tin ở đây cho thấy một kết nối TCP từ máy 10.154.2.11 đến máy 10.154.17.151 trên cổng 5901 đang truyền dữ liệu.
💾 Lưu file để phân tích sau bằng Wireshark
Giả sử bạn muốn bắt 5 gói HTTP hoặc HTTPS và lưu vào file .pcap để gởi cho đồng nghiệp:
sudo tcpdump -i ens192 -v -c 5 -n port 80 or port 443 -w http_https_traffic.pcap
File http_https_traffic.pcap này có thể mở bằng Wireshark hoặc đọc lại bằng tcpdump như sau:
sudo tcpdump -r http_https_traffic.pcap -n
Ví dụ kết quả:
10.154.17.151.33518 > 10.247.136.90.http: Flags [.], ack 2754865775, ...
⚙️ Tcpdump + Python = Automation đỉnh cao
Tcpdump có thể được gọi từ các script Python bằng thư viện subprocess, và output có thể được xử lý bằng scapy hoặc pyshark.
Một số ứng dụng thực tế:
✅ Kinh nghiệm thực chiến
🎯 Kết luận
Tcpdump không màu mè, nhưng là "vũ khí dòng lệnh" siêu hiệu quả dành cho anh em làm mạng. Khi sự cố xảy ra, nếu không có tcpdump hoặc Wireshark, bạn như chiến binh thiếu vũ khí.
Lời khuyên: Đừng chỉ "nghe cho biết", hãy tự mình bật lên, gõ vài lệnh, bắt vài gói, vì mỗi gói tin là một mảnh ghép cho câu chuyện đang diễn ra trong hệ thống.
Khi hệ thống đang "lag", server phản hồi chậm, hay nghi ngờ có tấn công mạng ngầm, phản xạ đầu tiên của một kỹ sư mạng kỳ cựu là gì?
👉 Chạy tcpdump.
Dù không có giao diện màu mè như Wireshark, nhưng tcpdump là công cụ bắt gói nhẹ, nhanh và mạnh mẽ nhất mà bạn có thể dùng ngay từ dòng lệnh – đặc biệt hữu dụng trong môi trường server Linux, thiết bị bảo mật, hoặc các kịch bản tự động hóa.
🎯 Tcpdump là gì?
Tcpdump là một công cụ dòng lệnh chạy trên hệ điều hành dạng UNIX/Linux, cho phép bắt và phân tích các gói tin đang đi qua một giao diện mạng. Nó có thể hiển thị thông tin trực tiếp ra màn hình hoặc lưu lại file .pcap để phân tích sau bằng Wireshark hoặc Python.
📌 Lý do tcpdump được dân chuyên chọn dùng:
- Chạy trực tiếp trên CLI mà không cần GUI, cực tiện khi SSH vào thiết bị từ xa.
- Bộ lọc linh hoạt: chỉ bắt gói theo địa chỉ IP, cổng, giao thức, chiều truyền, v.v.
- Kết hợp tốt với Python: có thể nhúng vào các workflow tự động hoặc phân tích log theo sự kiện.
- Kích thước nhỏ, có thể chạy trên hầu hết các hệ thống (server, container, firewall, v.v).
🧪 Ví dụ thực chiến: Bắt gói VNC trên port 5901
sudo tcpdump -i ens192 -v -c 3 -n port 5901
📖 Giải thích:
- -i ens192: chỉ định giao diện mạng cần bắt gói.
- -v: bật chế độ verbose, hiển thị chi tiết gói tin hơn.
- -c 3: chỉ bắt đúng 3 gói rồi dừng.
- -n: không phân giải DNS, giúp hiển thị địa chỉ IP nhanh và rõ ràng.
- port 5901: chỉ bắt các gói tin có liên quan đến cổng 5901 (thường dùng cho VNC).
▶️ Output bạn nhận được có thể giống thế này:
10.154.2.11.35418 > 10.154.17.151.5901: Flags [P.], seq 3320954371:3320954379, ack 3495073690 ...
Thông tin ở đây cho thấy một kết nối TCP từ máy 10.154.2.11 đến máy 10.154.17.151 trên cổng 5901 đang truyền dữ liệu.
💾 Lưu file để phân tích sau bằng Wireshark
Giả sử bạn muốn bắt 5 gói HTTP hoặc HTTPS và lưu vào file .pcap để gởi cho đồng nghiệp:
sudo tcpdump -i ens192 -v -c 5 -n port 80 or port 443 -w http_https_traffic.pcap
File http_https_traffic.pcap này có thể mở bằng Wireshark hoặc đọc lại bằng tcpdump như sau:
sudo tcpdump -r http_https_traffic.pcap -n
Ví dụ kết quả:
10.154.17.151.33518 > 10.247.136.90.http: Flags [.], ack 2754865775, ...
⚙️ Tcpdump + Python = Automation đỉnh cao
Tcpdump có thể được gọi từ các script Python bằng thư viện subprocess, và output có thể được xử lý bằng scapy hoặc pyshark.
Một số ứng dụng thực tế:
- Tự động bắt gói khi phát hiện lỗi hệ thống.
- Kết hợp CI/CD: tự bắt gói khi test API hoặc microservices.
- Gửi cảnh báo về mạng khi thấy lưu lượng bất thường (dùng kèm hệ thống cảnh báo như ELK, Grafana hoặc Alertmanager).
✅ Kinh nghiệm thực chiến
- Khi cần phân tích ARP spoofing, lọc theo arp.
- Phân tích DNS: dùng port 53.
- Debug NAT hoặc routing: dùng icmp để bắt các gói ping hoặc traceroute.
- Kết hợp với grep, awk, cut... trên Linux để lọc log sâu hơn.
- Khi bắt gói trong môi trường nhiều VLAN, có thể dùng thêm vlan để bắt đúng frame gốc.
🎯 Kết luận
Tcpdump không màu mè, nhưng là "vũ khí dòng lệnh" siêu hiệu quả dành cho anh em làm mạng. Khi sự cố xảy ra, nếu không có tcpdump hoặc Wireshark, bạn như chiến binh thiếu vũ khí.
Lời khuyên: Đừng chỉ "nghe cho biết", hãy tự mình bật lên, gõ vài lệnh, bắt vài gói, vì mỗi gói tin là một mảnh ghép cho câu chuyện đang diễn ra trong hệ thống.