Ответ
Для проверки сетевой доступности через фаервол используется комбинация утилит, так как фаервол может блокировать разные типы трафика.
Базовые проверки:
-
Проверка на уровне ICMP (ping):
ping -c 4 -W 2 8.8.8.8-c 4: отправить 4 пакета.-W 2: таймаут ожидания ответа 2 секунды.- Важно: Многие фаерволы блокируют ICMP, поэтому отсутствие ответа не всегда означает недоступность.
-
Проверка TCP-соединения (telnet/nc):
# Проверка доступности порта 443 на google.com nc -zv -w 3 google.com 443# Альтернатива с telnet (часто не установлен по умолчанию) timeout 3 telnet google.com 443-z: режим сканирования (не отправляет данные).-v: подробный вывод.-w 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), а затем уже смотрю логи и правила фаервола, чтобы понять, какой именно трафик блокируется.