Предисловие

В статье будут рассмотрены три независимых варианта прохождения трафика транзитом с помощью:

  1. Double openVPN

  2. openVPN + vtun

  3. openVPN + tun2proxy через socks5 прокси

У меня провайдер заблокировал мой openvpn. Сначала обычный провайдер, а потом и мобильный тоже. Это был обычный vds сервер за рубежом с openvpn. Использовался исключительно в личных целях. После блокировки я просто решил проверить, а будет ли работать doublevpn, так как у меня был сервер еще и в России. Оказалось, что все отлично работает с помощью double. Суть этой технологии в том, что интернет‑трафик проходит через два сервера вместо одного. Об этом хорошо забытом инструменте и пойдет речь в статье, возможно, кому‑то это будет полезно. Так же я в статье на всякий случай рассмотрел варианты туннелировать трафик и с помощью vtun или socks5 прокси.

Вариант I. DoubleVPN

Схема double vpn
Схема double vpn

Конечно, первое, что пришло в голову - это просто соединить два сервера в России и в другой стране с помощью openvpn. И это получилось без проблем. Вот ниже мое решение:

Шаг первый. Установка openVPN на обоих серверах

Все, что я пишу, подходит так или иначе для любых *nix серверов, будь то ubuntu, centos, fedora, rocky и т.д.

Установить можно openvpn готовым скриптом, например, вот таким:

https://github.com/Nyr/openvpn-install

После того как вы запустили скрипт на обоих серверах, можно перейти к настройкам каждого из них.

Шаг два. Настройка на зарубежном VDS

На сервере в стране Х настройка очень простая. После того как вы запустили вышеуказанный скрипт и openvpn установился, все что нужно сделать - это отредактировать файл конфигурации, замените его следующим содержимым.

/etc/openvpn/server/server.conf
port XXXX # Порт на котором у вас работает openvpn
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-crypt tc.key
remote-cert-tls client
server 10.100.39.0 255.255.255.0
keepalive 10 120
persist-key
persist-tun
verb 3
sndbuf 0
rcvbuf 0
push "route 10.100.39.0 255.255.255.0"

Далее сделайте рестарт опенвпн сервера:

systemctl restart openvpn-server@server.service

И скопируйте клиентский ключ, который был создан при установке на российский VDS. Например, с помощью scp.

На этом всё. Настройка зарубежного сервера завершена.

Шаг три. Настройка российского VDS.

На российском vds после установки openvpn из скрипта уже работает впн-сервер (10.8.0.0/24). Мы его трогать не будем. Все что нам надо сделать - это запустить на российском vds еще и зарубежного open-vpn клиента.

Редактируем /etc/sysctl.conf

Втыкаем следующие строки:

net.ipv4.ip_forward=1
net.ipv4.conf.tun0.rp_filter=0
net.ipv4.conf.tun1.rp_filter=0

Строки net.ipv4.conf.tun0.rp_filter=0 и net.ipv4.conf.tun1.rp_filter=0 отключают проверку reverse path filtering для интерфейсов tun0 и tun1 соответственно. Можно ребутнуть сервер или ввести соответствующие команды.

Редактируем файл:

/etc/iproute2/rt_tables

И добавляем в него строку:

150     vpn_net
Здесь подробное объяснение зачем и что мы делаем (можно не читать)

Файл /etc/iproute2/rt_tables служит для определения имен пользовательских таблиц маршрутизации в Linux-системах.

  • Таблицы маршрутизации: Представьте, что у вас есть несколько маршрутов, по которым пакеты данных могут перемещаться в вашей сети. Таблицы маршрутизации позволяют организовать эти маршруты в группы, что упрощает управление и настройку сетевых соединений.

  • Зачем нужны пользовательские таблицы:

    • Разделение трафика: Вы можете направить разные типы трафика по разным маршрутам. Например, весь трафик VPN можно отправить через определенную таблицу, а остальной трафик — через другую.

    • Управление политиками: Таблицы могут использоваться для реализации различных сетевых политик, таких как маршрутизация на основе качества обслуживания (QoS) или балансировка нагрузки.

    • Управление несколькими сетевыми интерфейсами: Если у вас несколько сетевых интерфейсов, вы можете использовать разные таблицы для каждого из них.

