CH-J Server Managerquản lý máy chủ qua SSH
Menu
Tất cả hướng dẫn và bài viết →

ping thất bại nhưng SSH và HTTPS vẫn hoạt động: tại sao, và có đáng lo không?

Vì sao máy chủ có thể bỏ qua ping mà vẫn chạy bình thường, cách kiểm tra trực tiếp dịch vụ và khi nào việc chặn ICMP gây lỗi thực sự.

Vì sao điều này xảy ra

ping dùng ICMP, còn SSH và HTTPS dùng các cổng TCP. Đây là những luồng lưu lượng riêng biệt, và tường lửa có thể loại bỏ loại này nhưng cho loại kia đi qua. Nhiều mạng và nhóm bảo mật đám mây chặn ICMP echo theo mặc định. Vì vậy, không có phản hồi không có nghĩa máy chủ đã ngừng hoạt động, còn có phản hồi cũng không chứng minh các dịch vụ của nó đang hoạt động.

Kiểm tra dịch vụ thay vì ping

Kiểm tra các cổng và giao thức bạn thực sự cần. Nếu các phép kiểm tra này thành công, có thể truy cập máy chủ qua những dịch vụ đó, và ping thất bại chỉ cho thấy có bộ lọc ở đâu đó trên đường đi.

nc -vz -w 5 server.example 22
nc -vz -w 5 server.example 443
curl -sSI https://server.example/

Dò đường đi bằng TCP

traceroute thông thường có thể chỉ hiện các dấu sao khi ICMP hoặc UDP bị lọc. Dùng TCP tới một cổng đang mở thường giúp dò xa hơn. Việc này cần root, và có thể phải cài traceroute trước vì các hệ thống tối giản không có sẵn công cụ này.

sudo traceroute -T -p 443 server.example

Tìm bộ lọc trên máy chủ của bạn

Nếu bạn quản lý máy chủ, hãy xem tường lửa và thiết lập kernel bỏ qua yêu cầu echo. Nhớ rằng điểm chặn cũng có thể nằm ngoài máy chủ, trong nhóm bảo mật hoặc bộ định tuyến, và nhà cung cấp có thể lọc ICMP trên mạng của họ mà bạn không thấy quy tắc nào.

sysctl net.ipv4.icmp_echo_ignore_all
sudo nft list ruleset | grep -i icmp
sudo ufw status verbose

Khi việc chặn ICMP thực sự gây lỗi

Chặn echo phần lớn là vô hại, nhưng chặn toàn bộ ICMP thì không. Cơ chế khám phá MTU đường đi dựa vào các thông báo về gói tin quá lớn. Thiếu chúng, trao đổi nhỏ vẫn hoạt động còn trao đổi lớn bị treo, chẳng hạn đăng nhập SSH thành công nhưng sau đó treo khi xuất lượng dữ liệu lớn. IPv6 còn phụ thuộc vào ICMPv6 nhiều hơn. Lệnh thứ hai kiểm tra đường đi với MTU 1500 byte trên Linux.

ip route get 192.0.2.10
ping -M do -s 1472 -c 3 192.0.2.10

So sánh các phép kiểm tra trong CH-J Server Manager

Server Diagnostics chạy ping qua công cụ hệ thống, không cần root, bên cạnh các phép kiểm tra TCP, nhận dạng SSH, HTTP và TLS riêng biệt, giúp đánh giá ping thất bại trong bối cảnh đầy đủ. Ở đây, ping thất bại nghĩa là không có phản hồi đến. Nó không cho biết gói tin bị loại bỏ ở đâu, và traceroute cũng có thể không trả lời được điều đó.

Tài liệu chi tiết

RFC 4890: ICMPv6 filtering →

man: ping →

Mở khóa sinh trắc học và bảo mật →