Troubleshooting Err connection timed out Диагностика сети

ERR_CONNECTION_​TIMED_​OUT: как исправить

Как найти причину ERR_CONNECTION_TIMED_OUT: проверить область сбоя, DNS, TCP 443, маршрут, firewall, VPN, proxy, listener, origin и upstream.

Наталья Соколова
Наталья Соколова

Self-hosted проекты, безопасность и почта

Она объясняет почтовый хостинг, базовую безопасность, VPS для личных проектов и разумные границы самостоятельности.

9 мин чтения

ERR_CONNECTION_TIMED_OUT возникает, когда браузер не успевает установить соединение с узлом и не получает HTTP-ответ. Проверьте масштаб сбоя, затем по отдельности DNS, TCP-порт, маршрут, proxy или VPN. Владельцу сайта после этого нужно проверить edge, firewall, listener и связь с origin и upstream.

Эта ошибка не сообщает, какой участок задержал соединение. Имя могло разрешиться в неверный адрес, TCP-пакеты могли потеряться по пути, firewall — молча отбросить их, а reverse proxy — не дождаться origin. Одинаковая страница браузера скрывает разные причины, поэтому исправление начинается не с очистки всего подряд, а с определения границы отказа.

Сначала отделите ошибку браузера от HTTP-тайм-аута

ERR_CONNECTION_TIMED_OUT — сетевая ошибка Chromium для попытки соединения, которая завершилась по тайм-ауту. В этом случае браузер не получил обычный HTTP-ответ. Код 408 или 504, напротив, уже является ответом HTTP и указывает на другую стадию.

Что видноЧто успело произойтиГде искать сначала
ERR_CONNECTION_TIMED_OUTсоединение с выбранным адресом не установлено вовремяDNS, TCP-маршрут, firewall, proxy, VPN или edge
HTTP 408 Request Timeoutсервер не получил полный запрос за отведённое времяклиентская передача, сеть и лимит приёма запроса
HTTP 504 Gateway Timeoutgateway или proxy не дождался своевременного ответа upstreamload balancer, reverse proxy, origin, приложение или зависимость
Connection refusedудалённая сторона явно отклонила TCP-подключениеlistener, неверный порт или активный reject firewall

Тайм-аут и отказ в соединении не взаимозаменяемы. TCP может долго повторять попытку, если пакеты молча теряются. Явный сброс соединения обычно возвращает отказ быстро. Не берите долгий индикатор загрузки за доказательство того, что приложение медленное: запрос мог ещё не попасть ни в веб-сервер, ни в приложение.

Граница между тайм-аутом соединения и HTTP-ответами 408 и 504
Сначала установите, появился ли HTTP-ответ: до этой границы проверяют DNS и TCP, после неё — серверную цепочку.

Определите масштаб без сброса настроек

Проверьте тот же полный адрес в другом браузере на том же устройстве, затем на другом устройстве в той же сети и через независимую сеть. Не меняйте одновременно браузер, устройство, сеть и домен: такой опыт даёт новый результат, но не объясняет старый.

Зафиксируйте перед проверками:

  • точный URL, время и текст ошибки;
  • устройство, сеть, активный VPN и системный proxy;
  • работает ли другой сайт на том же устройстве;
  • работает ли этот адрес через другую сеть.
МасштабВероятная областьСледующая проверка
Один браузеррасширение, proxy, защищённый DNS или профильприватное окно и другой браузер с теми же сетевыми условиями
Одно устройстволокальный firewall, VPN, DNS или маршрутсистемный запрос DNS и TCP-тест
Вся локальная сетьроутер, DNS от DHCP, провайдер или общий маршрутмобильная сеть и внешний тест порта
Один сайт из разных сетейадрес домена, edge, firewall или originсравнение IP, TCP 443 и серверных журналов
Только один регионмаршрутизация, геофильтр, конкретный edge или peeringтест из разрешённых внешних точек и логи edge

Перезагрузка роутера полезна, если проблема ограничена его сетью и есть признаки сбоя самого устройства. Она не исправляет firewall на сервере, неправильный адрес домена или неработающий origin. Кнопка «сбросить всё» выглядит занятой работой, но стирает конфигурацию быстрее, чем устанавливает причину.

Проверьте DNS отдельно от TCP

Сначала убедитесь, что имя возвращает ожидаемые IPv4- и IPv6-адреса. Ошибка разрешения имени обычно имеет собственное сообщение, но неверная или старая запись вполне способна привести браузер к адресу, где TCP-подключение будет ждать до тайм-аута.

СистемаПроверка системного разрешения имени
WindowsResolve-DnsName example.com
Linuxgetent ahosts example.com
macOSdscacheutil -q host -a name example.com

