Две недели «интернета нет» при зелёных пингах

Вводные и исходные данные
У вас бывало: телефон орёт «без интернета», на ноуте Windows уныло пишет «подключение без доступа», а пинги — как на подбор, зелёные, 0% потерь? У меня это расцвело на две недели. Причём не «упал провайдер», не «роутер сдох», а что-то совсем точечное: то игры не логинятся, то AI молчит, то push'и у умных ламп залипают, зато сайт районной библиотеки бодро открывается. Живой канал, но местами как будто ножницами выстрижено.
Фон: обычный homelab-дворик. Встаю утром, варю кофе, иду VLAN’ы кормить:
- Домашний Wi‑Fi → сегмент 10.0.10.0/24, роутер 10.0.10.1.
- Гостевая сеть → своя подсеть 10.0.20.0/24, NAT на тот же WAN.
- IoT-живность → 10.0.30.0/24, без выхода в локалку, только наружу.
- Аплинк один, серый NAT, никаких белых адресов не светим.
- Роутер от производителя «которого нельзя называть», с нормальным firewall'ом.
- Для проверки связности — самописная утилита connect-check: ~500 тестов в один прогон (кептив-порталы ОС, DNS/DoT/DoH, QUIC, игры, AI-платформы, облака, банки, IoT-порты, CDN, скорость). Отчёт — один HTML-файл.

До 16 июля всё было как в рекламе провайдеров (которых мы тут не называем). А вот дальше пошла странная пила: устройства вроде в сети, но «интернета нет». Я достал свой connect-check и начал вести дневник замеров.
Как и что делал — хроника, инструменты, команды
Как появился connect-check (спойлер: не сразу)
Сначала никакой утилиты не было. Я просто реверсил трафик телефонов: смотрел, куда они вообще стучатся, когда решают «есть ли интернет». Поднял tcpdump, отфильтровал по устройству — и увидел, что к части ресурсов SYN уходит, а ответа нет вообще: ни RST, ни SYN-ACK. Просто тишина. Так впервые вылезли кептив-порталы — connectivitycheck.gstatic.com и его соседи.
Дальше — проще: раз режут эти, наверняка режут и похожие. Накидал список «канареек» (connectivitycheck.android.com, msftconnecttest.com, captive.apple.com и прочие) и стал проверять их руками, пачками. А потом из этого выросла маленькая консольная утилитка, которая гоняет адреса пачками и отдаёт один HTML-отчёт. Со временем список ресурсов и сервисов разросся до 500+ проверок — туда попали игры, AI-платформы, облака, IoT-порты, банки, DNS/DoT/DoH, QUIC.
16.07. Старт. Симптом: телефоны «без интернета», браузер кое-как живёт, игры не логинятся
- Прогон connect-check с Android в домашнем Wi‑Fi:
- 40 OK, 7 предупреждений, 8 провалов.
- Первое, что проверяю при «интернета нет»:
- Кептив-порталы ОС. На Android это connectivitycheck.gstatic.com/generate204 и connectivitycheck.android.com/generate204.
- curl -I http://connectivitycheck.gstatic.com/generate_204
- curl -I http://connectivitycheck.android.com/generate_204
- Ожидается HTTP/204 No Content. Фактически: таймауты (WinINet на Windows выдаёт 12002), а ping connectivitycheck.gstatic.com — 0% потерь, DNS резолвит. Значит, кто-то душит именно эти URL.
- DNS и пинги:
- ping 1.1.1.1 → ок.
- ping 8.8.8.8 → ок.
- dig connectivitycheck.gstatic.com A @1.1.1.1 → A-запись есть.
- А вот HTTP к generate_204 — молчит. Сразу ловушка: Android и Windows считают, что интернет отсутствует, потому что их «проверки доступа» не отвечают.
Вечер 16.07. «Может, это Wi‑Fi шалит?» Перепрыгнул на второй SSID (5 ГГц, DFS, канал 52)
- Прогон connect-check:
- 14 OK, 6 warn, 37 fail — стало хуже.
- Возвращаюсь на основной SSID — снова «нормально плохое»:
- 41 OK, 6 warn, 8 fail.
- Вывод: не в радио. DFS может добавлять спецэффектов, но главная беда где-то за радиоинтерфейсом.
18.07 утро. Первая волна нарастает
- Прогон:
- 120 OK, 18 warn, 19 fail.
- Бьём DoT (DNS-over-TLS) — подозрение на фильтрацию порта 853:
- echo | openssl s_client -connect dns.google:853 -servername dns.google -brief → зависает/таймаут.
- echo | openssl s_client -connect 8.8.8.8:853 -servername dns.google → таймаут.
- echo | openssl s_client -connect 9.9.9.9:853 -servername dns.quad9.net → таймаут.
- echo | openssl s_client -connect 1.1.1.1:853 -servername cloudflare-dns.com → соединяется.
- На Android в настройках частного DNS «Автоматически» → телефон объявляет сеть «без интернета». Ставлю «Выключено» — статус возвращается, браузер оживает. Диагноз: порт 853 фильтруется точечно (Cloudflare пропускают), Android при этом падает в обморок.
20–21.07. Пик. Резко ложится почти всё иностранное, задевает и часть наших
- 20.07 утро:
- 228 OK, 12 warn, 5 fail — пока терпимо.
- 20.07 (гостевая сеть 10.0.20.0/24):
- 154 OK, 25 warn, 61 fail — гостям сегодня лучше книжку.
- 20.07 полдень:
- 220 OK, 17 warn, 2 fail — как будто «кто-то» отпустил.
- 20.07 вечер:
- 116 OK, 31 warn, 93 fail — опять душит.
- 21.07 утро:
- 114 OK, 27 warn, 99 fail — держат под водой.
- 21.07 день:
- 105 OK, 61 warn, 80 fail — в строю лишь самое житейское.
Что именно резалось в пик (проверял точечными коннектами):
1) Кептив-порталы ОС — системно. Это и делает «нет интернета» при живом канале. – curl -I http://connectivitycheck.gstatic.com/generate_204 → таймаут. – curl -I http://www.msftconnecttest.com/connecttest.txt → таймаут. – curl -I http://captive.apple.com/hotspot-detect.html → таймаут. – Статистика по gstatic: 0/8 успешных подряд — стабильный ноль.

