C некоторых пор к задачам по обходу блокировок по IP страны добавились проблемы работы специализированного лицензионного софта. Последние не всегда решаются с помощью VPN (в переводе виртуальной частной сети [предприятия]). Кроме того, на провайдеров VPN, особенно предоставляющих бесплатный сервис, сложно полагаться в вопросах конфиденциальности. Поэтому разумно рассмотреть ручное решение с помощью удаленной виртуальной машины (VPS), которая имеет доступ в Интернет из страны её физического расположения.

Автор в свое время перебрал несколько вариантов и остановился на создании локальной сети из трех машин. Здесь будет изложен наипростейший вариант решения наглядным способом. Нужно собрать и сконфигурить локальную сеть в простейшей конфигурации, например, такую:
         +-----------+              +-------------+      +-----------------+
И-нет <->| VPS(Linux)|<-ssh tунель->| Mocт(Linux) |<-ЛС->| клиент(Windows) |
         +-----------+              +-------------+      +-----------------+

Ресурсы:
— Домашний и-нет (LAN)
— VPS сервер, арендованный в другой стране
— “Мост” — дополнительный компьютер с двумя сетевыми картами.
Для “Моста” с двумя сетевыми гнёздами можно использовать какой-нибудь старый компьютер и переходник USB-LAN. Там ставим Линукс семейства Dеbian и получаем машину с двумя сетевыми интерфейсами. Первый сетевой интерфейс(eth0) должен выходить в домашний Интернет, а второй(eth1) в локальную сеть с клиентской машиной (используемые в статье имена eth0/eth1 на практике будут другими).

Теперь надо арендовать VPS. Какой и как платить – каждый решает сам. Лучше купить, на бесплатных серверах обязательно возникают какие-либо сложности. Минимальной конфигурации за $6-$7 хватает. После покупки обычно предоставляется web-страница, где можно получить IP адрес вашего сервера и задать пароль пользователя root. Следует добавить, что решение может быть испробовано для любого удаленного Линукс сервера любой конфигурации, к которому вы имеете sudo доступ, например, на работе. Но здесь в качестве примера я опять рассматриваю VPS с Линукс семейства Dеbian.

Итак, на “Мосте” запускаем терминал, входим как root, набираем пароль, в файле /etc/sysctl.conf пишем net.ipv4.ip_forward = 1 и ставим требуемый набор инструментов(список намеренно избыточен):
su 
sysctl -w net.ipv4.ip_forward=1
apt-get install aptitude iputils net-tools bridge-utils uml-utilities

Затем с “Моста” входим на VPS по терминалу как root с паролем, указав его IP (далее $VPS_IP) и проводим настройки, указанные выше:
ssh root@$VPS_IP
sysctl -w net.ipv4.ip_forward=1
apt-get install aptitude iputils net-tools bridge-utils uml-utilities


Интерфейсы, по которым осуществляется выход в Интернет на “Мосте” и VPS, мы не трогаем!

Каждый раз при перезагрузке VPS сервера исполняем следующие команды.
tunctl -t tap0 
ifconfig tap0 192.168.0.1/24

Здесь мы организуем виртуальный интерфейс(tap0) для доставки интернетовских пакетов при помощи ssh соединения

При [пере]подключении к VPS серверу исполняем следующие команды:
iptables -F && iptables -X 
iptables -t nat -A POSTROUTING ! -d 192.168.0.0/24  -j MASQUERADE


Так мы перенаправляем наши пакеты в интернет сервера VPS. Ключ MASQUERADE означает, что оригинальный IP адрес источника меняется на IP адрес VPS страны его реального размещения.

Выходим обратно на “Мост” машину и конфигурим уже сетевой мост между виртуальным интерфейсом(tap0) и интерфейсом локальной сети(eth1) для связи с клиентской машиной.
exit
tunctl -t tap0 
ifconfig tap0 0.0.0.0 promisc up
ifconfig eth1 0.0.0.0 promisc up
brctl addbr br0 
brctl addif br0  eth1 tap0
ifconfig br0 192.168.0.2/24 up
ssh -o Tunnel=ethernet -f -w 0:0 root@$VPS_IP true

Здесь оба интерфейса поднимаются в режиме захвата всех пакетов, затем объединяются в мост-интерфейс под именем br0. Теперь уже этому интерфейсу назначается адрес 192.168.0.2. Сервис ssh доставляет интернет пакеты с VPS на “Мост”, где они перенаправляются на клиентскую машину. С точки зрения теории здесь перенаправление осуществляется на канально-сетевом уровне, в то время как на VPS это делается на транспортном уровне.
Проверяем, что ping 192.168.0.1 c “Моста” и ping 192.168.0.2 с VPS проходят.

Кратко о настройке клиентской машины. Ей следует назначить адрес из стандартного диапазона 192.168.0.0/24. Статически для Windows: Win-R, запустить ncpa.cpl; выбрать последовательно: Свойства Адаптера(в сети), Сеть, IP версии 4(TCP/iPv4), Свойства; в открывшемся диалоге надо задать адрес 192.168.0.3, маску подсети 255.255.255.0, основной шлюз 192.168.0.1 и DNS-сервер, например, 8.8.8.8 (или другой известный)

