Во время поездки в отпуск в Египет я приобрел сим карту местного оператора и решил посмотреть как быстро будет (по сравнению с традиционно медленным 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.

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

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

Комментарии (45)


  1. scruff
    18.02.2022 12:59

    openvpn, работающий только через tcp:443, тоже будет "резаться" в Египте?


    1. UserAd Автор
      18.02.2022 13:00

      У меня резался.

      Так-же зависал на стадии Authenticating и пакет ответа от сервера не приходил


    1. VASYL_MELNYK
      18.02.2022 15:18

      Через любой порт режется - я пробовал разные, но иногда пробивается - скорее всего когда не хватает производительности, фаервол просто пропускает трафик. Ну а поднятая сессия остается работать.

      Я обходил с помощью chisel.


      1. UserAd Автор
        18.02.2022 15:50

        А скорость не замеряли?


        1. VASYL_MELNYK
          18.02.2022 15:52
          +1

          У меня впн чисто для доступа в корпоративную сеть - скорость не интересует особо. Но там в египте скорость и так не очень


  1. P6i
    18.02.2022 13:19
    +15

    Я нашел более рабочий метод, летаю в отпуск во всякие Египты и Турции без ноутбука)


    1. Exclipt
      18.02.2022 21:47
      +5

      Посоветую апгрейд способа - без ноута, и не в Египет :)


    1. Wesha
      19.02.2022 09:28

      1. Zed-nsk
        19.02.2022 09:58

        Работа? Какая работа?))


  1. RalphMirebs
    18.02.2022 13:30
    -1

    А что именно у Вас не открылось в Египте? Что они блокируют из западных сайтов или что-то чисто свое?


    1. UserAd Автор
      18.02.2022 13:31
      +1

      У нас доступ ко всей инфраструктуре идет через VPN, так-же у меня через него прокинут доступ за NAT к моим серверам.


    1. BMXer_V
      18.02.2022 14:22

      Как минимум, через мобильных операторов в Египте не будет работать никакая IP-телефония, скайпы, вотсапы голосом или по видео и т.д. Так что без ВПНа не обойтись.


      1. UserAd Автор
        18.02.2022 15:51

        Да, телефония ломалась. Они SIP по моему просто срезают по заголовкам весь.


      1. vak0
        18.02.2022 20:20

        Ну уж никакая… ватсап и правда не работает совсем или работает плохо, а вот звонки в телеге и в инстаграме отлично работают, в т.ч. и видео.


        1. BMXer_V
          18.02.2022 20:22

          Кхм, только сейчас до мена дошло, как давно я в Египте не бывал. Т.к. ни звонков по телеге, ни по инстаграму в то время не существовало.


  1. Joka
    18.02.2022 13:39

    а блокирует ли Египет wireguard?


    1. AntonioMichaelAlvarez
      18.02.2022 14:04
      +2

      1. Nengchak
        19.02.2022 01:11

        А sstp?


        1. pobahvalov
          21.02.2022 11:01

          В середине Ноября прошлого года работал, как раз для руководителя на время отпуска настраивал.


      1. dobergroup
        19.02.2022 12:13

        Не понял из оригинальной статьи, использовали ли они шифрование рукопожатий. В смысле, срабатывает ли DPI на этот режим


  1. GoLinux
    18.02.2022 13:51

    А вы пробовали включать сам ВПН именно на телефоне ?
    У меня на ноуте не работал ВПН именно когда подключался к интернету через хотспот на телефоне.
    И чтоб заработал впн на ноуте пришлошь трафик с ноута отправлять на телефон напрямую используя PdaNet+.


    1. UserAd Автор
      18.02.2022 13:52

      Я пробовал. Для тестов запускал на телефоне ssltunnel и все проходило.

      С телефона UDP, TCP:443 не работали


      1. GoLinux
        18.02.2022 14:06

        Не совсем понял ответ, без каких либо изменений опен впн у вас получается не работал на телефоне и только после перенастройки серверной части вашего впн заработал. Правильно ?


        1. UserAd Автор
          18.02.2022 14:08

          После туннелирования трафика. До этого не работало вообще


          1. GoLinux
            18.02.2022 14:12

            ясно, дело наверное в определенном порту и тип впн.
            Циско впн у меня работал и через хот спот без каких либо проблем.


  1. AjnaGame
    18.02.2022 16:31

    Ух как закрутили) У меня всё решилось лишь одной софтинкой "Outline" (ну и шадовсокс серваком). Она отлично работает и на моб и на маке.


    1. UserAd Автор
      18.02.2022 16:47

      Ну мне нужен был именно OpenVPN


      1. AjnaGame
        18.02.2022 20:28

        Так именно он(OpenVPN) прекрасно и работает если запустить эту аппку)


  1. nikNameForHabr
    18.02.2022 16:38

    Интересно, есть ли такие страны, правительства которых не занимаются цензурой в интернете?


    1. mxr
      18.02.2022 16:45

      Нет Интернета - нет Проблем)
      Подписался на Ваш вопрос. Интересно даст ли кто-то ответ =)


      1. nikNameForHabr
        18.02.2022 17:09
        +1

        Я подозреваю, что только правительства стран Африки не лезут в интернет и запрещают своим граждам там делать что-то.


        1. kalbas
          18.02.2022 18:59
          +6

          Интересно, где по вашему находится Египет.


          1. nuflin1
            21.02.2022 10:50

            Ну Египет чуть выделяется относительно остальной Африки


          1. unnamsa
            21.02.2022 11:06

            )))) да, это пять!


  1. zlo1
    18.02.2022 16:44

    дополнительный софт - это ресурсы (энергопотребление, память,CPU), проще воспользоваться публичными socks5


    1. UserAd Автор
      18.02.2022 16:46
      +2

      простой SOCKS5 будет срезаться так-же DPI


  1. AcidVenom
    18.02.2022 17:05

    Пора отпустить OVPN.


  1. impexp
    18.02.2022 17:53

    Кто-нибудь в курсе, сейчас работает ли там SSTP? Что насчёт Softether?


    1. Saymon
      18.02.2022 18:03

      судя по сообщениям там блокируется любой vpn, чей трафик не обфускцирован, так что с большой долей вероятности тоже нет.


      1. F0iL
        19.02.2022 01:52
        +1

        У SSTP и Softether (и ещё у OpenConnect/AnyConnect) как раз-таки фишка в том, что из трафик внешне неотличим от обычного HTTPS.


  1. NoiseLoss
    18.02.2022 18:44

    Outline работает в Египте?


  1. endpoints
    18.02.2022 22:00

    Там даже на Хабр невозможно было зайти


  1. dobergroup
    19.02.2022 12:07
    +1

    От чего зависит плавающий результат для shadowsocks, есть предположения?


  1. valdem
    19.02.2022 13:58

    У нас работало с Египта

    OpenVPN TCP/443 с включеным tls-crypt вместо tls-auth


  1. konzalaev93
    21.02.2022 12:42

    Интересно. А Softether VPN с отключённой UDP acceleration на 443 порту тоже блочится?