Khi lệnh Ping trở thành ‘kẻ nói dối’
Chắc hẳn bạn đã từng gặp cảnh: Website vẫn truy cập vèo vèo, nhưng ping đến server thì nhận toàn “Request timeout”. Mình từng đau đầu với ca này khi quản lý cụm Datacenter cho một startup. Firewall của hệ thống đã được cấu hình để chặn toàn bộ gói tin ICMP nhằm ẩn mình trước các đòn scan mạng.
Dựa dẫm vào mỗi ping hay traceroute lúc này chỉ khiến bạn thêm bối rối. Đó là lý do mình luôn cài sẵn hping3 trong túi đồ nghề. Không chỉ đơn thuần là kiểm tra kết nối, nó là một “máy tạo gói tin” (packet crafter) cực mạnh. Bạn có thể giả lập đủ loại traffic để xem hệ thống thực sự phản ứng thế nào.
hping3: Con dao đa năng trong thế giới Networking
Nếu nmap mạnh về quét port, tcpdump giỏi bắt gói tin, thì hping3 nằm ở giữa. Nó cho phép bạn tự tay nhào nặn một gói tin TCP, UDP, hoặc ICMP với các cờ (flags) tùy chỉnh như SYN, ACK, FIN hay RST.
Điểm đáng giá nhất của hping3 là khả năng “soi” Firewall cực kỳ chi tiết. Bạn có thể gửi một gói tin SYN đến port 80 để kiểm tra quyền truy cập, ngay cả khi ICMP bị cấm cửa. Với mình, hping3 là cách nhanh nhất để xác minh xem một rule Firewall mới có đang “chặn nhầm còn hơn bỏ sót” hay không.
Cài đặt hping3 trong 30 giây
Hầu hết kho ứng dụng Linux đều có sẵn công cụ này. Bạn chỉ cần chạy lệnh tương ứng với Distro đang dùng:
# Debian, Ubuntu, Kali Linux
sudo apt update && sudo apt install hping3 -y
# RHEL, CentOS, Fedora
sudo yum install hping3
Lưu ý: Vì hping3 can thiệp sâu vào tầng Network để tạo gói tin thô (raw socket), bạn bắt buộc phải dùng quyền sudo.
5 kỹ thuật hping3 thực chiến bạn cần biết
1. TCP Ping: Xuyên thủng bức tường ICMP
Khi ping truyền thống bị chặn, hãy dùng TCP Ping. Thay vì gửi ICMP, chúng ta gửi gói TCP SYN đến một port đang mở (như port 80 hoặc 443). Nếu nhận được phản hồi, nghĩa là đường truyền vẫn ổn.
sudo hping3 -S -p 80 1.1.1.1
-S: Gửi gói tin có cờ SYN.-p 80: Nhắm vào port 80.
Hãy chú ý dòng flags=SA (SYN-ACK) trong kết quả. Nó xác nhận port đang mở và sẵn sàng kết nối.
2. Quét Port kiểu “tàng hình” (Stealth Scan)
Dù nmap rất phổ biến, hping3 lại mang đến sự tỉ mỉ khác biệt. Bạn có thể kiểm tra xem Firewall xử lý các gói tin lạ ra sao. Ví dụ, quét dải port từ 80 đến 100 bằng gói SYN:
sudo hping3 -8 80-100 -S 192.168.1.10
Nếu nhận flags=RA (RST-ACK), port đó đang đóng nhưng Firewall cho phép đi qua. Nếu im hơi lặng tiếng (timeout), chắc chắn Firewall đã âm thầm “drop” gói tin của bạn.
3. Đo độ trễ (Latency) thực tế của dịch vụ
Trong Datacenter, gói tin ICMP thường bị xếp vào nhóm ưu tiên thấp, dẫn đến kết quả ping không chính xác. Mình thường dùng hping3 để đo độ trễ của chính port dịch vụ:
sudo hping3 -c 10 -S -p 443 google.com
Kết quả rtt ở đây chính là thời gian thực tế mà một user phải chờ khi bắt đầu thiết lập kết nối HTTPS (Port 443).
4. Traceroute bằng TCP SYN
Bạn đã từng thấy traceroute hiện toàn dấu sao * * * chưa? Đó là do các hop trung gian chặn UDP/ICMP. Hãy thử dùng TCP SYN để “nhìn xuyên” qua chúng:
sudo hping3 --traceroute -V -S -p 80 8.8.8.8
Cách này giúp bạn xác định chính xác điểm nghẽn nằm ở router nào trên đường đi.
5. Kiểm tra khả năng chịu tải (Stress Test)
Đây là tính năng mạnh mẽ nhưng nhạy cảm. Mình thường dùng nó để test độ nhạy của hệ thống chống DDoS tại công ty. Cảnh báo: Chỉ chạy lệnh này trên hệ thống bạn sở hữu.
sudo hping3 -S -p 80 --flood 192.168.1.10
Tham số --flood sẽ tống gói tin đi nhanh nhất có thể mà không đợi phản hồi. Lệnh này giúp kiểm tra xem tính năng SYN Cookies trên Firewall có tự động kích hoạt khi bị tấn công hay không.
Đọc hiểu các Flag trả về
Khi chạy hping3, bạn chỉ cần tập trung vào cột flags:
- SA (SYN-ACK): Cửa đang mở, mời vào.
- RA (RST-ACK): Cửa đóng, nhưng chủ nhà có trả lời.
- A (ACK): Thường gặp khi thăm dò các stateful firewall.
- Không phản hồi: Gói tin đã bị Firewall “vứt vào sọt rác” (Dropped).
Câu chuyện thực tế: Lỗi MTU quái ác
Có lần mình debug lỗi một server kế toán: Ping vẫn thông nhưng vào web cực chậm, lúc được lúc không. Sau khi dùng hping3 gửi các gói tin với kích thước khác nhau (flag -d), mình phát hiện ra một switch cũ bị lỗi khi xử lý gói tin lớn hơn 1400 bytes. Nếu chỉ dùng ping mặc định, có lẽ mình đã tốn cả tuần để thay đống dây cáp vô tội.
Lời kết
hping3 không phải công cụ để dùng hàng ngày. Nhưng khi mạng gặp sự cố phức tạp, nó là “bằng chứng thép” để bạn làm việc với bên hạ tầng. Hãy thử vọc vạch nó trên Lab, bạn sẽ hiểu về giao thức mạng sâu hơn bất kỳ cuốn sách lý thuyết nào.