Теперь можно войти с клиентской машины в И-нет. Любой софт от любой ОС определяет ее как находящуюся в стране размещения VPS. Единственным недостатком решения является скорость.
Но это плата за надежность, даже Apple Mac не сможет найти ничего кроме шлюза 192.168.0.1 для выхода в сеть.

Всё, основная цель достигнута. Далее следует написать скрипты, уйти с root на пользователя c sudo, настроить беспарольный вход ssh по ключу, организовать раздачу динамических адресов и возможно поставить прокси для быстрого доступа в И-нет с клиентского компьютера (или другого в созданной локальной сети). Но это уже техника.

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


  1. ky0
    28.07.2022 18:54

    Момент, когда VPN-туннеля было достаточно, стремительно подходит к концу. Следующий этап в соответствующем списке «вы находитесь здесь», если помните — блокировка по фингерпринтам протоколов и белые списки. Немного перед ним — зажимание всего подряд по скорости (в этом случае SSH-коннект к терминалу не страдает, в отличие от передачи тяжёлых данных).

    Поэтому рассказывать надо, имхо, про обфускацию самого факта использования туннеля. Ну, знаете, шэдоусокс какой-нибудь, Cloak


    1. fronda Автор
      28.07.2022 19:28

      Здесь не эти задачи решаются, у людей купленный софт блокируется. Про туннель надо подробнее..


      1. Nikopol25
        28.07.2022 21:20
        +1

        А зачем использовать компьютер, почему не взять mikrotik или любой роутер поддерживающий openwrt?


        1. select26
          29.07.2022 09:25
          +1

          Для этого же нужно читать документацию!


    1. PKav
      29.07.2022 01:26
      +1

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


      1. ky0
        29.07.2022 08:22
        +2

        Каким фингерпринтам? Да примерно тем же самым, по которым блокируют QUIC и DTLS. Читать первые несколько байт у пакетов ТСПУ вполне способно.


      1. select26
        29.07.2022 09:28

        TLS fingerprint, например, поддерживается давным давно многими межсетевым экранами из коробки. Даже есть уже cloud services.

        Мы у себя в компании уже пару лет как протестировали и используем на 1.5M RPM. Вполне рабочее решение.

        Так что, к сожалению, это не фантастика.


        1. PKav
          29.07.2022 11:43

          Так то межсетевой экран, а у провайдеров маршрутизатор типа ASR от Cisco, способный пропускать сотни гигабит трафика. И его, с учётом демонтажа GGC будет становиться все больше. Бонусом санкции и запрет на поставку оборудования в Россию. Это нереально анализировать целиком.


          1. select26
            29.07.2022 14:48

            Я, может быть, открою вам новый мир. Почитайте что такое CORERO NTD.

            Лёгким движением ноги, маршрутизатор превращается...


            1. PKav
              29.07.2022 14:57

              Решение от DDoS? Ну, для предприятий с одной тупиковой автономной системой, наверное, подходит, а провайдеру его куда ставить?


              1. select26
                29.07.2022 16:03

                А вы почитайте все же. Там и схемы включения есть. Ваш вопрос сразу же и закроется.


                1. PKav
                  29.07.2022 16:31
                  +1

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


                  1. select26
                    31.07.2022 09:58
                    +1

                    Вы не прочитали 8).
                    Там схемы включения описаны.
                    У нас, например, 3 ISP X 10GE. И все это счастье закрывается одним апплаенсом (1+1 горячий резерв).
                    И решение тривиальное и красивое.
                    Все таки, документация полезная штука.


                    1. PKav
                      31.07.2022 10:00

                      Так вы провайдер или компания? У вас тупиковая автономная система или транзинтная?


  1. lexore
    28.07.2022 21:17

    А "Mocт(Linux)" обязательно делать мостом? Нельзя ли его делать обычным роутером?


  1. garbagecollected
    28.07.2022 23:34

    А зачем делать это через ssh? почему бы не сделать это через openvpn? настраивается он проще, можно поставить на 22 порт. Ну а если нравится ssh, то shuttle решает вопрос в одну команду...


    1. select26
      29.07.2022 09:23
      +2

      И можно ли обойтись без этого важного компонента: "клиент(Windows)".

      Откровенно говоря, как виду решение с Виндоус, так очередной велосипед.

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


  1. FSA
    29.07.2022 14:31

    Для "моста" не нужно никаких двух сетевых карт. Достаточно на нем поднять Коннект к VPN и настроить маршрутизацию через тоннель. Дальше просто меняете адрес шлюза на сетевой плате вашего ПК на адрес "моста". Ещё можно с DNS заморочиться, если желаете. Но это уже другая история.


    1. select26
      29.07.2022 14:49
      +1

      Да и моста то самого не нужно для решения обозначенной задачи.

      Вообще прокси достаточно для конкретного приложения.


      1. FSA
        29.07.2022 16:11

        Софт можно и сменить, а вот лишнее железо уже куплено. На счёт отдельной железки тоже сомнительно, но, так можно получить дополнительные удобства.