Сравните результат с адресами, которые должен публиковать владелец домена. Если несколько адресов обслуживают сайт, проверьте каждый: один неисправный узел способен давать плавающую ошибку. Для dual-stack отдельно сравните IPv4 и IPv6, потому что рабочий A-адрес не компенсирует недоступный AAAA-путь на каждом клиенте.

Не очищайте DNS-кэш только потому, что в ошибке есть доменное имя. Очистка помогает при подтверждённо устаревшем локальном ответе, но не меняет запись домена, кэш рекурсивного резолвера и доступность опубликованного IP.

Проверьте TCP 443 и этап соединения

После подтверждения адреса проверьте именно порт сервиса. Успешный ping не доказывает доступность HTTPS: ICMP и TCP 443 могут проходить по разным правилам. Неуспешный ping тоже не доказывает поломку, поскольку ответы ICMP часто ограничивают.

На Windows используйте Test-NetConnection example.com -Port 443 -InformationLevel Detailed. Команда проверяет TCP-подключение к выбранному порту и показывает разрешённый адрес. Это не HTTP-запрос и не проверка содержимого сайта.

На всех трёх системах доступен curl. В Windows указывайте исполняемый файл явно, чтобы не попасть на старый PowerShell alias.

СистемаЗапрос с ограничением этапа соединения
Windowscurl.exe –connect-timeout 10 -I -v HTTPS_URL
Linuxcurl –connect-timeout 10 -I -v HTTPS_URL
macOScurl –connect-timeout 10 -I -v HTTPS_URL

Замените HTTPS_URL полным адресом с протоколом HTTPS. Параметр connect-timeout ограничивает фазу подключения, куда входят разрешение имени и протокольные рукопожатия. Он не задаёт допустимое время всей загрузки. Подробный режим показывает, на каком адресе и этапе остановился запрос, но может вывести служебные заголовки: не публикуйте результат без удаления токенов, cookie и внутренних имён.

Повторите безопасный тест с -4 и -6, если домен имеет оба семейства адресов. Рабочий IPv4 рядом с тайм-аутом IPv6 сужает проблему до AAAA-записи, IPv6-маршрута или правил на этом пути. Не удаляйте IPv6 вслепую со всех устройств; исправьте опубликованный адрес или доступность сервиса.

Как проверить маршрут без ложного диагноза

На Windows команда tracert -d example.com показывает последовательность IP-переходов без обратного разрешения имён. На Linux и macOS используйте traceroute -n example.com. Сохраните результат рядом с временем тайм-аута и адресом, который проверяли.

Звёздочки на промежуточном узле не доказывают, что он теряет пользовательский трафик. Маршрутизатор может пересылать TCP и не отвечать на диагностические пакеты. Значимее повторяемая граница, после которой не отвечает конечный сервис, особенно если независимый TCP-тест из другой сети показывает то же самое.

Маршрут до CDN или anycast-адреса может отличаться между сетями и меняться со временем. Сравнение двух трасс — это указатель для провайдера или сетевого администратора, а не список виновных автономных систем.

Проверьте proxy, VPN и локальный firewall

Если ошибка есть только в одном браузере, проверьте его proxy и расширения. Если она повторяется во всех приложениях одного устройства, изучите системный proxy, VPN и защитное ПО. Корпоративный агент способен направлять HTTPS через инспекцию трафика даже тогда, когда пользователь не настраивал proxy вручную.

Временно отключать VPN или proxy можно только там, где это разрешено политикой и не открывает устройство в недоверенной сети. Сначала сохраните исходную конфигурацию. Если без туннеля соединение устанавливается, это локализует отказ в маршруте или политике туннеля, но не делает постоянный обход правильным решением.

Не отключайте firewall целиком. Сравните журнал блокировок с точным временем и адресом, затем проверьте узкое правило для исходящего TCP 443 или нужного приложения. Полное отключение меняет слишком много условий и создаёт риск, особенно на публичной сети.

Что проверять владельцу сайта

Начните с журналов внешнего edge или load balancer. Если попытка клиента там не появилась, проверяйте DNS, маршрут и firewall перед edge. Если edge принял запрос, но origin его не увидел, проблема находится между балансировщиком и origin. Запись в access log приложения переводит диагностику к обработчику и его зависимостям.

Затем подтвердите listener на ожидаемом адресе и порту.

Серверная системаПроверка listener
WindowsGet-NetTCPConnection -LocalPort 443 -State Listen
Linuxss -ltnp
macOSlsof -nP -iTCP:443 -sTCP:LISTEN

Слушающий сокет на 127.0.0.1 может быть правильным за локальным reverse proxy и неправильным для прямого внешнего подключения. Сокет на 0.0.0.0 или :: тоже не гарантирует доступность: до него остаются host firewall, security group, ACL, NAT и правила load balancer.