2) DoT :853 — чёткая политика: – dns.google, 8.8.8.8, 9.9.9.9 → не коннектится. – 1.1.1.1 → коннектится. – tcpdump -i wan -n host 8.8.8.8 and port 853 → SYN уходит, ответа нет. Строгое «нет» на SYN/ACK.

3) Игры — входы и CDN/CM: – Battle.net, включая login :1119 на *.actual.battle.net → нет рукопожатия. – nc -vz eu.actual.battle.net 1119 → Operation timed out. – Steam CDN/CM, Epic, Riot, Ubisoft, GOG, Xbox Live, PlayStation Network, Nintendo, EA, Roblox, Minecraft: – Формально это TCP/443, но TLS-рукопожатие залипает на ClientHello. – curl -sI https://store.steampowered.com → может открыться, а лаунчер — не логинится: SNI/DPI по доменам и шаблонам. – Трассы выглядят как обычно до границы, дальше молчание: – mtr -T -P 443 battle.net → маршруты до 198.51.100.x, затем тишина.
4) AI-платформы — отрезаны подчистую: – OpenAI (включая ChatGPT и API), Claude/Anthropic, Gemini, AI Studio, Grok/xAI, DeepSeek, Mistral, Hugging Face, Groq, Together, Poe, Notion AI, Cursor. – Браузер: WinINet 12002 (таймаут) или 12057 (TLS/DNS). – curl -sS https://api.openai.com/v1/models → дожидается полминуты и роняет коннект.
5) Облака: – AWS S3 CDN (в частности, репы amazonlinux) — регулярно в fail. – curl -I https://some-bucket.s3.amazonaws.com/… → периодические таймауты.
6) IoT-порты — push/шины: – MQTT :8883 (Tuya, Aqara) → conn. timeout. – Google mtalk :5228/:5229 → timeout. – Apple push :5223 → timeout. – XMPP :5222 → timeout. – В логах умного дома: «облако недоступно», девайсы падают в оффлайн. Локальные сценарии работают, удалённые уведомления — нет.
7) QUIC (UDP/443): – curl —http3 -I https://www.google.com → долго, потом откат на HTTP/2. – curl —http3 -I https://www.cloudflare.com → аналогично. – tcpdump -i wan udp port 443 and host 203.0.113.10 → Handshake не складывается, пакеты отваливаются. DPI глушит HTTP/3.
8) DNS-имена точечно: – dig +time=2 +retry=1 iot.yandex.ru @1.1.1.1 → ок. – dig iot.yandex.ru @10.0.10.1 (локальный резолвер, форвард к аплинку) → SERVFAIL/timeout. Значит не весь DNS умер, а выборочно по именам у аплинка. – Аналогично: api.alice.yandex.net, ok.ru, copilot.microsoft.com, clouddrive.nabucasa.com — то не резолвит, то резолвит, но дальше 443 молчит.
9) NTP: – time.google.com, ntp.yandex.ru — временами не отвечают по UDP/123. На графике — ступеньки дрейфа часов. В другие минуты — живут.
22.07 10:57 — будто тумблер щёлкнули
- Прогон:
- 286 OK, 17 warn, 2 fail (AWS S3 + Росбанк). Всё остальное — отпустило.
- Проверяю DoT:
- dns.google:853 — снова нет.
- 1.1.1.1:853 — по-прежнему да.
- Кептив-порталы:
- gstatic generate_204 → начал стабильно давать 204. Android и Windows радостно вернули «интернет есть».
28.07 ночь — вторая волна, на этот раз российские сервисы в прицеле
- Прогон:
- 257 OK, 15 warn, 30 fail.
- В fail — банки и маркетплейсы:
- Сбер, Т‑Банк, ВТБ, Альфа, РСХБ, ПСБ, Росбанк.
- Ozon, РЖД, Дзен, OK.ru, Okko, Почта России.
- Параллельно опять хромает игры и немного CDN для магазинов. Картина будто «настроить другое правило».
29.07 00:09 — полное восстановление
- Прогон:
- 264 OK, 40 warn, 0 fail. Впервые за эти две недели — идеально по фейлам.
- QUIC по-прежнему местами не любит Google/Cloudflare, но уже в warn — с откатом на TCP/443 всё открывается.
05.08 постскриптум — остаточные артефакты
- Прогон:
- 423 OK, 79 warn, 3 fail.
- Fail:
- Ведомости — HTTP 502 (их косяк, похоже).
- Rambler Почта, Proton Mail — TCP :443/:80 закрыт/фильтруется.
- Warn: 23 сайта с недогруженными ассетами с CDN:
- fonts.gstatic.com, counter.yadro.ru, static.criteo.net, www.gstatic.com — часть запросов не уходит/не доходит, но основные страницы открываются.
И ещё детали, которые я докручивал в процессе
- Трассировки:
- mtr -T -P 443 api.openai.com → доходит до 198.51.100.x, дальше тишина. С ICMP — зелёный.
- Сравнение сетей:
- Домашний Wi‑Fi и гостевая сеть (разные VLAN’ы, один WAN) ловят одинаковую пилу. Значит, не межсетевик и не NAT в моём роутере.
- Локальный DNS:
- unbound на 10.0.10.2, форвардил на аплинк → та же точечная резка по именам.
- Прямой dig @1.1.1.1 — чаще ок, чем через аплинк-резолвер. Но DoT к dns.google стабильно не работает.
- Режимы браузера:
- HTTP/2 по TCP — чаще жив.
- HTTP/3 (QUIC) — регулярно отправляют «в угол».
- Игровые лаунчеры:
- Локальный браузер может открыть маркетплейс, а логин/патч — нет. Смотрел в tcpdump — ClientHello уходит, ответа нет. DPI по SNI и/или набору JA3-отпечатков.
Что в итоге вышло — сухие цифры и факты
- 16.07 (Android, домашний Wi‑Fi): 40 OK, 7 warn, 8 fail.
- 16.07 вечер (Android, второй SSID 5 ГГц DFS ch52): 14 OK, 6 warn, 37 fail.
- 16.07 вечер (Android, обратно): 41 OK, 6 warn, 8 fail.
- 18.07 утро: 120 OK, 18 warn, 19 fail.
- 20.07 утро: 228 OK, 12 warn, 5 fail.
- 20.07 (гостевая сеть): 154 OK, 25 warn, 61 fail.
- 20.07 полдень: 220 OK, 17 warn, 2 fail.
- 20.07 вечер: 116 OK, 31 warn, 93 fail.
- 21.07 утро: 114 OK, 27 warn, 99 fail.
- 21.07 день: 105 OK, 61 warn, 80 fail.
- 22.07 утро: 241 OK, 17 warn, 39 fail.
- 22.07 (ещё сеть): 109 OK, 30 warn, 73 fail.
- 22.07 10:57: 286 OK, 17 warn, 2 fail.
- 28.07 ночь: 257 OK, 15 warn, 30 fail.
- 29.07 00:09: 264 OK, 40 warn, 0 fail.
- 05.08: 423 OK, 79 warn, 3 fail (+ 23 сайта с частично не грузящимися ассетами CDN).
Паттерны фильтрации, подтверждённые тестами:
- Системные кептив-порталы (connectivitycheck.gstatic.com, connectivitycheck.android.com, www.msftconnecttest.com, captive.apple.com) — точечно в молоко. Поэтому ОС дружно помечают сети как «без интернета».
- DoT :853 — фильтрация. dns.google/8.8.8.8/9.9.9.9 закрыты/таймаут. 1.1.1.1 открыт.
- Игровые экосистемы — отрезает логин/патч:
- Battle.net (включая :1119), Steam CDN/CM, Epic, Riot, Ubisoft, GOG, Xbox Live, PlayStation Network, Nintendo, EA, Roblox, Minecraft.
- AI-платформы — таймауты/DNS: OpenAI, ChatGPT, OpenAI API, Claude/Anthropic, Gemini, AI Studio, Grok/xAI, DeepSeek, Mistral, Hugging Face, Groq, Together, Poe, Notion AI, Cursor.
- Облака — регулярно AWS S3 CDN (например, amazonlinux).
- IoT-порты — MQTT :8883, Google mtalk :5228/:5229, Apple push :5223, XMPP :5222.
- QUIC (UDP/443) — глушится DPI, при живом TCP/443.
- DNS по именам — точечные дыры: iot.yandex.ru, api.alice.yandex.net, ok.ru, copilot.microsoft.com, clouddrive.nabucasa.com.
- NTP — time.google.com, ntp.yandex.ru иногда молчат по UDP/123.
- Российские сервисы тоже ловили:
- 22.07: Госуслуги/Президент/Правительство/Госдума, Wildberries, 2ГИС.
- 28.07: банки (Сбер, Т‑Банк, ВТБ, Альфа, РСХБ, ПСБ, Росбанк), Ozon, РЖД, Дзен, OK.ru, Okko, Почта России.
Динамика по волнам:

