Разделите проверку на этапы
Сообщение «сайт недоступен» может означать множество разных вещей. Имя не разрешилось, маршрут отсутствует, приложение не слушает порт, соединение фильтруется или сертификат не подходит к домену.
Проверяйте путь от простого к составному: локальный адрес → маршрут → DNS → порт и приложение → TLS → содержимое ответа. Одна успешная проверка не подтверждает остальные этапы.
Отсутствие ответа на ping не доказывает, что HTTPS недоступен. ICMP может обрабатываться иначе, чем TCP-соединения.
Адрес, маршрут и слушающие приложения
Краткий список интерфейсов и таблица маршрутов показывают, как система собирается отправлять пакеты. Эти команды читают состояние:
ip -br addr
ip route
ip -6 routeДля конкретного адреса можно проверить выбранный маршрут без его изменения:
ip route get 1.1.1.1На сервере отдельно проверьте, слушает ли приложение нужный адрес и порт:
ss -lntupПривязка к 127.0.0.1 предназначена для локальных подключений. Привязка ко всем адресам не означает, что приложение обязательно доступно извне: на результат также влияют firewall, сеть хостера и само приложение.
DNS: имя и адрес — разные вещи
Система может использовать локальный кэш, несколько резолверов и отдельные настройки для разных интерфейсов. Сначала посмотрите текущую конфигурацию, затем задайте конкретный вопрос:
resolvectl status
resolvectl query example.orgresolvectl доступен на системах с systemd-resolved. В другой системе используйте установленный DNS-инструмент и её документацию.
Различайте записи A для IPv4 и AAAA для IPv6. Если опубликованы обе, проверяйте работоспособность обоих путей. Ошибка только в одном семействе адресов может выглядеть как нестабильность.
TTL ограничивает время кэширования ответа. Сразу после изменения DNS разные резолверы могут возвращать разные данные. Для проверки источника сравнивайте ответ рекурсивного резолвера с ответом авторитетного сервера зоны.
Проверяйте HTTPS с правильным именем
Проверка URL с доменным именем включает DNS, соединение и проверку сертификата. Начните с обычного запроса заголовков:
curl --head --connect-timeout 5 --max-time 15 https://example.org/Если важно отдельно проверить IPv4 и IPv6, используйте соответствующий параметр:
curl -4 --head https://example.org/
curl -6 --head https://example.org/Для проверки конкретного IP с сохранением правильного имени можно использовать --resolve. Замените пример на реальную пару домен–адрес:
curl --resolve example.org:443:192.0.2.10 --head https://example.org/Адрес 192.0.2.10 здесь приведён для примера. Такой запрос сохраняет имя в TLS и HTTP. Обычный запрос к IP не равноценен проверке сайта по домену.
Не отключайте проверку сертификата ради успешного результата. Несовпадение имени, недоверенная цепочка и истёкший срок — самостоятельные причины, которые нужно исследовать.
Хороший результат можно повторить
Запишите время, исходную сеть, URL, использованный IP и текст ошибки. Не ограничивайтесь словами «работает» или «не работает». Для составного сбоя важно знать, какой именно этап прошёл успешно.
- Есть ли корректный ответ DNS?
- Устанавливается ли соединение с нужным портом?
- Проходит ли проверка сертификата?
- Какой HTTP-статус возвращает приложение?
- Повторяется ли результат с другой сети?
Если после изменения результат стал другим, повторите исходный запрос с теми же параметрами. Так вы проверите эффект действия, а не случайную разницу условий.
Подробнее: руководство curl и resolvectl.