- PVSM.RU - https://www.pvsm.ru -

В России сохраняются проблемы с доступностью сайтов, но никто их не замечает

TL;DR: Из-за блокировок Роскомнадзора большое количество ресурсов, находящихся на Amazon CloudFront и Akamai, периодически становятся кратковременно недоступны. Проблема вызвана частой сменой (ротацией) IP-адресов на доменах, использующих эти сервисы, а также балансировками на основе геопризнака и EDNS Client Subnet: периодически DNS-серверы ресурсов выдают клиентам адреса, внесённые в Реестр запрещенных сайтов. Неосведомлённому человеку сложно определить причину проблемы, так как через минуту всё, как правило, снова работает (но через какое-то время опять перестаёт).

Введение

Около двух лет в России в рамках борьбы с Telegram были заблокированы диапазоны IP-адресов Amazon Web Services, CloudFlare, Digital Ocean, Scaleway, Hetzner, Softlayer и других менее известных хостингов и CDN. Перечисленные сервисы очень популярны, их услугами пользуется значительное количество сайтов в интернете.
Во времена блокировки пользователи сообщали о недоступности Playstation Network [1], Viber [2], Spotify [3], основного сайта Microsoft и некоторых его поддоменов [4], а также множества других сервисов, сайтов и интернет-игр.
18.06.2020 Роскомнадзор разблокировал [5] все ранее блокированные диапазоны, жалобы на недоступность сайтов резко сократились.

Однако часть сайтов, использующих сервисы Amazon CloudFront и Akamai, до сих пор периодически не открывается либо не загружается полностью, а через минуту уже работают нормально. Вы могли списывать такое поведение на проблемы у интернет-провайдера или сайта, но на деле они вызваны интернет-блокировками в России и особенностями геобалансировки этих сервисов.

Вот краткий список хостов, к которым был затруднен доступ за последние 2 недели:

  • www.adobe.com
  • leonardo.osnova.io (картинки сайтов dtf.ru, tjournal.ru)
  • cf-hls-media.sndcdn.com (аудио SoundCloud)
  • blog.playstation.com (блог Playstation)
  • clips-media-assets2.twitch.tv (видео с Twitch)
  • ocsp.int-x3.letsencrypt.org (проверка сертификатов по протоколу OCSP)
  • steamcommunity-a.akamaihd.net (форум Steam)
  • *.zendesk.com (система поддержки Zendesk)
  • a.slack-edge.com (мессенджер Slack)
  • v16-web.tiktok.com, s16.tiktokcdn.com (приложение TikTok)
  • cdn-images.deezer.com (картинки аудиосервиса Deezer)

Давайте разберемся с причинами проблем и способами их устранения.

Геобалансировка и EDNS Client Subnet

Для того, чтобы распределить запросы пользователей к наиболее близким серверам географически, DNS-резолверы при обращении к DNS-серверам добавляют IP-адрес клиента с точностью до подсети /24, и сервер учитывает его при ответе на запрос.
Akamai, например, может отдавать совершенно разный набор IP-адресов на разные подсети, даже если они географически близко и принадлежат одному провайдеру, и отдаёт ответ со значением TTL равным одной минуте.

Отрезолвим домен steamcommunity-a.akamaihd.net (домен Steam для изображений и различных ресурсов) через DNS-резолвер Google 8.8.8.8, используя диапазоны 87.245.224.0/24, 87.245.225.0/24, 87.245.226.0/24, 87.245.227.0/24 провайдера retn для Client Subnet:

$ dig +short steamcommunity-a.akamaihd.net @8.8.8.8 +subnet=87.245.224.0/24
92.123.77.32
92.123.77.19

$ dig +short steamcommunity-a.akamaihd.net @8.8.8.8 +subnet=87.245.225.0/24
185.5.160.202
185.5.160.187

$ dig +short steamcommunity-a.akamaihd.net @8.8.8.8 +subnet=87.245.226.0/24
185.5.160.202
185.5.160.187

$ dig +short steamcommunity-a.akamaihd.net @8.8.8.8 +subnet=87.245.227.0/24
87.245.213.51
87.245.213.9

Подождем пару минут, повторим опыт:

$ dig +short steamcommunity-a.akamaihd.net @8.8.8.8 +subnet=87.245.224.0/24
2.20.188.65
2.20.188.75

$ dig +short steamcommunity-a.akamaihd.net @8.8.8.8 +subnet=87.245.225.0/24
23.3.90.136
23.60.69.14

$ dig +short steamcommunity-a.akamaihd.net @8.8.8.8 +subnet=87.245.226.0/24
95.101.143.18
95.101.143.16

$ dig +short steamcommunity-a.akamaihd.net @8.8.8.8 +subnet=87.245.227.0/24
92.123.77.19
92.123.77.32

Как легко заметить, для каждого диапазона отдаются разные наборы адресов, которые меняются со временем.

Один из IP-адресов, 92.123.77.19, находится в Реестре запрещенных сайтов [6] с 22.10.2020. При попытке браузера открыть сайт через этот IP-адрес, он либо сразу не откроет страницу, либо будет загружать её бесконечно долго (зависит от системы блокировок у провайдера).

Скриншот с сайта Роскомсвободы: IP-адрес внесён в реестр.

