Как нам максимально улучшить доступность сервисов в России?

English speakers, don’t forget about “translate” button (globe icon) at the bottom of every post.

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

1. DNS-резолвер, получающий все возможные геораспределённые IP-адреса из других регионов

Суть в следующем: резолвер, установленный локально или на удалённом сервере, делает рекурсивные запросы с разными адресами EDNS Client Subnet, а также через разные публичные резолверы в разных регионах, чтобы отдать клиенту максимально широкий набор потенциально доступных адресов.

Дополнительно резолвер может исключить заблокированные адреса из ответа (находящиеся в Реестре).

Такой резолвер позволит зайти на ресурс за заблокированным IP-адресом, не применяя туннелирование трафика без необходимости.

2. DNS-резолвер, переписывающий IP-адреса облачных сервисов, позволяющих обращаться по разным адресам

Вариация пункта 1 для сайтов за Cloudflare и Amazon CloudFront. Эти сервисы спроектированы так, что позволяют подключаться к практически любому IP-адресу: DNS-резолвер может заменять IP-адреса из диапазона этих сервисов на статические, заведомо доступные и не заблокированные.

Диапазоны адресов доступны публично: для Cloudflare и Cloudfront.

Возможно, часть менее известных CDN-сервисов тоже позволяют такое обращение.

3. Happier eyeballs with mouth open

Расширение алгоритма Happy Eyeballs, позволяющего программам подключаться сразу к IPv6 и IPv4-адресам, если IPv6 недоступен, чтобы уменьшить задержку перед открытием сайта.

Улучшение алгоритма заключается в установке сразу нескольких соединений в рамках одного протокола, не только к разным IPv4/IPv6, но и к одному адресу несколько раз: иногда один и тот же адрес может быть то доступен, то недоступен, из-за использования нескольких вышестоящих каналов провайдером. В некоторых случаях, выбором канала можно неявно управлять, например, если он осуществлятся в зависимости от номера исходящего порта.

Реализовать улучшение можно в прокси-серверах, например, в комбайне v2ray/v2fly.


Наверняка что-то забыл, дополню пост, если вспомню. Слушаю вашу критику и встречные предложения.

Теоретически это возможно, но как любое “хакерское” и одновременно “простое” решение требует от “умных парней” постоянно обслуживать этот агрегат.
Ибо постоянно ситуация меняется. Сейчас все активнее идет блокировка внереестровая, автоматизировать полностью не получится.
Потребуется какой-то центральный сервер, откуда будут скачиваться правила для этой системы.
К тому же от блокировок вообще это не панацея, поскольку везде DPI. Только от каких-то конкретных частных случаев, которых не так и много.
Может разве что в составе goodbye dpi. Все зависит от целевой аудитории. Если надо, чтобы “нажал и заработало”, то нужно какое-то интегрированное решение

Еще какая проблема может быть. Если начать давать неоптимизированные IP от ютуба, то скорость может упасть очень сильно, а следовательно и качество. Ведь не просто так используется оптимизация по geo. И не только ютуба это касается

Предполагается некий комплекс. Не обязательно в составе GoodbyeDPI; то, что описано выше, вообще скорее для выборочных VPN.

Считаю, что это всё равно лучше, чем маршрутизировать трафик через VPN.

Вынес на всеобщее обозрение.

Это лучше, когда нет иной альтернативы
А по нормальному надо сначала проверять какие IP из оптимизированных доступны, и если такие есть - выдавать их. И только если их нет, выдавать другие. И то, желательно их как-то упорядочить хотя бы по geoip, чтобы не давать для юзеров из RU американские IP
Причем на разных провайдерах ситуация может быть разной
Вот о чем и хотел сказать. Что если начать раскручивать идею, не все так просто получается

К перечисленным выше пунктам добавлю вариант с DPI. На хабре уже была статья как сделать “домашний” DPI на базе nginx. На мой взгляд сильно упростит обход блокировок, а также позволит создать базу заблокированных ip и доменов по sni. Конечно это не решает вопрос с прокси/vpn, но жить без автоматизации с каждым годом будет все тяжелее.

Вы имеете в виду некий автоматический метод определения доступности сайтов? Как вы это видите?

Да.
Примерно так:
1)Пользователь заходит на сайт
2)Если соединение сбрасывается через tcp reset, timeout (настраиваемое значение) или происходит подмена сертификата то проверяем в фоне curl’ом через vpn.
3)Если через vpn сайт открывается то уведомляем пользователя что сайт доступен через vpn и предлагаем добавить домен/ip в исключения. На этом этапе также можно собирать статистику по заблокированным доменам/ip.
Теоретически можно написать сколько угодно сложную логику проверки.

Единственная проблема это нагрузка на систему пользователя. Т.к придеться проверять все соединения.

Статья на хабре Домашний DPI