CH-J Server Managerуправление серверами через SSH
Меню
Все руководства и статьи →

ping не проходит, но SSH и HTTPS работают: почему и проблема ли это?

Почему сервер может игнорировать ping и при этом работать нормально, как проверять службы напрямую и когда блокировка ICMP действительно вызывает сбои.

Почему так происходит

ping использует ICMP, а SSH и HTTPS — порты TCP. Это разные виды трафика: межсетевой экран может отбрасывать один и пропускать другой. Многие сети и облачные группы безопасности по умолчанию блокируют ICMP echo. Поэтому отсутствие ответа не означает, что сервер не работает, а наличие ответа не доказывает работоспособность его служб.

Проверяйте службу, а не ping

Проверьте именно те порты и протоколы, которые вам нужны. Если проверки успешны, сервер доступен для этих служб, а неудачный ping лишь указывает на фильтр где-то на пути.

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

Проследите маршрут с помощью TCP

Обычный traceroute может показывать только звёздочки, если ICMP или UDP фильтруются. С TCP на открытый порт часто удаётся продвинуться дальше. Для этого нужен root; возможно, сначала придётся установить traceroute, поскольку в минимальных системах его нет.

sudo traceroute -T -p 443 server.example

Поищите фильтр на своём сервере

Если вы администрируете сервер, проверьте его межсетевой экран и параметр ядра, отвечающий за игнорирование эхо-запросов. Помните, что блокировка может быть и вне сервера — в группе безопасности или маршрутизаторе, а провайдер может фильтровать ICMP в своей сети без видимого вам правила.

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

Когда блокировка ICMP действительно вызывает сбои

Блокировка эхо-запросов обычно безвредна, но блокировка всего ICMP — нет. Обнаружение MTU пути зависит от сообщений о слишком больших пакетах. Без них небольшие обмены данными проходят, а большие зависают: например, вход по SSH удаётся, но затем соединение зависает при объёмном выводе. IPv6 ещё сильнее зависит от ICMPv6. Вторая команда проверяет в Linux путь для MTU 1500 байт.

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

Сравнение в CH-J Server Manager

Server Diagnostics запускает ping системным инструментом без root наряду с отдельными проверками TCP, идентификации SSH, HTTP и TLS, поэтому неудачный ping можно оценить в контексте. Неудачный ping здесь означает, что ответ не пришёл. Он не показывает, где был отброшен пакет; traceroute тоже может не дать ответа.

Подробная документация

RFC 4890: ICMPv6 filtering →

man: ping →

Биометрическое разблокирование и безопасность →