Что значит число 150 и строка 150 vpn_net?

  • Число: Это просто уникальный номер, который вы присваиваете своей таблице. Вы можете выбрать любое число, кроме тех, которые уже зарезервированы системой (например, 255, 254, 253, 0).

  • Строка: Строка в формате "число имя_таблицы" связывает числовой идентификатор с понятным именем. В данном случае, вы создаете таблицу с именем "vpn_net" и присваиваете ей номер 150.

Зачем добавлять такую строку?

Предположим, у вас есть VPN-соединение, и вы хотите, чтобы весь трафик, направленный в VPN, проходил через это соединение. Вы можете создать отдельную таблицу маршрутизации для VPN-трафика и добавить в нее соответствующие маршруты. Затем, используя правила iptables или другие механизмы, вы можете перенаправлять весь трафик, предназначенный для VPN, в эту таблицу.

Теперь нам надо создать два скрипта, которые будут выполняться при старте зарубежного openvpn клиента и при остановке.

/etc/openvpn/server1_up.sh

/sbin/ip rule add from 10.8.0.0/24 table vpn_net
/sbin/ip route add default dev tun1 table vpn_net

/etc/openvpn/server1_down.sh

/sbin/ip rule del from 10.8.0.0/24 table vpn_net
/sbin/ip route del default dev tun1 table vpn_net

На оба скрипта вешаем

chmod +x /etc/openvpn/server1_up.sh и chmod +x /etc/openvpn/server1_down.sh

Теперь нам надо взять клиентский конфиг, который мы взяли на зарубежном сервере. Сменить ему расширение: вместо .ovpn написать .conf

mv my_client.ovpn my_client.conf

Положить в папку: /etc/openvpn/client и отредактировать примерно таким образом:

/etc/openvpn/client/my_client.conf
client
dev tun
proto udp
remote XX.XX.XX.XX YY YY # IP и порт зарубежного VDS
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
verb 3
script-security 2
up "/etc/openvpn/server1_up.sh"
down /etc/openvpn/server1_down.sh

# До этого место. Дальше не трогаем.
<ca>
-----BEGIN CERTIFICATE-----
wIBAgIJAL0WnyzV8N87MA0
......

Указываем, что у нас будут стартовать скрипты при запуске и остановке клиента.

Запускаем опенвпн-клиент

systemctl start openvpn-client@my_client

Добавляем новое правило iptables

iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o tun1 -j MASQUERADE

А старое nat правило, которое добавил установщик Nyr/openvpn-install, удаляем. Сохраняем iptables тем способом, которые есть в вашем *nix, так чтобы они сработали после загрузки. И делаем автостарт нашего клиента:

systemctl enable openvpn-client@my_client

Проверяем, что все работает, с помощью команд

ip route show table all|grep vpn_net
ip rule list| grep vpn_net
ip address

С помощью openvpn-install создаем необходимое кол-во опенвпн ключей.


Вариант II. OpenVPN + Vtun

Туннель трафика с помощью VTUN
Туннель трафика с помощью VTUN

В первом варианте у нас был openvpn + openvpn, но нам ничего не мешает соединить, например, российский VDS и зарубежный с помощью старого и доброго vtun. И точно так же туннелировать трафик

Шаг первый. Установка vtun на обоих серверах

Vtun можно собрать из исходников. Будем считать, что вы на обоих серверах vtun и openvpn поставили. Форвард пакетов разрешили, см. настройки у варианта № 1.

Шаг второй. Запуск vtun сервера на зарубежном сервере

Для сервера можно взять примерно такой конфиг и положить его в файл /etc/vtund.conf:

/etc/vtund.conf
options {
   port 5000;
   ifconfig   /sbin/ifconfig;
}

# Default session options
default {
   proto tcp;     # TCP protocol
   compress no;   # Compression is off
   encrypt no;    # ssh does the encryption
   speed 0;       # By default maximum speed
   keepalive yes;
   stat yes;
}

my_tunnel {
   passwd MY_STRONG_PASS;    # Password
   type  tun;                # IP tunnel
   proto tcp;                # TCP protocol
   up {
      ifconfig "%% 10.3.0.2 pointopoint 10.3.0.1 mtu 1500";
   };
   down{
      ifconfig "%% down";
   };
}

Открываем порт 5000 и добавляем SNAT правила, где to-source XX.XX.XX.XX это белый IP в стране Х.