- 16–18.07 — первая волна: телефоны «без интернета» (кептивы), DoT, игры.
- 20–21.07 — пик: до 61–99 сбоев за прогон, ложится почти всё зарубежное, местами и РФ-сервисы.
- 22.07 10:57 — резкий откат до 2 сбоев (AWS S3 + Росбанк).
- 28.07 — вторая волна: 30 сбоев, в основном РФ‑сервисы и игры.
- 29.07 — полное восстановление — 0 сбоев.
- 05.08 — хвост: 3 сбоя + кучка CDN-ассетов в warn.
Важно: весь этот цирк проходил при зелёной базовой связности:
- Пинги к 1.1.1.1/8.8.8.8 — без потерь.
- DNS в целом резолвит (кроме точечной резки по именам).
- Скорость по iperf к 198.51.100.50:5201 (мой тестовый узел за NAT’ом друга) — как обычно.
- Приложения, которые не попадают под SNI/DPI-правила, работали.
Выводы и что делать
1) «Нет интернета» ≠ нет интернета. Если пинги зелёные и DNS в целом жив, а телефон/Windows врут — первым делом смотрите кептив-порталы:
- Android/ChromeOS:
- curl -I http://connectivitycheck.gstatic.com/generate_204 (ожидаем HTTP/204).
- curl -I http://connectivitycheck.android.com/generate_204.
- Windows:
- Apple:
Если тут таймауты — ОС решит, что «интернета нет», и начнёт творить дичь (не все приложения станут выходить в сеть).
2) DoT (порт 853) может фильтроваться точечно. На Android:
- Настройки → Сеть и интернет → Частный DNS → Выключено.
- «Автоматически» при заблокированном dns.google:853 превратит вашу сеть в «без интернета», хотя TCP/443 и DNS по UDP/53 живут.
Проверка с хоста:
- echo | openssl s_client -connect dns.google:853 -servername dns.google -brief.
- echo | openssl s_client -connect 1.1.1.1:853 -servername cloudflare-dns.com -brief.
3) Это очень похоже на SNI/DPI-фильтрацию и тестовые волны ТСПУ:
- Маркируются конкретные домены/семейства (игры, AI, облака).
- Режутся push-порты и QUIC.
- Ломаются именно «проверочные» домены OS, чтобы техника считала сеть оффлайн.
- Наблюдается волнами, с резкими включениями/откатами.
4) Как диагностировать самостоятельно (минимальный чек-лист):
- Кептив-порталы:
- QUIC:
- curl —http3 -I https://www.google.com
- curl —http3 -I https://www.cloudflare.com
- DoT:
- echo | openssl s_client -connect dns.google:853 -servername dns.google -brief
- echo | openssl s_client -connect 1.1.1.1:853 -servername cloudflare-dns.com -brief
- DNS-имена (сравнение разных резолверов):
- dig +short iot.yandex.ru @1.1.1.1
- dig +short iot.yandex.ru @10.0.10.1
- Игровые/IoT-порты:
- nc -vz eu.actual.battle.net 1119
- nc -vz mtalk.google.com 5228
- nc -vz api.push.apple.com 5223
- nc -vz mqtt.example.com 8883
- Трассы:
- mtr -T -P 443 example.com
- traceroute -T -p 443 example.com
- Снифф:
- tcpdump -i wan -n 'host 8.8.8.8 and port 853'
- tcpdump -i wan -n 'udp port 443'
5) Что делать, кроме «подождать, пока отпустит»:
- Собирать фактуру: даты/время, домены, порты, IP назначения (dstIP), скриншоты ошибок (WinINet 12002/12057), логи утилит.
- Отправлять письмо в ЦМУ ССОП: info@noc.gov.ru.
- Указать:
- Номер ТСПУ (если известен; его провайдер обычно светит в договорах/ЛК).
- Оператора (название не пишу здесь, но в письме — указывать).
- Примеры недоступных сайтов/сервисов (с точными доменами).
- Время и длительность каждого инцидента (волны).
- Трассировки (traceroute/mtr) и результаты повторных попыток не реже 1 раза в 5 минут.
- dstIP/порты, на которых фиксировались отказы.
- Скриншоты ответов/таймаутов, желателен pcap-файл.
- Важно: показывайте, что это не «у вас роутер», а репродуцируется на разных VLAN/сетях/устройствах (домашний Wi‑Fi, гостевая сеть, мобильный).
- На смартфонах до разбора симптомов отключайте «Частный DNS» и не пугайтесь «без интернета» — это диагноз ОС по сломанным кептив-порталам, а не факт отсутствия канала.
6) Для гигиены лабы:
- Разведите мониторинг системных URL ОС (gstatic/msftconnecttest/captive.apple) отдельной метрикой — это золотой индикатор.
- Храните эталонный набор доменов по категориям: игры, AI, облака, банки, IoT. Один прогон — и картинка дня ясна.
- Автоматизируйте записи о волнах: таймстемпы, OK/warn/fail. У меня это делает connect-check, отчёт — один HTML, открывается даже оффлайн.
Мой личный срез по «что это было»
- По совокупности: точечная SNI/DPI-фильтрация, вероятно, волны настройки/тестов ТСПУ. Это объясняет, почему одновременно падали:
- Кептив-порталы (ОС теряют уверенность, заявляют «без интернета»).
- DoT :853 (частично), QUIC (UDP/443).
- Семейства доменов (игры, AI, облака) и отдельные DNS-имена.
- IoT-порты для уведомлений/шины.
- Наличие «окна» 22.07 10:57 (практически полное восстановление) и второго всплеска 28.07 по РФ-сервисам выглядит как переключение профилей/политик, а не «сломался провод».
- Полное восстановление 29.07 в 00:09 — характерный «сменили правило/откатили конфиг».
Вопрос к вам
Кто ещё ловил такие волны? С той же симптоматикой: живые пинги/DNS, но «без интернета» из‑за кептивов, закрытый DoT (кроме 1.1.1.1), отключенный QUIC, массовые таймауты игр/AI/облаков, и потом резкий откат? Чем мерили, есть ли у вас числа по дням/часам? Писали ли в ЦМУ ССОП на info@noc.gov.ru и что ответили?
🔧 Утилита диагностики: https://github.com/cooler58/connect-check/releases