Как проверить доступность сети через фаервол?

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

Ответ

Для проверки сетевой доступности через фаервол используется комбинация утилит, так как фаервол может блокировать разные типы трафика.

Базовые проверки:

  1. Проверка на уровне ICMP (ping):

    ping -c 4 -W 2 8.8.8.8
    • -c 4: отправить 4 пакета.
    • -W 2: таймаут ожидания ответа 2 секунды.
    • Важно: Многие фаерволы блокируют ICMP, поэтому отсутствие ответа не всегда означает недоступность.
  2. Проверка TCP-соединения (telnet/nc):

    # Проверка доступности порта 443 на google.com
    nc -zv -w 3 google.com 443
    # Альтернатива с telnet (часто не установлен по умолчанию)
    timeout 3 telnet google.com 443
    • -z: режим сканирования (не отправляет данные).
    • -v: подробный вывод.
    • -w 3: таймаут соединения.
  3. Проверка HTTP/HTTPS доступа (curl/wget):

    curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 https://google.com
    • -s: тихий режим.
    • -o /dev/null: перенаправляет вывод тела ответа.
    • -w "%{http_code}": выводит только HTTP-статус (200 — успех).
    • --connect-timeout: таймаут на установку соединения.
    • Практическое применение: Этот метод идеален для проверки доступности веб-сервисов из-под CI/CD или скриптов мониторинга.

Диагностика правил фаервола: Если проверки не проходят, нужно анализировать правила на самом хосте или сетевом устройстве.

  • Для iptables: sudo iptables -L -n -v — просмотр правил с счетчиками пакетов.
  • Для firewalld: sudo firewall-cmd --list-all.
  • Для UFW: sudo ufw status verbose.

Мой подход: Я начинаю с curl на стандартный HTTPS-порт, так как это самый частый сценарий. Если он не работает, проверяю базовую TCP-связность (nc), а затем уже смотрю логи и правила фаервола, чтобы понять, какой именно трафик блокируется.