Аналогичная ситуация наблюдается со многими другими доменами. Например, leonadro.osnova.io (изображения новостных сайтов tjournal.ru, dtf.ru) периодически резолвится в 2.19.204.32, 2.16.103.18, один из которых находится в Реестре [6].

Пример выполнения команды nslookup под Windows, используя DNS-резолверы провайдера ОнЛайм (Москва):

>nslookup leonardo.osnova.io
╤хЁтхЁ:  ns1.onlime.ru
Address:  77.37.251.33

Не заслуживающий доверия ответ:
╚ь :     a1844.dscd.akamai.net
Addresses:  2a02:26f0:98::58dd:844b
          2a02:26f0:98::58dd:8452
          2.19.204.32
          2.16.103.18
Aliases:  leonardo.osnova.io
          leonardo.osnova.io.akamaized.net

История выявления проблемы

Пользователи АнтиЗапрета [7] и расширения «Обход блокировок Рунета» [8] визуально уведомляются о факте проксирования домена или IP-адреса, а при ошибке проксирования им предоставляется возможность отправки сообщения об ошибке.

При наличии домена проксирование всегда осуществляется по нему; на прокси-сервер не отправляется IP-адрес, полученный через DNS-резолвер пользователя.
Ошибка возникала из-за того, что локально у пользователя домен резолвился в заблокированный IP-адрес, из-за чего запрос, содержащий только домен, отправлялся на прокси-сервер проекта. Прокси-сервер искал домен по списку заблокированных, не находя его там резолвил IP-адреса, получал другой набор IP-адресов (не тот, который был у клиента), и блокировал запрос из-за отсутствия IP-адресов в Реестре заблокированных.

Возможные решения проблемы

Чтобы хоть как-то уменьшить проблемы с интернетом в России, производители некоторых комплексов Carbon Reductor DPI X [9], но работает она только при использовании DNS-резолверов провайдера (а не сторонних, DNS over HTTPS, и т.п.):

[…] Мы сделали сразу два решения проблемы с блокировкой популярных ресурсов.

Первый способ — интеграция с DNS-серверами для избежания частичных блокировок.

У некоторых больших ресурсов и сервисов, таких как Google, на одном домене используется большое количество IP-адресов. Некоторые из них могут случайно оказаться в списках на блокировку. В итоге абоненты испытывают проблемы, сайт у них открывается со второй или третьей попытки, пока браузер перебирает IP-адреса, возможно он так и не подключится. С помощью Carbon Reductor DPI X Вы можете настроить интеграцию с Вашим DNS-сервером и отдавать клиентам только незаблокированные IP-адреса.

Если абонент использует публичные DNS-сервера этот способ не поможет. При обращении в поддержку можно рекомендовать ему использовать DNS-сервер провайдера или Вы можете настроить переадресацию DNS на маршрутизаторе.
[…]

Готовое ПО с подобной функциональностью мне неизвестно, но это достаточно просто реализовать в Knot Resolver и PowerDNS Recursor.
В простых случаях должно быть достаточно добавить незаблокированные адреса для домена в файл hosts, но на мобильных устройствах это невозможно сделать без root или специального ПО.

Владельцы сайтов могут попробовать отключить геобалансировку и изменение IP-адресов, если такая настройка имеется, либо установить и использовать для домена собственный DNS-сервер, настроенный таким образом, чтобы отдавать только гарантированно не заблокированные адреса.

Вывод

Увы, по состоянию на конец ноября 2020 года интернет в России до сих пор нормально не работает: то тут, то там можно встретить кратковременную недоступность ресурсов, неполную загрузку сайтов и прочие атрибуты блокировок. Специалисты Роскомнадзора не знают об этой проблеме или игнорируют её, а из-за отсутствия визуального оповещения о блокировке такого типа, пользователи вынуждены винить владельцев сайтов или интернет-провайдера.

Автор: ValdikSS

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/setevy-e-tehnologii/359079

Ссылки в тексте:

[1] Playstation Network: https://www.igromania.ru/news/74766/Sony_prokommentirovala_problemy_s_dostupom_k_PlayStation_Network_v_Rossii.html

[2] Viber: https://vc.ru/flood/36457

[3] Spotify: https://www.the-village.ru/city/situation/309525-roskom-vs-telegram

[4] основного сайта Microsoft и некоторых его поддоменов: https://twitter.com/fsqgera/status/986162669370728448

[5] Роскомнадзор разблокировал: https://rkn.gov.ru/news/rsoc/news73050.htm

[6] находится в Реестре запрещенных сайтов: https://reestr.rublacklist.net/record/2657011/

[7] АнтиЗапрета: https://antizapret.prostovpn.org/

[8] «Обход блокировок Рунета»: https://chrome.google.com/webstore/detail/%D0%BE%D0%B1%D1%85%D0%BE%D0%B4-%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BE%D0%BA-%D1%80%D1%83%D0%BD%D0%B5%D1%82%D0%B0/npgcnondjocldhldegnakemclmfkngch

[9] Carbon Reductor DPI X: https://docs.carbonsoft.ru/pages/viewpage.action?pageId=113115218#%D0%9D%D0%BE%D0%B2%D0%BE%D0%B5%D0%B2CarbonReductorDPIX-%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F%D1%80%D0%B0%D0%B7%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0%D0%BF%D0%BE%D0%BF%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BE%D0%B2

[10] Источник: https://habr.com/ru/post/528210/?utm_source=habrahabr&utm_medium=rss&utm_campaign=528210