
Giới thiệu
Bạn đã bao giờ gặp tình huống pipeline CI/CD thất bại mà log không cho biết lý do? Hay ứng dụng chậm nhưng không rõ vấn đề nằm ở đâu – code hay mạng? Phân tích lưu lượng mạng là kỹ năng giúp bạn “nhìn” được dữ liệu thực sự di chuyển thế nào. Trong bài thứ tám của series chuyên sâu, chúng ta sẽ đi sâu vào cách dùng Wireshark và tcpdump, cấu trúc gói tin, đo lường hiệu năng, và ứng dụng thực tế để debug mạng trong DevOps. Hãy chuẩn bị để làm chủ nghệ thuật “bắt gói tin”!
Phân tích lưu lượng mạng: Tại sao lại quan trọng
Lưu lượng mạng là gì?
Lưu lượng mạng là tập hợp các gói tin (packet) di chuyển giữa các thiết bị – từ runner CI/CD đến server, từ microservice đến database, hay từ server đến client. Mỗi gói tin mang thông tin về nguồn, đích, và dữ liệu thực tế.
- Vai trò trong DevOps:
- Debug: Xác định lỗi mạng (latency, packet loss).
- Tối ưu: Đo băng thông, tìm bottleneck.
- Bảo mật: Phát hiện truy cập bất thường.
Ví dụ thực tế: Một team DevOps nhận thấy job deploy lên S3 chậm bất thường. Phân tích lưu lượng mạng cho thấy 30% gói tin bị mất (packet loss) do router trung gian lỗi, điều mà log ứng dụng không thể phát hiện.
Khi nào cần phân tích?
- Ứng dụng timeout mà ping vẫn OK.
- Traffic tăng đột biến nhưng không rõ nguồn.
- Microservices không giao tiếp được dù port mở.
Hiểu cách bắt và đọc gói tin là bước quan trọng để làm chủ hệ thống phân tán.
Gói tin (Packet): Cấu trúc và ý nghĩa
Cấu trúc gói tin
Mỗi gói tin là một đơn vị dữ liệu, gồm ba phần chính:
- Header Ethernet (Tầng 2):
- MAC nguồn và đích.
- Loại gói (IP, ARP).
- Kích thước: 14 byte.
- Header IP (Tầng 3):
- IP nguồn và đích.
- Protocol (TCP=6, UDP=17).
- TTL (Time to Live): Số hop tối đa.
- Kích thước: 20 byte (IPv4).
- Header TCP/UDP (Tầng 4):
- Port nguồn và đích.
- Sequence number (TCP).
- Kích thước: 20 byte (TCP), 8 byte (UDP).
- Payload: Dữ liệu thực tế (HTTP request, file chunk).
Ví dụ: Gói tin HTTP từ 192.168.1.10:12345 đến 8.8.8.8:80 có header IP (nguồn: 192.168.1.10, đích: 8.8.8.8), header TCP (port: 12345 → 80), và payload là “GET /index.html”.
Đo lường hiệu năng
- Latency: Thời gian gói tin đi từ nguồn đến đích.
- Packet Loss: Tỷ lệ gói tin bị mất.
- Throughput: Lượng dữ liệu truyền trong 1 giây (Mbps).
Trong DevOps: Latency cao có thể do mạng chậm, packet loss do router lỗi, throughput thấp do băng thông bị giới hạn.
Công cụ phân tích: Wireshark và Tcpdump
Wireshark: Giao diện trực quan
Wireshark là công cụ bắt gói tin phổ biến với giao diện đồ họa.
- Tính năng:
- Lọc gói tin (VD:
ip.addr == 192.168.1.10). - Phân tích header chi tiết.
- Theo dõi luồng TCP (Follow TCP Stream).
- Lọc gói tin (VD:
- Cài đặt: Tải từ wireshark.org, chạy trên Windows/Mac/Linux.
Ví dụ: Bắt gói tin HTTP:
- Mở Wireshark, chọn interface (VD:
eth0). - Lọc:
http.request. - Truy cập
google.comtrên browser → Thấy request GET và response.
Tcpdump: Dòng lệnh mạnh mẽ
Tcpdump là công cụ dòng lệnh nhẹ, lý tưởng cho server không có GUI.
- Cú pháp cơ bản:
tcpdump -i eth0 -n-i: Interface.-n: Không resolve IP/port thành tên.
- Lọc:
tcpdump -i eth0 port 80
| So sánh: | Công cụ | Ưu điểm |
|---|---|---|
| Wireshark | Giao diện đẹp, chi tiết | Nặng, cần GUI |
| Tcpdump | Nhẹ, chạy trên server | Khó đọc nếu phức tạp |
DevOps: Dùng tcpdump trên server production, Wireshark trên local để phân tích sâu.
Ứng dụng thực tế trong DevOps
Debug Pipeline CI/CD
- Vấn đề: Job pull image từ registry timeout.
- Phân tích: Dùng tcpdump bắt gói tin đến registry → Phát hiện TCP retransmission do packet loss.
- Giải pháp: Đổi DNS server hoặc kiểm tra router.
Tối ưu Microservices
- Vấn đề: API gọi DB chậm.
- Phân tích: Wireshark đo latency giữa hai IP → 200ms, bất thường.
- Giải pháp: Kiểm tra MTU (Maximum Transmission Unit) hoặc switch.
Phát hiện bảo mật
- Vấn đề: Traffic bất thường vào port 22 (SSH).
- Phân tích: Tcpdump bắt gói → Nhiều SYN từ IP lạ.
- Giải pháp: Thêm rule firewall chặn IP.
Bắt và phân tích gói tin
Dùng Tcpdump
- Bắt gói tin trên port 80:
sudo tcpdump -i eth0 -n tcp port 80- Kết quả mẫu:
10:00:01 IP 192.168.1.10.12345 > 142.250.190.14.80: Flags [S], seq 123456
- Kết quả mẫu:
- Lưu file:
sudo tcpdump -i eth0 -w capture.pcap -c 1000-w: Lưu file,-c: Giới hạn 1000 gói.
Dùng Wireshark
- Mở Wireshark, chọn interface (VD:
eth0). - Lọc gói HTTP:
- Nhập
httpvào filter bar → Enter.
- Nhập
- Mở trình duyệt, truy cập
example.com. - Phân tích:
- Click gói tin → Xem header IP, TCP, và payload (HTTP GET).
Đo Lường Hiệu Năng
- Latency: Dùng Wireshark, xem delta time giữa gói SYN và ACK.
- Packet Loss: Tìm “TCP Retransmission” trong Wireshark hoặc tcpdump.
- Throughput: Dùng
iperf:
# Server
iperf -s
# Client
iperf -c <server-ip>Debug tip:
- Latency cao: Kiểm tra
traceroutetìm hop chậm. - Packet loss: Dùng
ping -c 1000 <ip>tính tỷ lệ mất. - Traffic bất thường: Lọc
tcp.flags.synđể phát hiện SYN flood.

