ERR_CONNECTION_TIMED_OUT: почему это происходит и как исправить
ERR_CONNECTION_TIMED_OUT означает, что браузер вообще не получил ответа на свою попытку соединения в пределах окна таймаута, в отличие от отказанного соединения, которое получает быстрый, явный отказ. Что-то между клиентом и сервером молча отбрасывает запрос.
Что означает ERR_CONNECTION_TIMED_OUT
Когда браузер открывает соединение, он отправляет пакет SYN и ждет в ответ SYN-ACK. Таймаут означает, что вообще не пришло никакого ответа - ни согласия, ни отказа, - прежде чем клиент сдался. Именно это молчание - ключевое отличие от отказанного соединения: отказ - это быстрое, четкое "нет" от целевой машины, тогда как таймаут означает, что пакет, возможно, вообще ни до чего не дошел, что могло бы на него ответить. Chrome обычно ждет около 30 секунд, прежде чем сдаться и показать ошибку.
Операционная система обычно повторяет SYN несколько раз, прежде чем сдаться, распределяя попытки по всему окну ожидания, а не отправляя один запрос и молча ожидая. Это поведение с повторами - одна из причин, почему таймаут проявляется заметно дольше, чем отказ: клиент продолжает пробовать на случай, если первая попытка была потеряна из-за обычной потери пакетов, и сообщает об ошибке только после того, как все повторы тоже остались без ответа.
Как проявляется ошибка
Chrome показывает "This site can't be reached ... ERR_CONNECTION_TIMED_OUT" только после полного ожидания, что является самым явным визуальным признаком, отличающим ее от быстрого сбоя. Из командной строки:
curl -v --max-time 10 https://example.com/
* Trying 203.0.113.10:443...
* Connection timed out after 10001 milliseconds
curl: (28) Connection timed out after 10001 milliseconds
Без флага --max-time curl использует системное значение по умолчанию, которое может тянуться заметно дольше минуты; явная установка флага делает диагностику быстрее.
Что вызывает ERR_CONNECTION_TIMED_OUT
- Хост недоступен. Сервер, который выключен, завис или недостижим на сетевом уровне, не может ответить ни на один пакет, включая сброс.
- Файрвол молча отбрасывает пакет. Правило DROP отбрасывает SYN, ничего не отправляя обратно, что является распространенной защитной практикой для портов, которые не должны быть достижимы из интернета.
- DNS разрешается в неверный или устаревший IP-адрес. Браузер подключается к реальному, достижимому адресу, просто на нем никто на самом деле не слушает.
- Где-то на пути существует проблема маршрутизации. Неправильно настроенный маршрут, сломанное пиринговое соединение или сбой на уровне провайдера могут застопорить пакеты еще до того, как они вообще достигнут сети назначения.
- Сервер перегружен и не может принимать новые соединения. Заполненная очередь соединений или исчерпанный пул воркеров оставляет входящие пакеты SYN без ответа, даже если сама машина работает.
Отказ, сброс или таймаут
| Ошибка | Что происходит | Типичная причина |
|---|---|---|
| ERR_CONNECTION_REFUSED | Быстрый, явный отказ (RST) | На порту никто не слушает, либо правило файрвола REJECT |
| ERR_CONNECTION_RESET | Соединение работало, затем было оборвано | Файрвол, сбой или вмешательство прокси посреди соединения |
| ERR_CONNECTION_TIMED_OUT | Вообще никакого ответа, полное ожидание перед отказом от попытки | Хост недоступен, правило файрвола DROP, маршрутизация или неверный IP |
Как понять, кто виноват
Попробуйте тот же адрес из другой сети, например с мобильного интернета. Если там соединение проходит, проблема локальна: ваш маршрутизатор, провайдер или файрвол в вашей собственной сети. Если таймаут случается повсюду, причина в сервере или в сетевом сегменте рядом с ним. Запуск проверки порта из нескольких мест одновременно подтверждает это за один шаг и показывает, стабилен ли таймаут по всем регионам либо ограничен одним путем.
Как исправить ERR_CONNECTION_TIMED_OUT
Если вы посетитель
- Попробуйте другую сеть, например мобильный интернет, чтобы исключить проблему с локальным маршрутизатором или маршрутом провайдера.
- Перезапустите маршрутизатор, чтобы очистить зависшую запись маршрутизации или кэша DNS.
- Сбросьте локальный кэш DNS на случай, если он хранит устаревший, недостижимый IP-адрес для домена.
- Временно отключите VPN, если он активен; сам выходной узел VPN может быть тем, что недостижимо.
Если вы администрируете сайт
- Убедитесь, что хост действительно работает и достижим извне своей сети, а не только из локальной оболочки на той же машине.
- Проверьте облачные security group и правила файрвола на предмет правила DROP для рассматриваемого порта; правило, молча отбрасывающее трафик, легко упустить, поскольку по умолчанию оно не оставляет записи в логе.
- Проследите путь, чтобы понять, где останавливаются пакеты:
Трассировка, четко останавливающаяся на вашем собственном граничном маршрутизаторе, указывает на файрвол у вас или у облачного провайдера, а не на широкий интернет.traceroute example.com mtr example.com - Убедитесь, что сервис слушает на
0.0.0.0, а не только на127.0.0.1. Сервис, привязанный только к адресу обратной петли, невидим для всего, что находится вне машины, а снаружи это выглядит точно так же, как отбрасывание файрволом. - Проверьте исчерпание очереди соединений под нагрузкой; заполненная очередь ожидания может оставлять новые пакеты SYN без ответа, даже когда существующие соединения работают нормально.
Как предотвратить ERR_CONNECTION_TIMED_OUT
Молчаливое отбрасывание не оставляет никакого лога ошибок на сервере, поскольку запрос вообще никогда никем не был получен для логирования, из-за чего этот тип сбоя легко пропустить без активных проверок. Регулярный мониторинг портов и HTTP извне сети ловит недостижимый хост или молча отброшенный порт в момент, когда это начинает происходить, и оповещает по email, SMS, голосовым звонком, через Slack, Telegram и другие каналы прежде, чем об этом сообщат сами посетители.
Похожие ошибки
- ERR_CONNECTION_REFUSED - это быстрый, явный отказ, а не молчание.
- ERR_ADDRESS_UNREACHABLE означает, что до адреса вообще нет маршрута, а не то, что попытка на валидном маршруте осталась без ответа.
- This site can't be reached охватывает весь набор ошибок соединения, которые Chrome группирует под одним заголовком.
Часто задаваемые вопросы
Сколько ждет Chrome, прежде чем показать ERR_CONNECTION_TIMED_OUT?
Около 30 секунд, хотя точное значение может отличаться в зависимости от платформы и сетевых условий. Стабильно быстрый сбой заметно раньше этого времени скорее говорит об отказе в соединении, чем о таймауте.
Почему сайт загружается на моем телефоне, но выдает таймаут на ноутбуке?
Обычно это указывает на что-то специфичное именно для сетевого пути ноутбука: корпоративный файрвол, VPN-клиент либо локально закэшированную запись DNS, указывающую на недостижимый адрес.
Может ли проблема с DNS вызвать ERR_CONNECTION_TIMED_OUT вместо ошибки DNS?
Да, если DNS успешно разрешается, но возвращает IP-адрес, на котором ничего не достижимо, - например старый сервер, впоследствии выведенный из обращения. Поиск проходит успешно, но попытка соединения с этим адресом затем упирается в таймаут.
Одинакова ли ERR_CONNECTION_TIMED_OUT в каждом браузере?
Лежащая в основе причина одна и та же, но формулировка отличается: Firefox показывает "The connection has timed out", а Safari после похожего ожидания показывает "This webpage is unable to load".
Означает ли таймаут всегда, что сервер лежит?
Нет. Он означает, что на попытку соединения никто не ответил, а это может также означать, что файрвол молча ее отбросил, где-то посередине сломан маршрут, либо DNS указывает не на тот адрес, пока настоящий сервер в полном порядке.
Почему один и тот же сайт выдает таймаут у меня, но загружается у коллеги в той же офисной сети?
Проверьте наличие VPN-клиента на конкретном устройстве, локально закэшированную запись DNS либо настройку прокси на уровне браузера, которая настроена только на вашей машине; проблема, общая для всей сети, обычно затрагивает всех в ней одинаково, так что различие между двумя устройствами в одной сети указывает на что-то специфичное именно для одного из них.