Сервер не пингуется: как разрешить ICMP Ping в UFW и iptables
Сервер работает, но системы мониторинга бьют тревогу
Сайты открываются штатно, SSH доступен, однако ping IP_СЕРВЕРА возвращает Request timed out (100% loss), а Zabbix или Pingdom сообщают о недоступности хоста. Причина — фаервол UFW по умолчанию блокирует или сбрасывает (DROP) пакеты ICMP Echo Request.
Разница между портами и ICMP
Утилита ping использует протокол ICMP сетевого уровня L3, у которого нет TCP/UDP портов. Поэтому стандартная команда ufw allow ping не существует.
Разрешение ICMP запросов в конфигурации UFW
- Открываем файл системных правил UFW:
sudo nano /etc/ufw/before.rules - Находим секцию правил 'ok icmp codes for INPUT':
Убедитесь, что строка дляecho-requestприсутствует и имеет действие-j ACCEPT: - Вставьте (или раскомментируйте) следующие строки:
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT -A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT -A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT - Сохраняем файл и перезагружаем фаервол:
sudo ufw reload - Проверяем пинг с локального компьютера:
ping IP_ВАШЕГО_СЕРВЕРА
Если сервер находится в облаке (AWS, VK Cloud, Yandex Cloud), убедитесь, что ICMP дополнительно разрешен в Security Groups панели хостинга.
Частые вопросы (FAQ)
Опасно ли разрешать Ping для всех?
Нет, стандартный ICMP echo-request не несет угрозы безопасности и необходим для диагностики MTU и доступности.
Как разрешить пинг только с IP-адреса сервера мониторинга Zabbix?
В before.rules укажите источник: -A ufw-before-input -p icmp -s IP_ZABBIX --icmp-type echo-request -j ACCEPT.
Как отключить ответы на пинг напрямую через ядро Linux?
Выполните: sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1.
Почему сервер перестал пинговаться после настройки iptables?
Цепочка INPUT по умолчанию стоит в DROP. Добавьте: iptables -A INPUT -p icmp -j ACCEPT.