-A INPUT -p tcp -m tcp --dport 5000 -j ACCEPT
-A POSTROUTING -s 10.3.0.0/24 -j SNAT --to-source XX.XX.XX.XX

Запускаем:

vtund -s

Проверяем, должен появиться интерфейс tun и ip.

ip address

Шаг три. Запуск vtun клиента и openvpn в России

Openvpn ставим как обычно, см. вариант 1.

А вот настройки vtun на российском сервере

/etc/vtund.conf
options {
   port 5000;

   # Path to various programs
   ifconfig   /sbin/ifconfig;
   ip  /sbin/ip;
}

# Default session options
default {
   compress no; 
   encrypt no; 
   speed 0; 
   keepalive yes;
   stat yes;
}


my_tunnel {
   passwd  PASS;      # Password
   type  tun;         # IP tunnel
   proto udp;         # TCP protocol

   up {
      # 10.3.0.1 локальный ip 
      # 10.3.0.2 удаленный ip
      ifconfig "%% 10.3.0.1 pointopoint 10.3.0.2 mtu 1500";
      ip "rule add from 10.8.0.0/24 table vpn_net";
      ip "route add default dev %% table vpn_net";

       

   };
   down{
      ip "rule del from 10.8.0.0/24 table vpn_net";
      ip "route del default dev %% table vpn_net"; 
      ifconfig "%% down";
   };
}

Запускаем командной:

vtund  my_tunnel ip_адрес_вашего_зарубежного_сервера

Точно так же как и с опенвпн маскарадим трафик:

iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o tun1 -j MASQUERADE

После этого все должно заработать. Если не работает, то убедитесь, что пинги проходят между 10.3.0.1 и 10.3.0.2 и смотрите логи.

Конфигурация vtun дана для примера. Там по желанию можно и трафик передавать по udp, шифровать, сжимать и т.д.


Вариант III. OpenVPN + tun2proxy

socks5 соединение
socks5 соединение

В третьем варианте мы закинем openvpn трафик в socks5 и так же выпустим наружу. Хотя с помощью tun2proxy можно туннелировать и в http прокси, поэтому даже зарубежный VDS не обязателен, достаточно иметь ssh доступ в стране Х или какую-нибудь http-проксю.

https://github.com/tun2proxy/tun2proxy

Tun2proxy - это туннельный интерфейс для HTTP- и SOCKS-прокси на Linux, Android, macOS, iOS и Windows:

  • HTTP‑прокси (без аутентификации, базовая и дайджест‑аутентификация)

  • Поддержка SOCKS4 и SOCKS5 (без аутентификации, аутентификация по имени пользователя и паролю)

  • Поддержка SOCKS4a и SOCKS5h (через функцию виртуального DNS)

  • Минимальная настройка конфигурации для маршрутизации всего трафика

  • Поддержка IPv4 и IPv6 

  • Механизм обхода GFW для определенных случаев использования

  • Поддержка SOCKS5 UDP

  • Встроенная поддержка проксирования DNS через TCP

Установка и настройка

Вся установка и настройка делается на сервере в России. На первом сервере. На втором (зарубежном сервере) лишь нужен ssh аккаунт для создания socks5 прокси.

Я поставил rust последнюю версию

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

И далее запустил установку

$HOME/.cargo/bin/cargo install tun2proxy

И он благополучно установился, проверил что все ок:

$HOME/.cargo/bin/tun2proxy --help

Почитал справку по использованию. Дальше я создал для проверки ssh socks5 tcp динамическую проксю такой командой:

ssh -D 14017 -q -C -N my-socks5-user@my-remote-server.com

Повесил на порт 14017. По хорошему, надо было бы udp socks5 делать (но мы же не ищем легких путей), и для теста так интереснее.

Далее запустил tun2proxy командой:

$HOME/.cargo/bin/tun2proxy --tun tun1 --proxy "SOCKS5://127.0.0.1:14017"

Потом поднял сетевой интерфейс, т.к. по умолчанию он отключен:

ifconfig tun1 up

Это и есть фишка tun2roxy, что он создает сетевой интерфейс. То есть если набрать, например ifconfig, то при включенном tun2roxy можно увидеть еще одну "сетевую карту", которую он создал на основе прокси. А если есть tun1, то можно уже делать все, что мы захотим, почти так же как и в предыдущих вариантах.

Интерфейс tun1, который создал tun2proxy
Интерфейс tun1, который создал tun2proxy на основе socks5 прокси