Проверьте origin локально, сохранив доменное имя для Host и TLS SNI: curl –resolve HOSTNAME:443:127.0.0.1 –connect-timeout 5 -I HTTPS_URL. Замените оба заполнителя одним доменным именем, а адрес — фактическим адресом listener. Запускайте такой тест только для своего сервиса. Успех подтверждает локальную цепочку, но не внешний маршрут.

Далее сравните health check балансировщика с реальным listener: порт, протокол, путь, Host, SNI и ожидаемый статус. Неверный health check способен исключить рабочий origin из пула, а разрешающее правило для старого диапазона адресов — заблокировать новый edge.

Firewall и правила доступа на сервере

Не начинайте с очистки ruleset. Проверьте журналы и счётчики правила на точном интерфейсе, адресе назначения и TCP-порту 443. Облачный security group, сетевой ACL и firewall операционной системы — разные границы; разрешение на одной из них ничего не говорит о двух других.

Если порт доступен из локальной сети сервера, но недоступен извне, двигайтесь наружу: host firewall, маршрут, NAT, security group, ACL, load balancer. Если внешний edge соединяется, а произвольный интернет-клиент нет, это может быть намеренной архитектурой. Origin за CDN часто и должен принимать трафик только от edge.

Изменяйте одно узкое правило и держите путь отката. Не добавляйте постоянное разрешение для всего интернета ради проверки административного порта. Для HTTPS публичный доступ должен заканчиваться на предусмотренном edge или listener, а не на случайно найденном процессе.

Если сервер возвращает 408 или 504

HTTP 408 означает, что сервер не получил полный запрос за время, которое был готов ждать. Ищите медленную передачу клиента, обрывы на пути, слишком жёсткий лимит приёма и перегрузку принимающей стороны. Сам факт 408 не доказывает медленную бизнес-логику приложения.

HTTP 504 означает, что gateway или proxy не дождался upstream. Сопоставьте request ID и время между журналами edge, reverse proxy, приложения, базы и внешних зависимостей. Без этой цепочки увеличение тайм-аута лишь делает ожидание длиннее.

В nginx proxy_connect_timeout относится к установлению соединения с upstream, а proxy_read_timeout — к интервалам между чтениями от него, а не ко всему времени ответа. Первый тайм-аут направляет к адресу, listener, маршруту и firewall origin. Второй — к зависшему обработчику, очереди, базе или внешнему API.

Повышайте лимит только после измерения нормального времени операции и проверки загрузки. Для отчёта, который законно строится дольше обычного запроса, лучше асинхронная задача со статусом выполнения. Для зависшего запроса большой тайм-аут превращает очередь ожидания в склад.

Короткий план действий

Чек-лист

  • Определите границу: установите, видите ли вы browser connection timeout, HTTP 408 или HTTP 504.
  • Сузьте масштаб: сравните тот же URL на другом устройстве и через независимую сеть, сохранив исходные условия.
  • Проверьте путь: последовательно подтвердите DNS, TCP 443, маршрут, proxy, VPN и локальный firewall.
  • Проверьте сервер: сопоставьте edge-логи, listener, правила доступа, health check и локальный запрос к origin.
  • Исправьте причину: меняйте одно подтверждённое звено и не увеличивайте тайм-аут до измерения upstream.

Если проблема плавающая, одного успешного теста мало. Сохраните несколько наблюдений с временем, сетью, разрешённым IP и этапом curl. Так владелец сайта увидит, какой edge или адрес связан со сбоем, а провайдер сети получит маршрут и временную точку вместо просьбы «проверить интернет».

Частые вопросы

Поможет ли очистка кэша браузера при ERR_CONNECTION_TIMED_OUT?
Обычно нет: кэш содержимого не устанавливает TCP-соединение. Очистка уместна только при отдельном подтверждённом кэш-сбое; сначала сравните другой браузер, DNS и доступность TCP 443.
Почему сайт работает через мобильный интернет, но не через Wi-Fi?
Сети могут использовать разные DNS-ответы, IPv4- или IPv6-маршруты, proxy и правила фильтрации. Сравните разрешённый адрес и TCP-тест в обеих сетях, не меняя остальные условия.
Чем ERR_CONNECTION_TIMED_OUT отличается от 504?
При browser connection timeout обычный HTTP-ответ не получен. Код 504 уже вернул gateway или proxy, который не дождался upstream, поэтому проверять нужно серверную цепочку после edge.
Нужно ли увеличить timeout в nginx?
Только если измерения показывают законно долгую операцию и выбран правильный лимит. Сначала различите соединение с upstream и ожидание данных, затем проверьте приложение и зависимости.

Статью подготовили

Наталья Соколова
Наталья Соколова

Self-hosted проекты, безопасность и почта

Она объясняет почтовый хостинг, базовую безопасность, VPS для личных проектов и разумные границы самостоятельности.

Проверка фактов

HostScout editorial