Обход блокировки OpenVPN в Египте

Во время поездки в отпуск в Египет я приобрел сим карту местного оператора и решил посмотреть как быстро будет (по сравнению с традиционно медленным wifi отеля) работать интернет включая подключение к нашей внутренней инфраструктуре.

Поскольку власти Египта используют DPI для блокирования VPN стандартный OpenVPN не работает, так как блокируются авторизационные пакеты как по tcp, так и по UDP.

Для подключения к VPN мы используем OpenVPN работающий поверх UDP и в некоторых случаях TCP. Конфигурация практически одинаковая, за исключением диапазонов IP адресов.

Поскольку OpenVPN является основным транспортом для меня я не смотрел на другие VPN решения.

Настройки для тестирования

Для тестирования скорости был использован iperf со стандартными настройками. Под debian и ubuntu он устанавливается пакетом iperf

#Установка
sudo apt install iperf #Запуск
iperf -s 

Модификации конфигурации openvpn конфига для клиента

Для соединений без SOCKS5 были изменены следующие параметры:

;3444 - порт на котором находится выход туннеля
remote 127.0.0.1 3443 tcp
; VPN_SERVER - адрес VPN сервера, так что трафик на него будет идти напрямую
route VPN_SERVER_IP 255.255.255.255 net_gateway

Для соединений с SOCKS5 были изменены следующие строки:

socks-proxy-retry
; 10194 - порт на котором socks сервер слушает соединения
socks-proxy 127.0.0.1 10194
; VPN_SERVER - адрес VPN сервера, так что трафик на него будет идти напрямую
route VPN_SERVER_IP 255.255.255.255 net_gateway

Софт для обхода блокировок

Были рассмотрены следующие пакеты сокрытия openvpn:

  • ssh tunnel

  • obfsproxy

  • stunnel

  • shadowsocks

SSH Tunnel

Является самым простым методом и работает по принципу заворачивания траффика в через SSH

ssh -L 1443:127.0.0.1:1443 VPN_SERVER

obfsproxy

Является частью TOR project, работает как SOCKS5 прокси и обфусцирует все пакеты внутри.

Установка требует python 2.X ветки, так как пакет не обновлен еще.

pip install obfsproxy

На сервере необходимо запустить серверную часть:

obfsproxy --log-file=obfsproxy.log --log-min-severity=info obfs2 --dest=127.0.0.1:1443 --shared-secret=SOMESHAREDSECRET123 server 0.0.0.0:21194

А на клиенте часть к которой будет подключаться OpenVPN

obfsproxy --log-file=obfsproxy.log --log-min-severity=info obfs2 --shared-secret= SOMESHAREDSECRET123 socks 127.0.0.1:10194

stunnel

Интсрумент общего назначения предназначенный для заворота любого вида траффика в SSL туннель, поддерживает множественные эндпоинты.

Для установки под debian и ubuntu надо установить пакет stunnel:

sudo apt install stunnel4

На сервере необходимо создать файл конфигурации stunnel.conf в директории /etc/stunnel4/ cсо следующим содержимым:

pid = /var/run/stunnel4/stunnel.pid
output = /var/log/stunnel4/stunnel.log
setuid = stunnel4
setgid = stunnel4 socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
options = NO_SSLv2
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE [openvpn]
cert=/etc/letsencrypt/live/vpn.example.com/fullchain.pem
key=/etc/letsencrypt/live/vpn.example.com/privkey.pem
accept = 0.0.0.0:3443 connect = 127.0.0.1:1443

Сертификаты могут быть как самоподписанные так и от letsencrypt

На клиенте надо создать файл клиента со следующим содержимым:

socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
options = NO_SSLv2
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE [openvpn]
sni = nothing.interesting.here.example.com
client = yes
accept = 127.0.0.1:3443
connect = VPN_SERVER_IP:3443

shadowsocks

Для установки необходимо поставить пакет shadowsocks-libev

sudo apt install shadowsocks-libev

Конфигурационный файл /etc/shadowsocks-libev/config.json для сервера надо привести к следующему виду:

{ "server":["0.0.0.0"], "mode":"tcp_only", "server_port":7433, "local_port":8043, "password":"SOME_BIG_RANDOM_PASSWORD", "timeout":60, "method":"chacha20-ietf-poly1305"
}

Для клиента я на MacOS использовал ShadowsocksX-NG

Результаты тестирования

Для тестирования iperf был размещен на том-же сервере что и OpenVPN.

Транспорт

Скорость

% от скорости без VPN

SSH Tunnel

807 Kbit/sec

7.14%

stunnel

6.53 Mbit/sec

57.79%

shadowsocks

3.91 — 6.31 Mbit/sec

34.6% — 55.84%

obfsproxy

1.85 Mbit/sec

16.37%

Наилучшие результаты показали stunnel и shadowsocks.

Выбор метода зависит от ситуации и, возможно, в других условиях могут отличаться результаты.

Данное исследование было проведено исключительно из-за необходимости иметь доступ к инфраструктуре.

Читайте так же:

  • Умные часы Amazfit X с 2-дюймовым изогнутым экраном подешевелиУмные часы Amazfit X с 2-дюймовым изогнутым экраном подешевели Компания Huami в прошлом году выпустила необычные часы Amazfit X с изогнутым экраном, которые смогли купить со скидкой только первые пользователи. После чего цена зафиксировалась на отметке 300 долларов. Теперь же на AliExplress предлагается глобальная версия устройства по цене 250 […]
  • Уникальность текста сайтаУникальность текста сайта Уникальность контента-это ценный инструмент, влияющий на позиционирование компании. Уникальность обеспечивает хорошую индексацию сайта, указывает пользователям на ценность информации. Товаров или услуг и улучшает общее восприятие бренда. Это широкое понятие, которое включает в себя не […]
  • Триангуляция и коррида. Геодезия и отвагаТриангуляция и коррида. Геодезия и отвага Это продолжение истории Экваториальной Градусной экспедиции, в XVIII веке отправившейся к, как следует из названия, экватору, чтобы уточнить форму Земли.Мы остановились на том, что ученые выполнили первую часть своих измерений: определили базис, но никак не могли продолжить (им не […]
  • 7 сервисов веб-аналитики для маркетологов7 сервисов веб-аналитики для маркетологов Веб-аналитик должен быть не только дата-исследователем, но и психологом. От него требуется работа с данными пользователей сайтов. Изучив их интересы и поведение, он помогает создать более эффективные приемы маркетинга. Но как ему найти информацию для первичного анализа? Мы расскажем вам […]