Проверил, что все работает такой командой:

curl --interface tun1 ifconfig.me

В ответ получил IP адрес своего зарубежного сервера. Все окей, трафик завернулся в tun1 и вышел из-за рубежа.

Теперь надо заставить openVPN ходить таким же макаром, чтобы выпустить наружу трафик openVPN через tun1 & socks5.

/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.tun0.rp_filter=0
net.ipv4.conf.tun1.rp_filter=0
net.ipv4.conf.all.route_localnet=1

В файл:

/etc/iproute2/rt_tables

Добавил строчку:

150     vpn_net

И ввел команды:

/sbin/ip rule add from 10.8.0.0/24 table vpn_net
/sbin/ip route add default dev tun1 table vpn_net

И дальше прикол, если просто замаскарадить трафик командой iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o tun1 -j MASQUERADE , то работать не будут DNS запросы, ведь они идут не по TCP. Как я и писал выше, обычный socks5 tcp прокси не очень-то и подходит. Так что перед тем как маскарадить, мне пришлось поставить dnsproxy и запустить его командой:

./dnsproxy -u 8.8.8.8:53

И сам tun2proxy на этот раз запустил командой, что указана выше, но с доп. ключом --dns direct и так же изменил настройку клиентского опенвпн, чтобы он с DNS запросами шел ко мне локально на сервер.

