ERR_QUIC_PROTOCOL_ERROR — ошибка Chrome при попытке соединиться по протоколу QUIC (транспорт HTTP/3 поверх UDP). Браузер не смог завершить QUIC-рукопожатие и не откатился на TCP. Чаще всего виноваты блокировка UDP-проверку портов 443 в сети, сбойный промежуточный прокси или файрвол, реже — некорректная реализация HTTP/3 на сервере.
В этом руководстве разберём, что такое QUIC и HTTP/3, почему возникает ERR_QUIC_PROTOCOL_ERROR, как временно отключить QUIC через chrome://flags/#enable-quic, как проверить поддержку UDP/443 и заголовок Alt-Svc, и как отличить клиентскую проблему от бага сервера.
Что такое QUIC и HTTP/3
QUIC — транспортный протокол, разработанный Google и стандартизированный IETF в RFC 9000. В отличие от классического стека TCP+TLS, QUIC работает поверх UDP и объединяет установку соединения и TLS 1.3-рукопожатие в один шаг, сокращая задержку. HTTP/3 (RFC 9114) — это версия HTTP, работающая исключительно поверх QUIC.
Главные преимущества QUIC: отсутствие head-of-line blocking на уровне транспорта (потоки независимы), быстрое возобновление соединения (0-RTT), встроенное шифрование и миграция соединений между сетями без разрыва. Именно поэтому Chrome, Firefox и современные CDN активно переключаются на HTTP/3.
Как браузер узнаёт о поддержке HTTP/3
Первое соединение всегда идёт по HTTP/2 или HTTP/1.1 поверх TCP. Сервер сообщает о поддержке HTTP/3 заголовком Alt-Svc. Chrome запоминает это и при следующих запросах пробует QUIC поверх UDP. Если UDP-путь недоступен, а механизм отката сломан — появляется ERR_QUIC_PROTOCOL_ERROR.
Alt-Svc: h3=":443"; ma=86400Здесь h3 — идентификатор HTTP/3, порт :443, а ma=86400 — время кэширования анонса в секундах (сутки).
Причины ERR_QUIC_PROTOCOL_ERROR
Ошибка объединяет несколько разных сбоев QUIC-рукопожатия. Разделим их на клиентские (ваш браузер, сеть, устройство) и серверные (реализация HTTP/3 на стороне сайта или CDN).
| Источник | Причина | Как проверить |
|---|---|---|
| Клиент/сеть | Файрвол или роутер блокирует исходящий UDP-порт 443 | Тест UDP-соединения (см. ниже), пробный доступ с мобильной сети |
| Клиент/сеть | Корпоративный прокси или VPN не пропускает QUIC | Отключить VPN/прокси и повторить запрос |
| Клиент | Устаревшая версия Chrome с багом реализации QUIC | Обновить браузер до последней версии |
| Клиент | Повреждённый сетевой кэш или профиль браузера | Очистить кэш DNS/хостов, тест в режиме инкогнито |
| Сервер/CDN | Некорректная реализация HTTP/3 или устаревшая версия QUIC | curl --http3 -v, проверка версии на другом клиенте |
| Сервер | Anti-DDoS или балансировщик отбрасывает UDP-датаграммы | Сравнить поведение HTTP/2 и HTTP/3 |
Ключевой признак серверной проблемы: ошибка воспроизводится у всех пользователей и на разных сетях. Если же сайт открывается с телефона по мобильному интернету, но падает в офисной Wi-Fi — почти наверняка виновата сеть или прокси.
Что происходит: QUIC против TCP-fallback
| Сценарий | Что делает браузер | Результат |
|---|---|---|
| QUIC доступен | UDP-рукопожатие успешно, идёт HTTP/3 | Страница загружается по HTTP/3 |
| UDP заблокирован, откат работает | Таймаут QUIC, браузер молча переходит на TCP+HTTP/2 | Страница загружается по HTTP/2, ошибки нет |
| UDP заблокирован, откат сломан | QUIC падает, TCP-fallback не срабатывает | ERR_QUIC_PROTOCOL_ERROR |
| Сервер шлёт битый QUIC-ответ | Рукопожатие завершается ошибкой протокола | ERR_QUIC_PROTOCOL_ERROR у всех |
Как отключить QUIC в Chrome
Самый быстрый обход на стороне клиента — принудительно выключить QUIC. Тогда Chrome будет использовать только TCP-транспорт (HTTP/2 или HTTP/1.1), полностью минуя проблемный UDP-путь.
- Откройте в адресной строке:
chrome://flags/#enable-quic - Переключите параметр Experimental QUIC protocol в состояние Disabled.
- Нажмите кнопку Relaunch, чтобы перезапустить браузер.
chrome://flags/#enable-quic → Experimental QUIC protocol: Disabled → RelaunchЕсли после перезапуска сайт открывается — проблема была именно в QUIC-пути. Это диагностическое действие, а не постоянное решение: HTTP/3 даёт реальный прирост скорости, поэтому корневую причину (сеть, прокси или сервер) всё равно стоит устранить, а флаг потом вернуть в Default.
Точечный сброс без глобального отключения
Иногда достаточно очистить закэшированный анонс Alt-Svc и сетевое состояние, не трогая флаг QUIC:
# Очистить сокеты и host-cache Chrome
chrome://net-internals/#sockets → Flush socket pools
chrome://net-internals/#dns → Clear host cacheПроблемы UDP и порта 443
QUIC требует свободного исходящего UDP-порта 443. Многие корпоративные файрволы, гостевые Wi-Fi и старые роутеры разрешают только TCP/443 (SSL/TLS проверку) и режут UDP. Проверить доступность UDP-пути можно так:
# Linux/macOS: отправить UDP-датаграмму на 443 и посмотреть, доходит ли ответ
nc -u -v -w3 example.com 443
# Проверка правил локального файрвола (Linux)
sudo iptables -L OUTPUT -n | grep 443
# Быстрый тест: открывается ли сайт с QUIC-only настройками
curl --http3-only -v https://example.comЕсли curl --http3-only зависает или возвращает ошибку, а обычный curl -v https://example.com работает — UDP-путь блокируется где-то между вами и сервером. В этом случае отключение QUIC в браузере устраняет симптом, но исправить сеть должен администратор файрвола.
Когда виноват сервер
Если ERR_QUIC_PROTOCOL_ERROR видят все посетители и на разных сетях, а отключение QUIC в браузере «чинит» доступ — проблема на стороне сервера или CDN. Владельцу сайта стоит проверить корректность анонса HTTP/3 и реального ответа по QUIC.
# Посмотреть, анонсирует ли сервер HTTP/3
curl -sI https://example.com | grep -i alt-svc
# Принудительно запросить HTTP/3 и посмотреть детали рукопожатия
curl --http3 -v https://example.com 2>&1 | grep -Ei 'quic|h3|alt-svc'Признаки серверного бага: заголовок Alt-Svc обещает h3, но реальное QUIC-рукопожатие обрывается; разные версии QUIC у балансировщика и origin; anti-DDoS отбрасывает UDP. Часто безопаснее временно снять анонс Alt-Svc (отключить HTTP/3 на сервере), пока реализация не будет исправлена — тогда браузеры перестанут пробовать QUIC и вернутся к стабильному HTTP/2.
Пошаговая диагностика
Чтобы не гадать, пройдите проверку по порядку — от самых частых причин к редким. Каждый шаг либо устраняет ошибку, либо сужает круг подозреваемых, отделяя клиентскую проблему от серверной.
- Откройте тот же адрес с другой сети (например, с мобильного интернета вместо офисного Wi-Fi). Если там всё работает — проблема в вашей локальной сети, файрволе или прокси, а не в сервере.
- Временно отключите VPN и корпоративный прокси, затем повторите запрос. Многие туннели не пропускают UDP-датаграммы QUIC.
- Проверьте версию Chrome и обновите браузер: старые сборки содержали баги реализации QUIC, исправленные в новых релизах.
- Отключите QUIC через
chrome://flags/#enable-quicи перезапустите браузер. Если сайт открылся — виноват именно UDP-путь, и дальше нужно искать, кто его блокирует. - Сбросьте сетевое состояние: очистите host-cache и пулы сокетов через
chrome://net-internals, чтобы удалить устаревший анонсAlt-Svc. - Если ошибку видят все пользователи независимо от сети — переходите к серверной диагностике с
curl --http3 -v.
Такой порядок экономит время: в 8 случаях из 10 ERR_QUIC_PROTOCOL_ERROR закрывается уже на шаге про сеть или прокси, и до серверной части дело не доходит.
Как проверить свой сайт
Быстрее всего увидеть, что реально отдаёт ваш сервер, — прогнать его через анализатор заголовков. Инструмент проверки HTTP-заголовков enterno.io показывает наличие Alt-Svc, версию протокола и заголовки безопасности, а сканер безопасности подсвечивает связанные проблемы конфигурации TLS и заголовков. Так вы за пару секунд поймёте, анонсирует ли сервер HTTP/3 и согласуется ли это с его фактическим поведением.
Частые вопросы
Опасно ли отключать QUIC в Chrome?
Нет, это безопасно. При отключённом QUIC браузер просто использует TCP-транспорт с HTTP/2 или HTTP/1.1, которые надёжны и широко поддерживаются. Вы потеряете часть выигрыша в скорости от HTTP/3, но безопасность соединения (TLS-шифрование) остаётся полной. Это разумный временный обход, пока причина ошибки не найдена.
Почему сайт открывается с телефона, но не с рабочего компьютера?
Скорее всего, ваша рабочая сеть или корпоративный файрвол блокируют исходящий UDP-порт 443, необходимый для QUIC. Мобильный интернет обычно пропускает UDP свободно, поэтому HTTP/3 там работает. Проверьте правила файрвола и прокси, либо временно отключите QUIC в браузере, чтобы подтвердить гипотезу.
Как понять, что виноват сервер, а не мой браузер?
Главный признак — ошибка воспроизводится у нескольких пользователей на разных устройствах и сетях. Если отключение QUIC у всех «чинит» доступ, а curl --http3 -v показывает обрыв рукопожатия при живом Alt-Svc, проблема на стороне сервера или CDN. Тогда стоит временно снять анонс HTTP/3.
Что означает заголовок Alt-Svc?
Заголовок Alt-Svc (Alternative Services) сообщает браузеру, что тот же ресурс доступен по другому протоколу или порту. Значение h3=":443" означает поддержку HTTP/3 на порту 443. Браузер кэширует этот анонс на время ma и при следующих визитах пробует QUIC вместо TCP.
Поможет ли очистка кэша браузера?
Иногда да. Если проблема в устаревшем закэшированном анонсе Alt-Svc или повреждённом сетевом состоянии, помогает сброс через chrome://net-internals/#sockets и очистка host-cache. Но если UDP блокируется сетью или сломана реализация на сервере, очистка кэша не поможет — нужно устранять корневую причину.
QUIC и HTTP/3 — это одно и то же?
Не совсем. QUIC (RFC 9000) — это транспортный протокол поверх UDP, аналог связки TCP+TLS. HTTP/3 (RFC 9114) — это версия протокола HTTP, которая работает поверх QUIC. То есть QUIC отвечает за транспорт и шифрование, а HTTP/3 — за семантику запросов и ответов над этим транспортом.
Источники и стандарты
- RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport
- RFC 9114 — HTTP/3
- MDN — заголовок Alt-Svc
- Chromium — документация по QUIC