ПРАКТИЧЕСКИЕ ЗАМЕТКИ / СЕТИ

Найти, где прерывается соединение

Адрес, маршрут, DNS, соединение и TLS — разные этапы. Если проверять их последовательно, становится понятнее, где искать причину.

Разделите проверку на этапы

Сообщение «сайт недоступен» может означать множество разных вещей. Имя не разрешилось, маршрут отсутствует, приложение не слушает порт, соединение фильтруется или сертификат не подходит к домену.

Проверяйте путь от простого к составному: локальный адрес → маршрут → 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.org

resolvectl доступен на системах с 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.