ПростоVPN.АнтиЗапрет

 ПростоVPN АнтиЗапрет

Гарантируется свобода массовой информации. Цензура запрещается. It gets worse.

Технические детали сервиса

PAC-файл и прокси

Сервис с периодичностью раз в несколько часов генерирует PAC-файл (Javascript-код), содержащий заблокированные домены и IP-адреса, основываясь на списке заблокированных сайтов для интернет-провайдеров, предоставляемым сторонним репозиторием zapret-info/z-i на github.com.

Доменные имена внутри списка разделяются по длине и зоне. Для доменов одной длины формируется большая переменная-строка из всех заблокированных доменов этой длины и зоны, без каких-либо разделителей. Процедура повторяется для доменов всех длин и всех зон, после чего переменные-строки объединяются в переменную типа словарь (dictionary), в качестве ключа которых служит доменная зона и длина домена.
Такой подход уменьшает размер PAC-файла (а он важен: в Chrome и Internet Explorer он ограничен 1 МиБ), уменьшает потребляемую оперативную память (ограничения есть у всех браузеров), ускоряет его обработку и поиск домена на каждый запрос.

Пример:

"news":{              ← доменная зона .news
 3:"mbk",
 4:"utro",
 5:"vybor",
 6:"rodinaaction",    ← домены rodina.news, action.news, размером в 6 символов
 7:"wellbetfoxfordtorpedatrashikferganaspichka",
 8:"rakishevprivat24ukraines",
 10:"fanserialsidrakmedya",
 11:"publicpressmyrotvorets"
}

PAC-файл раздаётся с использованием технологии распределенного обмена файлами IPFS (что-то вроде BitTorrent для WEB), через шлюзы от ipfs.io и Cloudflare, для снижения нагрузки канала у сервера: многие неправильно написанные программы под Windows запрашивают PAC-файл очень часто, иногда даже на каждый интернет-запрос, и не кешируют его, из-за чего суточный трафик к нему превышает 1 ТБ, с учётом сжатия и ограничений по количеству запросов в минуту.
Как бы курьёзно это ни звучало, в некоторые дни трафик к PAC-файлу превышает суммарный трафик к заблокированным сайтам через все прокси-серверы!

PAC-файла создаётся два, отличаются они типами прокси. В nossl-файл включается только обычный HTTP-прокси без шифрования, а в ssl-файл добавляется еще и шифрованный HTTPS-прокси (HTTP-прокси с TLS-шифрованием поверх, т.н. Secure Web Proxy). Шифрование необходимо для сокрытия запрашиваемого домена от систем DPI провайдера, т.к. они часто блокируют запросы через нешифрованные прокси, а разделение на два файла сделано для работоспособности программ, не поддерживающих шифрованный вариант. Выбор файла осуществляется по заголовку User-Agent запрашиваемого клиента.

Исходный код генератора PAC-файла доступен в репозитории antizapret-pac-generator-light.

На прокси-серверах используется ПО Squid, с доступом только к заблокированным доменам и IP-адресам.

VPN

В отличие от обычных VPN, осуществляющих перенаправление отдельных IP-адресов или диапазонов средствами маршрутизации ОС, VPN АнтиЗапрета использует маршрутизацию на основе доменных имен, с помощью специального DNS-сервера, созданного для этой цели.

На VPN-сервере запущен специальный DNS-резолвер, устанавливающий отображение (соответствие, маппинг) настоящего IP-адреса домена в свободный IP-адрес большой внутренней подсети, и отдающий запрашиваемому клиенту адрес из внутренней подсети.

У такого подхода есть множество преимуществ:

Но есть и минусы:

Схематичное представление:

📱 — Клиент
🖥 — VPN и DNS-сервер
🖧 — Интернет

📱 → rutracker.org? → 🖥
  🖥 → rutracker.org? → 🖧
  🖥 ← 195.82.146.214 ← 🖧
  10.224.0.1 → 195.82.146.214
📱 ← 10.224.0.1 ← 🖥

Готовый для установки контейнер и его исходный код доступны в репозитории antizapret-vpn-container.