ХАКАТОН БЕЗ ГРАНИЦ : ВЕСТИ С ЭКВАТОРА

Давайте коротко подведём промежуточный итог : что было сделано на первых трёх хакатонах и что ещё предстоит ? Надеемся, этот материал поможет командам Берлина и Варшавы найти для себя задачу по душе, а участники и участницы из Тбилиси, Еревана и Вильнюса узнают в тексте себя и свои успехи !

AmneziaVPN — это opensource VPN клиент с фичей автоматизированного развертывания VPN сервиса на собственном сервере. На данный момент клиент поддерживает установку и работу с различными протоколами, такими как OpenVPN, WireGuard, ShadowSocks, а так же связку протоколов OpenVPN over Cloak и ShadowSocks over Cloak для маскировки VPN трафика под web трафик.

В рамках хакатона планируется расширить возможности AmneziaVPN в плане поддержки методов маскировки VPN протоколов разными плагинами — чтобы AmneziaVPN могла устанавливать такие связки протоколов на сервер, и самое главное — подключаться к ним.

Задача на хакатон

Задачи разбиты на этапы, первый этап является блокером для остальных этапов (с некоторыми исключениями) — сначала необходимо реализовать в Амнезии сам Docker контейнер (создать скрипты для Docker image), в котором будет работать выбранная связка протоколов, а на следующих этапах научить Амнезию подключаться по VPN к этим контейнерам.

1 этап. Уровень сложности — 2/10. Необходимые навыки — bash scripting, Docker, cmd scripting, понимание VPN и сетей.

Возможные варианты задач:

— ресёрч связки WireGuard over Cloak и реализация в виде Docker контейнера для AmneziaVPN

— ресёрч связки WireGuard over TCP over v2ray и реализация в виде Docker контейнера для AmneziaVPN

— ресёрч связки WireGuard over средство маскировки VPN трафика и реализация в виде Docker контейнера для AmneziaVPN

1б этап.
В репозитории Openvpn есть ветка с поддержкой Pluggable Transport. Необходимо разработать концепт внедрения Openvpn с поддержкой PT в AmneziaVPN.

Подзадачи:
разобраться как это работает, скомпилировать openvpn, протестировать с одним из PT плагинов (например v2ray) разработать bash скрипты для развертывания с Амнезией, добавить поддержку в Амнезию.

2 этап. Уровень сложности — 4/10. Необходимые навыки — всё по первому этапу + навыки разработки c++/Qt.

Варианты задач: Имплементация схемы из первого этапа для одной или нескльких десктопных платформ: Windows/MacOS/Linux

3a этап. Уровень сложности — 7/10. Необходимые навыки — всё по первому этапу + навыки разработки под Android на Java/Kotlin, работа с исходниками выбранного плагина маскировки VPN.

Имплементация схемы из первого этапа для Android.

Так же возможен вариант подзадачи — реализация ShadowSocks over Cloak для Android. Для этого варианта задачи «Реализация ShadowSocks over Cloak для Android» первый этап не требуется, данный контейнер уже реализован в AmneziaVPN, так же есть ветка с экспериментальной поддержкой ShadowSocks для Android.

3b этап. Уровень сложности — 9/10. Необходимые навыки — всё по первому этапу + навыки разработки под iOS на ObjectiveC/Swift, работа с NetworkExtension, работа с исходниками выбранного плагина маскировки VPN.

Имплементация схемы из первого этапа для iOS.

Так же возможны варианты подзадач — реализация ShadowSocks для iOS и реализация ShadowSocks over Cloak для iOS. Для этих вариантов задач первый этап не требуется, данный контейнер уже реализован в AmneziaVPN, так же есть ветка с экспериментальной поддержкой ShadowSocks для iOS, но эта ветка требует рефакторинга и доработки.

https://github.com/amnezia-vpn

Полезные ссылки

Git репозиторий Amnezia VPN