Что делать, если сервер включен, но не отвечает на ping?

«Что делать, если сервер включен, но не отвечает на ping?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я начну диагностику с самого сервера и буду двигаться "наружу".

1. Проверка на самом сервере (если есть доступ через консоль/IPMI/SSH с другого интерфейса):

  • Файрволл: sudo iptables -L -n -v или sudo firewall-cmd --list-all. ICMP (ping) может быть заблокирован.
  • Сетевой стек: sudo sysctl net.ipv4.icmp_echo_ignore_all. Если значение 1, пинг игнорируется.
  • Сетевой интерфейс: ip addr show. Убедиться, что интерфейс UP и имеет правильный IP.

2. Проверка с промежуточных узлов (шлюз, другой сервер в той же сети):

  • Traceroute: traceroute <IP_сервера> или mtr <IP_сервера>. Покажет, на каком участке сеть обрывается.
  • ARP-таблица: arp -a | grep <IP_сервера>. Есть ли MAC-адрес сервера? Если нет, проблема на L2 (VLAN, порт коммутатора).

3. Проверка сетевой инфраструктуры:

  • Коммутатор: Проверить, включен ли порт, правильный ли VLAN назначен.
  • Security Groups / ACL (в облаке): В AWS/GCP/Azure нужно проверить правила групп безопасности и сетевые ACL, разрешают ли они ICMP (тип 8, код 0) с моего IP.

Пример быстрой проверки доступности других сервисов на этом же сервере:

# Если пинг не работает, проверим, открыт ли SSH-порт (22)
nc -zv <IP_сервера> 22
# Или проверим стандартный веб-порт (80)
curl -I --connect-timeout 5 http://<IP_сервера>

Если другие порты отвечают, значит, проблема именно с обработкой ICMP-пакетов на сервере или в правилах безопасности.