Linux ETIMEDOUTСредняя

Connection timed out в Linux: причины и быстрое исправление

Ошибка Connection timed out означает, что система не дождалась ответа от удалённого хоста. В материале вы найдёте пошаговые инструкции по диагностике сети, проверке фаервола и настройке таймаутов.

Обновлено 5 апреля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04+Debian 12+RHEL/CentOS 9+Fedora 39+

Что означает ошибка Connection timed out

Ошибка Connection timed out (часто отображается как системный код ETIMEDOUT или ошибка 110) появляется, когда ваша система отправляет пакет инициализации соединения, но не получает отклика от удалённого сервера в течение установленного периода. В отличие от Connection refused, где сервер явно отклоняет запрос, здесь ответ просто не доходит до клиента. Вы можете встретить это сообщение при использовании curl, wget, ssh, в логах веб-серверов или при работе с пакетными менеджерами apt и dnf.

Пример полного текста в терминале:

curl: (28) Connection timed out after 30001 milliseconds

Причины возникновения

Проблема редко связана с повреждением системных файлов. В большинстве случаев дело в сетевой логике или конфигурации:

  • Блокировка исходящего трафика фаерволом. Встроенные ufw, firewalld или корпоративные шлюзы могут отбрасывать пакеты без отправки ICMP-ответов.
  • Некорректные настройки DNS. Система не может резолвить доменное имя, либо использует недоступный кэширующий сервер.
  • Проблемы маршрутизации на уровне провайдера. Пакеты застревают на промежуточном узле, который не пересылает их дальше или не возвращает TTL-ошибку.
  • Неверно указанный порт или IP. Сервер работает, но не на том порту, который вы запрашиваете, а NAT или фаервол молча отклоняет трафик.
  • Слишком строгие параметры ядра Linux. Значения net.ipv4.tcp_retries2 или tcp_syn_retries занижены для нестабильных или перегруженных сетей.

Способы решения

Способ 1: Проверка маршрута и доступности хоста

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

  1. Проверьте базовый отклик: ping -c 4 example.com. Если вывод показывает 100% packet loss, проблема на уровне маршрутизации или IP-адреса.
  2. Отследите путь следования пакетов. Установите утилиту mtr (или используйте traceroute):
    sudo mtr --report example.com
    
    Если обрыв происходит на хопе вашего провайдера, обратитесь в поддержку. Если пакеты доходят до целевого сервера, но не возвращаются — переходите к проверке портов и фаервола.

Способ 2: Диагностика локального фаервола

Часто системный брандмауэр молча отбрасывает исходящие соединения. Временно отключите его для теста:

  • Для Ubuntu/Debian: sudo ufw disable
  • Для RHEL/Fedora: sudo systemctl stop firewalld

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

sudo ufw allow out 443/tcp
sudo ufw reload

💡 Совет: После теста обязательно включите фаервол обратно командой sudo ufw enable или sudo systemctl start firewalld, чтобы не оставлять систему уязвимой.

Способ 3: Сброс DNS и замена резолвера

Если проблема возникает только при обращении по доменному имени, а по прямому IP работает, виноват DNS. Отредактируйте конфигурацию:

  1. Откройте файл /etc/resolv.conf в текстовом редакторе:
    sudo nano /etc/resolv.conf
    
    Замените текущие строки nameserver на публичные:
    nameserver 1.1.1.1
    nameserver 8.8.8.8
    
  2. Если в системе активен systemd-resolved, перезапустите службу для корректного применения изменений:
    sudo systemctl restart systemd-resolved
    

Проверьте работу через curl -I https://example.com.

Способ 4: Коррекция таймаутов на уровне ОС

В нестабильных сетях или при высокой нагрузке стандартное ожидание ответа SYN-пакетов может быть недостаточным. Увеличьте лимиты через sysctl:

# Просмотр текущего значения повторных попыток
sysctl net.ipv4.tcp_retries2

# Установка более длительного ожидания (по умолчанию обычно 15)
sudo sysctl -w net.ipv4.tcp_retries2=20
sudo sysctl -w net.ipv4.tcp_syn_retries=6

Для сохранения параметров после перезагрузки добавьте эти строки в файл /etc/sysctl.conf и выполните sudo sysctl -p.

Профилактика

Чтобы ошибка не возвращалась, настройте мониторинг сетевых интерфейсов с помощью netstat -tuln или ss -tuln для отслеживания состояний ESTABLISHED и TIME_WAIT. Регулярно обновляйте пакеты безопасности ядра и nftables/iptables, так как в них часто исправляют утечки дескрипторов соединений. Если вы работаете с внешними API, всегда задавайте явные таймауты в клиентских библиотеках (например, timeout=10 в Python requests), чтобы не зависеть от глобальных параметров системы и получать понятные исключения вместо зависаний.

Часто задаваемые вопросы

Почему возникает ошибка Connection timed out?
Как увеличить таймаут ожидания в curl или wget?
Может ли проблема быть на стороне интернет-провайдера?

Полезное

Проверьте доступность хоста
Проверьте настройки локального фаервола
Настройте DNS-резольвер
Увеличьте системный таймаут

Эта статья помогла вам решить проблему?