Мониторинг VPN-помех с помощью OONI
Альтернативное название: как расширить наши знания о том, что работает, а что нет, в разных частях мира.
Warning
|
Использование VPN или ПО, которое ведет себя похожим образом, может быть незаконным в вашей стране . Если вы подозреваете, что это так, взвесьте риски и спланируйте их, прежде чем приступать к работе. Зонды OONI, о которых мы рассказываем на этой странице, ведут себя так, как будто это инструмент VPN, и могут быть еще более заметными в сети, чем обычный VPN, поэтому вполне возможно, что его использование приведет вас к неприятностям. |
Warning
|
Сейчас вы войдете в раздел для участников OONI. Пожалуйста, внимательно прочитайте страницу Риски: что вы должны знать до запуска OONI Probe и убедитесь, что вы понимаете последствия. |
Зачем нам больше данных
Все еще с нами? Хорошо. Говорят, что мем сильнее тысячи слов, так что начнем.
Все меняется очень быстро, когда мы говорим о ситуации с тем, что заблокировано, а что нет, в контексте, где имеет место (жесткая) цензура. «Один и тот же» эксперимент может дать разные результаты в зависимости от времени суток, дня недели, месяца, сети, в которой вы находитесь (например, мобильные сети регулярно используют другие правила фильтрации, чем стационарные). Из-за этого нам нужно как можно больше данных.
Тем не менее, неудивительно, если ваша школа, университет, местный бар или небольшая сеть блокируют использование VPN. Нас больше всего интересует систематическая блокировка в сложных контекстах, где обычно также происходит сильное подавление.
Этот документ посвящен двум основным вещам:
-
Измерение доступности серверов Riseup.
-
Измерение того, работает ли протокол OpenVPN (для простоты, без обфускации, но об этом позже).
Большой привет всем анонимным участникам, которые регулярно помогают нам проверять, не подвергается ли наша инфраструктура цензуре. Вы - MVP!
Предварительные условия и допущения
-
Этот документ предполагает, что у читателя есть работающая установка Docker.
-
В этом документе предполагается, что RiseupVPN является целевым провайдером, который мы хотим измерить. Зонды могут быть адаптированы для мониторинга конечных точек различных VPN-провайдеров (в некоторой степени это будет проще, если эти провайдеры также используют LEAP VPN, как CalyxVPN или SurVPN). YMMV (ваши результаты могут отличаться).
Зонд RiseupVPN и сопутствующие работы
В прошлом OONI Probe поставлял эксперимент RiseupVPN, который в основном пытался обнаружить несколько VPN-шлюзов для Riseup.
Этот эксперимент был временно отключен, поскольку он был склонен к ложноположительным результатов. Мы попытались улучшить его, и надеемся, что вскоре он будет включен в обычные версии зонда.
В то же время мы с нетерпением ждем предстоящую работа по поддержке тестирования протокола OpenVPN в OONI. Это позволит нам протестировать полный OpenVPN в режиме, более похожем на то, как это работает в "реальном мире".
В ближайшем будущем это также позволит нам сделать очень крутую вещь: мы работаем над специальными сборками Bitmask, способными выполнять точную сетевую диагностику - и вести себя так, как если бы они были OONI-зондом.
Два PR, которые нам нужны, все еще в процессе - так что пока они не приземлятся в кодовой базе OONI, мы можем продемонстрировать их использование, взяв несколько коммитов из разных веток. Но имейте в виду, что пока что все это - передовые технологии. Пожалуйста, свяжитесь с нами, если у вас есть сомнения по поводу текущего состояния.
Немного предостережений
Warning
|
Мы уже упоминали, что сейчас очень подходящий момент, чтобы прочитать статью Вещи, которые вы должны знать перед запуском OONI Probe? Лучше перестраховаться, чем потом жалеть :wink: |
Проверка связности API
Одна простая вещь, которую мы можем сделать, это проверить, заблокирован ли доступ к API или
нет. Для riseup это будет black.riseup.net
.
Мы не только подключимся к серверу API, но и проверим, как он проходит через несколько DNS-провайдеров.
Мы будем использовать пользовательскую сборку miniooni
, версию OONI Probe для командной строки, которая содержит несколько необходимых нам экспериментальных исправлений.
Пока PR#846 не будет смёржен, мы будем использовать сборку из docker: miniooni-unofficial. Вы также можете собрать контейнер самостоятельно. Это одноисполняемый контейнер, и он используется почти как обычный бинарник miniooni
.
Note
|
Это неофициальная сборка для удобства, чтобы иметь возможность протестировать экспериментальную функциональность до того, как она будет запущена в сеть. |
Запустите тест веб-соединения с black.riseup.net
:
docker run ainghazal/miniooni-unofficial web_connectivity -n -i https://black.riseup.net
Залезем внутрь
-
docker run ainghazal/miniooni-unofficial
- Запустите пользовательский контейнерminiooni
. Все, что следует далее, является аргументами для miniooni. -
web_connectivity
- тест для запуска. Этот тест выполняет проверку DNS и соединения. -
-n
- Не передавайте результаты в сборщик данных OONI. -
-i <input>
- Тестовый вход. Дляweb_connectivity
это адрес для тестирования соединения. -
https://black.riseup.net
- адрес нашего сервера API. Мы пытаемся подключиться к нему и в процессе получаем много полезной информации.
Заставим работать
Получилось? Нет? Хорошо. Мы опустили флаг командной строки, потому что ожидаем, что вы сами найдете, как принять информированное согласие :grin:
Отправим отчета
Если вам удобно поделиться отчётом с сообществом OONI (и, соответственно, с нами), запустите его повторно, опустив флаг -n
.
Если сама инфра OONI подвергается цензуре в вашей стране, вам следует поиграть с параметром
--tunnel
. Вы можете попробовать использовать --tunnel tor
для обычного Tor (и также можете
также указать собственный бинарник tor
), или --tunnel torsf
, чтобы попробовать Tor+Snowflake
в качестве метода связи с бэкендом OONI. Если все это не сработает, в качестве альтернативы вы можете
попробовать поставить свой собственный --proxy
(для этого необходимо найти метод обхода,
который может быть socks-прокси через SSH-туннель и т.д. Будьте изобретательны!).
Проверим протокол OpenVPN
Иногда цензуре подвергается либо сам протокол OpenVPN, либо несколько шлюзов от провайдера.
Чтобы выяснить точную ситуацию с вашим провайдером, мы можем заставить miniooni
попробовать процедуру подтверждения связи протокола связи OpenVPN, а также попробовать реестр шлюзов для проверки соединения.
docker run ainghazal/miniooni-unofficial oonirun -n -i https://raw.githubusercontent.com/ainghazal/vpn-test-lists/main/oonirun/010-riseup-us.json
Разбивка
-
docker run ainghazal/miniooni-unofficial
- См. предыдущий раздел -
oonirun
- у нас есть пользовательский тест, который необходимо запустить (см. ниже) -
-n
- См. предыдущий раздел -
-i <input>
- Входные данные теста. Дляoonirun
это URL, содержащий JSON-спецификацию теста. -
https://raw.githubusercontent.com/ainghazal/vpn-test-lists/main/oonirun/010-riseup-us.json
- JSON-файл, содержащий спецификацию для нашего пользовательского эксперимента.
(Опционально) Более близкий взгляд
Вы можете открыть https://raw.githubusercontent.com/ainghazal/vpn-test-lists/main/oonirun/010-riseup-us.json
в своём браузере.
Там можно увидеть, что мы проводим тест openvpn
(сейчас он работает только с неофициальной сборкой, а не с обычной miniooni
) для ряда VPN-шлюзов.
Мы также передаем сертификаты для подключения к RiseupVPN.
Note
|
Имейте в виду, что если вы захотите создать свои собственные дескрипторы oonirun , вам придется время от времени обновлять эти сертификаты.
|
Отправка отчета
См. предыдущий раздел
Заключение
Ещё раз спасибо за участие в мониторинге цензуры. С вашей помощью ребята, занимающиеся обходом цензуры, попытаются узнать, как разблокировать VPN-доступ для большего количества людей :heart:.
Чтобы оставить отзыв, пожалуйста, откройте MR на нашем сайте circumvention discussion repo.