После этого все заработало и openvpn клиент вышел наружу через этот туннель.

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


  1. artsavel
    22.09.2024 13:42
    +21

    Просто трафик с вашего цода в РФ пока не попадает под фильтрацию, но Вы молодец, расскажите об этом им)


    1. Rilkener Автор
      22.09.2024 13:42
      +3

      Ха)

      На мой взгляд, даже если датацентру стукнет в голову начать заниматься этой ерундой, то запаряться они фильтровать вариант № 3. Особенно если будет много socks5 + балансировщик.


      1. Gansterito
        22.09.2024 13:42
        +8

        Ни дата-центр, ни вышестоящие операторы не принимают решения о блокировке трафика по ФЗ-90. Кого, когда и в какой порт ТСПУ включать решает местный ГРЧЦ. И дата-центры через ТСПУ ШПД не включаются, а именно там режется существенная часть протоколов и замедляется Youtube.


        1. undefined400
          22.09.2024 13:42
          +2

          Я, конечно, не знаю, но на на моём VPS в российском ДЦ (крупный хостинг), все замедлялось/блокировалось без соответсвующих утилит (firefox + ssh -D 1080 ). С утилитой все начинало работать


          1. Gansterito
            22.09.2024 13:42
            +3

            Значит у этого хостинга есть аплинк, ВЕСЬ стоящий за ТСПУ. Вариант менее вероятный - хостинг еще имеет операторскую лицензию и живых абонентов, и его весь заставили ТСПУшится.


            1. Metotron0
              22.09.2024 13:42
              +2

              У некоторых отдельные адреса то блокируются, то перестают. Тот же рутрекер. Это я не знаю, как объясняется.


      1. DennisP
        22.09.2024 13:42
        +10

        А вы вообще пробовали выходить в интернет только через ВПН на рос. сервере? Вполне возможно, что внешний сервер вам и не нужен


    1. Gansterito
      22.09.2024 13:42
      +9

      Нужно разделить фильтрацию по ФЗ-139/149 (что-то там про защиту детей от вредоносного контента) и ФЗ-90 (так называемый суверенный интернет).

      VPN, т.е. “application” по сигнатурам блокируется по ФЗ-90 на ТСПУ, точнее - на ТСПУ ШПД. ЦОДы в РФ этим ТСПУ не закрываются, так что схема будет жить, пока не заблокируют или не замедлят российское или зарубежное плечо.


      1. UranusExplorer
        22.09.2024 13:42
        +1

        ЦОДы в РФ этим ТСПУ не закрываются

        Законопроект № 1214072-7:

        Новые внесенные в проект дополнения вводят:

        • Собственники или иные владельцы точек обмена трафиком при подключении к их точкам обмена трафиком сетей связи, с использованием которых предоставляется доступ к «Интернет», обязаны обеспечивать установку ТСПУ в точке обмена трафиком и соблюдать технические условия установки технических средств противодействия угрозам.

        • Порядок установки, эксплуатации и модернизации в точке обмена трафиком технических средств противодействия угрозам утверждается Правительством.

        • обязаны обеспечить пропуск трафика на подключенную сеть связи через ТСПУ.


        1. Gansterito
          22.09.2024 13:42
          +1

          Не увидел упоминания ЦОДов.


          1. UranusExplorer
            22.09.2024 13:42
            +1

            ЦОДы подключены к точкам обмена трафиком.


            1. Gansterito
              22.09.2024 13:42
              +1

              Все ЦОДы???


              1. mayorovp
                22.09.2024 13:42
                +2

                А куда ещё ЦОД может быть подключен? Или точка обмена трафиком, или обычный провайдер. И там, и там ТСПУ.


                1. Gansterito
                  22.09.2024 13:42
                  +3

                  К сожалению, это Ваши заблуждение. Не в том, куда подключены ЦОДы, в другом.

                  ГРЧЦ, как и многие гос учреждения, сильно оторваны от реальности. Обязав операторов устанавливать ТСПУ ШПД в сторону абонентских сегментов, они с удивлением обнаружили, что огромная часть трафика абонентов через ТСПУ не проходит. Выяснилось, что через точки обмена трафиком абоненты получают трафик Google, CloudFlare и еще пары зарубежных контентщиков. Получалось так: некий оператор берет IP-транзит у Ростелеком, и там, наверху, стоит ТСПУ. Но осталась лазейка для трафика.
                  Именно поэтому вдогонку делали требования для IX, чтобы увидеть весь трафик.
                  А причем тут ЦОДы? Не при чем. Поставить ТСПУ - это полдела, нужно на нем получить конкретный порт под конкретного участника (для IX) или присоединенного оператора (для IP-транзита) или для своего сегмента (если абоненты свои). Вот под ЦОДы ГРЧЦ портов не выделяет, т.к. основная задача - видеть трафик абонентов, а в ЦОДах их официально нет.
                  Итого: ЦОДы официально не ТСПУшатся, если их трафик и попадает на ТСПУ, то вместе с другим, абонентским трафиком.


  1. VenbergV
    22.09.2024 13:42
    +10

    Вы уж простите, но есть пара замечаний.
    1. Туннелировать трафик надо начинать от клиента. Т.к. фильтрация трафика начинается сразу на стороне провайдера. Просто еще не все провайдеры это исполняют в полном объеме. И у вас возникла ошибка выжившего.
    2. При довольно серьезном подходе к написанию статьи все же следовало бы отказаться от устаревших "комбайнов" по установке Openvpn. Ubuntu 24/Debian 12, с настроенным nftables будут сломаны. Ну и dh ключи при использовании ec криптографии ненужны. Так же easyrsa уже можно не использовать пару лет. Т.к. возможно обойтись fingerprint.


    1. Rilkener Автор
      22.09.2024 13:42
      +1

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

      А разве провайдеры фильтруют трафик, который идет на российский IP, в рос. датацентр?


      1. M_AJ
        22.09.2024 13:42
        +5

        Время от времени блокировали. Люди в чатах жаловались на массовый отвал ВПН внутри страны.


      1. aborouhin
        22.09.2024 13:42
        +3

        Как владелец внутрироссийского OpenVPN, на опыте подтверждаю, - бывало, но эпизодически. Самые системные проблемы были с Калининградом (но туда были только эпизодические командировки, так что тоже длительной статистики нет).

        Хуже другое - пользователи VPN тоже имеют привычку пересекать гос. границу, и тогда на пути к российскому серверу на них действуют все трансграничные блокировки. Вручную подключаться к разным серверам из России и из-за границы - неудобный костыль (для технически неграмотных пользователей часто непреодолимый), а раскидывать их на автомате по GeoIP - нетривиальная задачка.


      1. Sap_ru
        22.09.2024 13:42

        Совершенно точно и однозначно да. В большинстве регионов РФ заблокированы и внутрироссийские VPN. Количество таких регионов и провайдеров расширяется. Официально VPN теперь только по белым спискам от организаций.


        1. qenoamej
          22.09.2024 13:42
          +1

          В большинстве регионов РФ заблокированы и внутрироссийские VPN.

          Заблокированы vpn-протоколы или vpn-сервисы?

          У меня три офиса в разных регионах РФ соединены через wireguard, ничего не блокировалось даже временно, за доступностью следит zabbix круглосуточно.


          1. arachnid
            22.09.2024 13:42
            +2

            ЛО, ростело - блокируется и openvpn, и wg на уровне протокола.


        1. Pilotv
          22.09.2024 13:42
          +2

          А Вы простите уверены в этом утверждении? Ибо выходит что в большинстве регионов полегли корпоративные VPN сервисы , а про это никто и не знает. Про формирование каких то белых списков тоже никто не слышал . Ну у про поломку всякий домашних решений формата VPN дом-дача , тоже нет криков


          1. uuger
            22.09.2024 13:42
            +3

            Про формирование каких то белых списков тоже никто не слышал

            расскажите этим никто про поиск в интернете

            О принятии мер в отношении сервисов обхода ограничения доступа к противоправному контенту

            О принятии мер в отношении сервисов обхода ограничения доступа к противоправному контенту
            3 сентября 2021 года
            2 сентября в соответствии с правилами централизованного управления сетью связи общего пользования, утвержденными постановлением Правительства Российской Федерации от 12 февраля 2020 года № 127, было принято решение о блокировке еще 6 нарушающих российское законодательство сервисов VPN (Hola!VPN, ExpressVPN, KeepSolid VPN Unlimited, Nord VPN, Speedify VPN, IPVanish VPN).
            Использование сервисов обхода блокировок приводит к сохранению доступа к запрещённой информации и ресурсам, создаёт условия для незаконной деятельности, в том числе связанной с распространением наркотиков, детской порнографии, экстремизма и склонением к суициду.
            Для исключения нарушения работы программного обеспечения и приложений, не нарушающих российское законодательство и использующих VPN-сервисы в технологических целях, были сформированы «белые списки» для предотвращения их блокировки.
            Роскомнадзором получены сообщения от 64 отраслевых организаций, 27 из которых используют упомянутые VPN-соединения для обеспечения 33 технологических процессов. Представлены более 100 ip-адресов с целью исключения их из политик ограничения доступа.
            Ранее Роскомнадзор по тем же основаниям ограничил работу VyprVPN и OperaVPN.
            Применение технических средств против сервисов обхода блокировок является эффективным и оправданным механизмом. Включенные в «белые списки» технологические процессы российских компаний продолжили бесперебойную работу при полной блокировке VPN-cервисов, нарушающих законодательство РФ.
            Время публикации: 03.09.2021 10:10

            https://rkn.gov.ru/news/rsoc/news73836.htm
            или
            https://web.archive.org/web/20231004090648/https://rkn.gov.ru/news/rsoc/news73836.htm


            1. Pilotv
              22.09.2024 13:42
              +1

              Ваш комментарий какое отношение имеет к этой Вашей фразе "Совершенно точно и однозначно да. В большинстве регионов РФ заблокированы и внутрироссийские VPN." В постановлении на которое Вы ссылаетесь речь идёт про плокировку сервисов ! VPN для обхода блокировок . Какой обход блокировок для внутрироссийских VPN ? И потом Вам уже ре один человек отписал что у них VPN на много толчек во многих регионах работает . Так что совершенно точно , что в большинстве регионов РФ внутрироссийские VPN не заблокированы.


              1. uuger
                22.09.2024 13:42
                +1

                В постановлении на которое Вы ссылаетесь речь идёт про плокировку сервисов ! VPN для обхода блокировок . Какой обход блокировок для внутрироссийских VPN ?

                попробуйте вчитаться внимательнее:

                программного обеспечения и приложений, не нарушающих российское законодательство и использующих VPN-сервисы в технологических целях

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

                Я напомню, что "государственная" база геолокаций IP собирается только 3 недели, а общедоступные сервисы часто содержат неточные данные и веерные блокировки приводят к масштабным сбоям в рунете. Чтобы такого не просиходило, весь крупный бизнес ещё к началу 2022 года подал списки адресов своей "критической инфраструктуры" в РКН. То, что не задевает мелочёвку означает только то, что их адреса достаточно точно мэппятся с российскими координатами

                https://www.interfax.ru/russia/940335


    1. dsoastro
      22.09.2024 13:42
      +3

      Так от клиента он в openvpn заварачивается до российского сервера, разве нет?


      1. Sap_ru
        22.09.2024 13:42

        РКН блокируют OpenVPN, как протокол, вне зависимости от того, куда подключаетесь.


        1. lex899
          22.09.2024 13:42
          +2

          Не блокирует. Наблюдали кратковременные проблемы при начале блокировок, но сейчас все работает.


          1. lea
            22.09.2024 13:42
            +1

            Только что протестил. OpenVPN (proto udp). Пакеты в сторону сервера уходят, обратно - по нулям.


            1. Rilkener Автор
              22.09.2024 13:42
              +1

              А сервер где физически находится? В России? И как называется дата-центр куда не доходят пакеты?


              1. lea
                22.09.2024 13:42
                +2

                Сервер не в РФ (название ДЦ говорить не буду, извините).

                До 23 августа всё работало без проблем. Затем какое-то время (не меньше недели) наблюдалось такое поведение: vpn подключается, но как только кол-во трафика, полученное клиентом от сервера, превышает 4 килобайта - клиент перестает получать пакеты. Сейчас даже 4 кб входящего трафика нет, режут соединение сразу.

                Дальше подробно не следил, т.к. сделал собственный примитивный обфускатор трафика. Через него и продолжаю пользоваться openvpn.


                1. outlingo
                  22.09.2024 13:42
                  +2

                  Сервер не в РФ

                  Ну вот сами и ответили. Если клиент и сервер в РФ - все замечательно работает. Да, бывали глюки - но подозреваю скорей из-за самодеятельности провайдеров которые пускали трафик РФ-РФ через внешние каналы.


            1. lex899
              22.09.2024 13:42
              +1

              У нас 40+ каналов по РФ поднято прямо сейчас (соответственно разные города и провайдеры), за рубеж всего один канал (Германия), с ним тоже проблем нет, протокол udp. Канал с tcp у коллег до Германии резали одно время.


              1. lea
                22.09.2024 13:42

                И вы не обращались в ркн для внесения ваших vpn подключений в белый список? Или провайдер в ваших интересах?


                1. lex899
                  22.09.2024 13:42
                  +2

                  Мы не обращались, но интернет везде заведён на юрлиц, могу предложить что блокировки каким-то образом нацелены на физиков. Либо нам сильно везёт.

                  Моя личная линия openvpn (тоже Германия, ip физлица) тоже работает, Америка с домашнего провайдера работает, с мобильного блокируется.

                  Мне кажется что мелких vpn сетей у бизнеса на Руси в том или ином виде довольно много, повально их резать может быть вредно.


                  1. arachnid
                    22.09.2024 13:42
                    +3

                    на тспу уже спланировано выделить еще 60 миллиардов - так что охватят всех. тем более, что режут по сигнатурам протоколов, а не по адресам


          1. arachnid
            22.09.2024 13:42
            +3

            ЛО, ростело. блокируются протоколы openvpn, wg - и неважно, куда. за границу или внутри страны. видел уже не одно сообщение, что у все большего количества домовых провайдеров появляется тспу


            1. lex899
              22.09.2024 13:42
              +1

              Навскидку проверил ростелеком - Курган, Пермь, ХМАО, Новосибирск, Томск, Салехард, Тюмень работают. В ЛО у нас нет площадки, надо поспрашивать у коллег. Возможно для физиков и юриков по разному работает.


              1. arachnid
                22.09.2024 13:42
                +2

                скорее, просто пока у государства нет такого количества тспу для охвата всех провайдеров. у меня openvpn отвалился примерно месяц назад. именно как протокол


                1. andersong
                  22.09.2024 13:42

                  Интересно, сколько нужно ТСПУ для полного охвата?


                  1. arachnid
                    22.09.2024 13:42
                    +1

                    все зависит от пропускной способности сей коробочки. судя по тому, что нет никаких характеристик - "тайна сия велия есть". но полагаю, что пока на всё не хватает. иначе бы в критических ситуация не включали их в работу по белым спискам


                1. uuger
                  22.09.2024 13:42
                  +1

                  просто пока у государства нет такого количества тспу для охвата всех провайдеров

                  при этом, само государство утверждает обратное:
                  РКН: все узлы связи в России на 100% оборудованы средствами противодействия угрозам на базе оборудования ТСПУ


                  1. arachnid
                    22.09.2024 13:42
                    +1

                    ну кто мы такие, что бы не верить государству. хотя на что тогда оно же планирует потратить 60 лярдов?


                    1. uuger
                      22.09.2024 13:42
                      +2

                      есть подозрение, что не все йогурты одинаково полезны узлы ТСПУ одинаково производительны - на первых этапах развертывания было достаточно уметь блокировать по реестру, затем потребовалось уметь работать с сигнатурами на основе заголовков пакетов, потом дошло дело до анализа паттернов в полном трафике. Предполагаю, что 60 ярдов планируют потратить на обновление парка железа до последнего (на текущий момент) поколения


                      1. arachnid
                        22.09.2024 13:42
                        +1

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


            1. czz
              22.09.2024 13:42
              +3

              Хм. СПБ, Ростелеком. Блокируется wg за рубеж, но работает внутри страны.


              1. arachnid
                22.09.2024 13:42

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


                1. czz
                  22.09.2024 13:42

                  А вот ютуб не работает у меня :)


                  1. arachnid
                    22.09.2024 13:42

                    "аналогично" (с). эх, зря с сэкономил на usb порту кинетика.... :(


                    1. mltk
                      22.09.2024 13:42

                      Перешей его в openwrt :)

                      Ещё есть вариант без usb порта на кинетике: с awg на кинетике (начиная с 4.20бета) и отправкой всего гугла(с ютубом) по ip подсетям в wg.


    1. HomeMan
      22.09.2024 13:42

      Полностью с Вами согласен.

      И не понимаю зачем им нужен OVPN для каких-то обходов? В количестве 2-ух штук.

      OVPN прекрасен своей маршрутизацией, и прочими CCD. Для работы это просто идеал.

      Кстати, там в скрипте ключ DH просто гвоздями прибит.

      А для обхода кочек есть прекрасный три икса рей на одном VPS.


      1. HomeMan
        22.09.2024 13:42

        # Create the DH parameters file using the predefined ffdhe2048 group
        	echo '-----BEGIN DH PARAMETERS-----
        MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz
        +8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a
        87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7
        YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi
        7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD
        ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==
        -----END DH PARAMETERS-----'

        этот DH вот из того скрипта.

        Я в чём то ошибся?


        1. mayorovp
          22.09.2024 13:42
          +2

          Это не ключ, а набор параметров. Ключей как входных данных в DH вообще нет.


  1. undefined400
    22.09.2024 13:42
    +6

    Можно же обойтись встроенной функцией tun2proxy --dns virtual? Когда поступит dns пакет с запросом в tun, Tun2proxy прорезолвит адрес, назначив его из приватного пространства 198.18.0.0/15 в ответном днс пакете.
    В дальнейшем, при запросе соединения на полученный адрес, он будет сопоставлять его с реальным адресом по своей внутренней таблице.


    1. Rilkener Автор
      22.09.2024 13:42
      +1

      Спасибо.


  1. xsash
    22.09.2024 13:42
    +4

    Тоже пришлось использовать промежуточный VPS, но сделал проще. Настроил UDP редирект с VDS1 на VDS2


    1. Rilkener Автор
      22.09.2024 13:42

      Спасибо. А как делали редирект? Просто DNAT? Можете рассказать?


      1. xsash
        22.09.2024 13:42
        +6

        Проще, собрал бинарь и запустил как сервис
        https://github.com/justinb01981/tiny-webrtc-gw/blob/master/udp_redirect.c

        ./udp_redirect 0.0.0.0 1234 xxx.xxx.xxx.xxx 1234

        Кроме смены IP на VDS еще пришлось "пофиксить" MTU в конфиге OpenVPN. Добавил mssfix 1200


        1. Rilkener Автор
          22.09.2024 13:42

          Супер. Прикольно. Попробую.


        1. avelor
          22.09.2024 13:42
          +1

          Мне кажется два правила в айпитаблях - dnat и snat проще. Пример из интернетов

          iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination хост2:3000 iptables -t nat -A POSTROUTING -p tcp -d хост2 --dport 3000 -j SNAT --to-source хост1


        1. gudvinr
          22.09.2024 13:42
          +1

          Но зачем...

          У вас так трафик ходит из ядра в юзерспейс и наоборот, когда можно просто через маршрутизацию. Тогда он вообще из ядра не будет выходить, так намного эффективнее и пропускная способность будет выше


          1. xsash
            22.09.2024 13:42
            +1

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


    1. undefined400
      22.09.2024 13:42
      +1

      Можно еще проще: на промежуточном поставить аналог gdpi... Но, если сделали blackhole <IP> на уровне провайдера - тогда зарубежный VPS