Создание виртуального VPN-маршрутизатора c SoftEther VPN и Shadowsocks-туннелированием [обновлено 12.01.2024]

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

Оглавление

  1. Постановка задачи
  2. Архитектура
  3. VPN-маршрутизатор
  4. Создание и начальная настройка ВМ VM-SoftEther-VPN-router
    1. Шаг 1 — Добавление сетевых адаптеров
    2. Шаг 2 — Настройка сетевых адаптеров
  5. Развертывание Shadowsocks клиента в ВМ VM-SoftEther-VPN-router
    1. Шаг 1 — Развертывание Docker и создание внутренней сети для docker-контейнеров
    2. Шаг 2 — Создание конфигурации для Shadowsocks клиента
    3. Шаг 3 — Развертывание docker-контейнера с Shadowsocks клиентом
  6. Развертывание SoftEther VPN сервера в ВМ VM-SoftEther-VPN-router
    1. Шаг 1 — Установка сервера SoftEther VPN
    2. Шаг 2 — Создание системного сервиса и запуск SoftEther VPN
    3. Шаг 3 — Загрузка менеджера управления сервером SoftEther VPN
    4. Шаг 4 — Настройка языка для менеджера управления сервером SoftEther VPN
    5. Шаг 5 — Создание профиля подключения в менеджере управления сервером SoftEther VPN
    6. Шаг 6 — Настройка сервера SoftEther VPN в менеджере управления
  7. Тестирование VPN-маршрутизатора
  8. Ресурсы

Постановка задачи

В филиале Contoso Corporation локальной сети развернуть VPN-маршрутизатор на базе сервера SoftEther VPN для доступа к корпоративным сервисам. Все рабочие станции должны быть в локальной сети подключены к VPN-маршрутизатору. На рабочих станциях не должно быть никакого дополнительного ПО для доступа к корпоративной сети Contoso, доступ к ресурсам должен быть прозрачен для любого клиента. Передаваемые данные через сеть Интернет должны быть зашифрованы на уровне VPN-маршрутизатора. VPN-маршрутизатор должен работать ОС версии не ниже Ubuntu Server 22.04 LTS.

Архитектура

На сервере сontoso-server необходимо развернуть WireGuard VPN сервер и Shadowsocks прокси. Как это сделать указано в публикации Создание корпоративной сети VPN на базе решений SoftEther VPN/WireGuard с Shadowsocks-туннелированием.

В филиале локальной сети Contoso Corporation развертывается виртуальная машина VMWare VM-SoftEther-VPN-router с двумя сетевыми интерфейсами, которая выступает в качестве SoftEther VPN маршрутизатора. ВМ (виртуальная машина) работает под ОС Ubuntu 22.04.2 LTS (Jammy Jellyfish). Вместо ВМ подойдет одноплатный компьютер с двумя проводными Ethernet интерфейсам, работающий на дистрибутиве основанным на ОС Ubuntu или Debian, например Armbian.

Незашифрованный сетевой трафик рабочих станций направляется в VPN-маршрутизатор, затем поступает в локальный SoftEther VPN сервер где и зашифровывается, после этого на этом же узле передается Shadowsocks клиенту по протоколу SOCKS5. Далее через сеть Интернет сетевой трафик передается в Shadowsocks прокси расположенный на сервере сontoso-server.

Shadowsocks клиент — реализация от проекта GitHub shadowsocks/shadowsocks-rust.

Способ развертывания:

  • сервер SoftEther VPN на VM-SoftEther-VPN-router: нативно из исходников;
  • Shadowsocks клиент на VM-SoftEther-VPN-router: как docker-контейнер — образ ghcr.io/shadowsocks/sslocal-rust.

VPN router based on SoftEther VPN with Shadowsocks proxy
Схема корпоративной сети Contoso Corporation с SoftEther VPN маршрутизатором и Shadowsocks прокси (в формате Visio)

VPN-маршрутизатор

VPN-маршрутизатор — это маршрутизатор с дополнительным ПО, в задачу которого входит организация VPN туннеля до VPN сервер. Сетевой трафик весь или частично поступающий в VPN-маршрутизатор зашифровывается и передается по VPN туннелю, это является основной задачей VPN-маршрутизатора. Дополнительно VPN-маршрутизатор избавляет от необходимости каждый раз устанавливать на каждое рабочее место VPN-клиент, в особенности это играет большую роль в случае использование различных ОС. VPN-маршрутизатор по отношению к пользователю рабочей станции работает по принципу «включил и забыл», т.е. не требует от пользователя выполнение каких либо настроек и действий для его использования. В отличие от прямого доступа к сети Интернет, необходимо помнить о снижение скорости и увеличение отклика до различных Интернет-ресурсов. Это связанно с тем, что сетевой трафик дополнительно приходится шифровать и передавать на удаленный VPN-сервер.

Создание и начальная настройка ВМ VM-SoftEther-VPN-router

Шаг 1 — Добавление сетевых адаптеров

Выполняем установку Ubuntu 22.04.2 LTS в ВМ, затем добавляем в конфигурацию ВМ второй сетевой адаптер. Сетевой адаптер добавляется в настройках Virtual Machine Settings, кнопка Add…

VPN router based on SoftEther VPN with Shadowsocks proxy
Настройки виртуальной машины с двумя сетевыми адаптерами

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

VPN router based on SoftEther VPN with Shadowsocks proxy
Подключение к сетям сетевых адаптеров виртуальной машины

После запуска ВМ VM-SoftEther-VPN-router выполним команду  ip a  для определения наименования сетевых интерфейсов.

Результат выполнения команды ip a
root@ubuntu:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:23:51:5b brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.50.18/24 metric 100 brd 192.168.50.255 scope global dynamic ens32
       valid_lft 84730sec preferred_lft 84730sec
    inet6 fe80::20c:29ff:fe23:515b/64 scope link
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:0c:29:23:51:65 brd ff:ff:ff:ff:ff:ff
    altname enp2s2
В операционной системе доступно два сетевых адаптера с именами ens32 и ens34. Адаптер ens32 подключен к офисному маршрутизатору (подсеть 192.168.50.0), получен IP-адрес 192.168.50.18. Адаптер ens34 подключен к изолированной виртуальной сети VMnet2, IP-адрес отсутствует т.к. не назначен вручную.

Шаг 2 — Настройка сетевых адаптеров

Для настройки сетевых адаптеров используется утилита  netplan , в случае отсутствия установить пакет  netplan.io . Команда установки пакета:

$ sudo apt-get update
$ sudo apt-get install -y netplan.io mc

Где пакет  mc  используется для редактирования текстовых файлов, в него входит редактор  mcedit .

После установки, по пути  /etc/netplan  должен быть доступен конфигурационный файл 00-installer-config.yaml в формате YAML.

Содержимое файла 00-installer-config.yaml:

# This is the network config written by 'subiquity'
network:
  version: 2
  renderer: networkd
  ethernets:
    ens32:
      dhcp4: yes

Зададим другие настройки для сетевого интерфейса ens32 и добавить конфигурацию для ens34.Открываем файл 00-installer-config.yaml в редакторе  mcedit  командой:

$ sudo mcedit /etc/netplan/00-installer-config.yaml

И заменяем содержимое на следующий итоговый вариант:

# This is the network config written by 'subiquity'
network:
  version: 2
  renderer: networkd
  ethernets:
    ens32:
      dhcp4: yes
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
    ens34:
      dhcp4: no
      addresses:
        - 192.168.101.2/24

Где 192.168.101.2 — IP-адрес сетевого интерфейса  ens34, и он же шлюз для изолированной виртуальной сети VMnet2. Но в данной конфигурации IP-адрес не важен т.к. SoftEther VPN нативно через себя пропускает весь сетевой трафик в рамках текущей задачи.

Сохраняем изменения  F2  и закрываем редактор  F10 .

Для принятия настроек выполняем команду, и подтверждаем новые настройки, нажимаем на ENTER:

$ sudo netplan try

Заново выводим список сетевых интерфейсов для проверки, командой  ip a  и проверяем новую конфигурацию.

Результат выполнения
root@ubuntu:/etc/netplan# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:23:51:5b brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.50.18/24 metric 100 brd 192.168.50.255 scope global dynamic ens32
       valid_lft 86322sec preferred_lft 86322sec
    inet6 fe80::20c:29ff:fe23:515b/64 scope link
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:23:51:65 brd ff:ff:ff:ff:ff:ff
    altname enp2s2
    inet 192.168.101.2/24 brd 192.168.101.255 scope global ens34
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe23:5165/64 scope link
       valid_lft forever preferred_lft forever

Развертывание Shadowsocks клиента в ВМ VM-SoftEther-VPN-router

Шаг 1 — Развертывание Docker и создание внутренней сети для docker-контейнеров

Развертывание Shadowsocks клиента как docker-контейнер самый простой вариант т.к. не тянет за собой набор зависимостей, поэтому на маршрутизаторе развернем Docker. Установка Docker просто и быстро выполняется по руководству Простая установка Docker в Armbian/Linux для ARM, данное руководство подойдет и для платформы x86.

До создания docker-контейнеров создадим стандартную внутреннюю сеть типа bridge с названием br0. Где диапазон адресов для docker-контейнеров 172.31.1.1 — 172.31.1.126, шлюз 172.31.1.127.

Bridge — это внутренняя сеть Docker, изолированная от сети хоста. Вы можете получить доступ из сети Интернет или локальной сети к контейнерам только через те порты, которые открыты при запуске контейнера командой  -p . Можно создать любое количество сетей типа bridge.

Если виртуальная сеть уже создана, то этот шаг можно пропустить. Команда создания сети br0:

$ sudo docker network create \
  --driver=bridge \
  --subnet=172.31.1.0/24 \
  --ip-range=172.31.1.0/25 \
  --gateway=172.31.1.127 \
  br0

После создания внутренней сети просмотрим список сетей docker, командой  docker network ls :

Результат выполнения команды
root@ubuntu:~# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
71a41db48110   br0       bridge    local
ebedae05baa2   bridge    bridge    local
c4c3017a544f   host      host      local
f54c80080402   none      null      local
Внутренняя  сеть br0 создана. Переходим к следующему шагу развертывания Shadowsocks клиента.

Шаг 2 — Создание конфигурации для Shadowsocks клиента

До запуска Shadowsocks клиента необходимо создать конфигурационный файл sslocal-config.json. Данный файл разместим по пути  /etc/ , где и хранятся все конфигурационные файлы системы. Откроем файл конфигурации на редактирование, команда:

$ sudo mcedit /etc/sslocal-config.json

И вставим конфигурацию, которую подготавливали для Windows, в разделе Шаг 2 — Настройка работы клиента SoftEther VPN через Shadowsocks прокси, но изменим в части IP-адреса, 127.0.0.1 заменим на 0.0.0.0.

Содержание файла  /etc/sslocal-config.json :

{
  "locals": [{
    "local_address": "0.0.0.0",
    "local_port": 1080,
    "mode": "tcp_and_udp"
  }],
  "server": "185.240.242.10",
  "server_port": 8388,
  "password": "{PASSWORD}",
  "method": "chacha20-ietf-poly1305"
}

Если на сервере настраивали протокол Shadowsocks-2022 AEAD-2022, то строку method можете изменить на тот вариант, который вы выбрали, и порт подключения, строка server_port.

Сохраняем изменения  F2  и закрываем редактор  F10 .

Шаг 3 — Развертывание docker-контейнера с Shadowsocks клиентом

Развертывание Shadowsocks клиента на маршрутизаторе выполним на основе docker-образа ghcr.io/shadowsocks/sslocal-rust.

  • IP-адрес контейнера во внутренней сети br0: 172.31.1.2;
  • Порт для подключения по протоколу SOCKS5: 1080/tcp.

Выполним команду создания docker-контейнера:

$ docker run -d \
  --name=sslocal-rust \
  -p 1080:1080/tcp \
  -p 1080:1080/udp \
  -v /etc/sslocal-config.json:/etc/shadowsocks-rust/config.json \
  --restart=always  \
  --net br0 \
  --ip 172.31.1.2 \
  -dit ghcr.io/shadowsocks/sslocal-rust:latest

То же самое в формате YML для docker-compose.

sslocal-shadowsocks.yml
version: '3.5'

services:
#Shadowsocks client
  sslocal-rust:
    image: ghcr.io/shadowsocks/sslocal-rust:latest
    container_name: sslocal-rust
    restart: always
    ports:
      - 1080:1080/tcp
      - 1080:1080/udp
    volumes:
      - /etc/sslocal-config.json:/etc/shadowsocks-rust/config.json
    networks:
      br0:
        ipv4_address: 172.31.1.2

networks:
  br0:
    external: true

Проверим работоспособность созданного контейнера, командой:

$ docker stats --no-stream

Смотрим логи, командой:

$ docker logs sslocal-rust

Результат выполнения:

root@ubuntu:~# docker stats --no-stream
CONTAINER ID   NAME           CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O     PIDS
52379cfb092e   sslocal-rust   0.00%     1.723MiB / 1.883GiB   0.09%     1.39kB / 0B   15.8MB / 0B   4
root@ubuntu:~# docker logs sslocal-rust
/usr/bin/docker-entrypoint.sh: Configuration complete; ready for start up
INFO  shadowsocks local 1.17.1 build 2023-11-26T16:01:29.423274438+00:00
INFO  shadowsocks socks TCP listening on 0.0.0.0:1080
INFO  shadowsocks socks5 UDP listening on 0.0.0.0:1080

Проверка Shadowsocks прокси с помощью браузера Firefox

Браузер Firefox позволяет работать с сетью Интернет через различные прокси, среди протоколов, которых поддерживается протокол SOCKS5. Для тестирования Shadowsocks клиента  настроим работу браузера Firefox через docker контейнер sslocal-rust. При создании docker контейнера был открыт порт 1080 для приема внешний подключений.Откроем настройки  браузера Firefox, Настройки > Настройки сети. Затем выбрать Ручная настройка прокси и указать следующие параметры.

  • Узел SOCKS: 192.168.50.18
  • Порт: 1080
  • SOCKS5

Затем перейти на страниу ifconfig.co для отображения внешнего IP-адреса.

Развертывание SoftEther VPN сервера в ВМ VM-SoftEther-VPN-router

Шаг 1 — Установка сервера SoftEther VPN

Установку сервера SoftEther VPN выполним из исходного текста, это связано с тем, что если запускать сервер как docker контейнер, то не происходит низкоуровневого взаимодействия с Ethernet интерфейсом. Возьмем последнюю версию с репозитория GitHub SoftEtherVPN/SoftEtherVPN. Выполним следующие команды для установки:

$ sudo apt-get update
$ sudo apt-get install -y git cmake gcc g++ make pkgconf libncurses5-dev libssl-dev libsodium-dev libreadline-dev zlib1g-dev
$ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
$ cd SoftEtherVPN
$ git submodule init && git submodule update
$ ./configure
$ make -C build
$ sudo make -C build install

Шаг 2 — Создание системного сервиса и запуск SoftEther VPN

После установки сервера в операционной системе зарегистрируется системный сервис под названием softether-vpnserver. Данный сервис необходимо перевести в режим автозапуска после старта операционной системы, командой:

$ sudo systemctl enable softether-vpnserver

Запустим сервис командой:

$ sudo systemctl start softether-vpnserver

Для остановки сервиса используется следующая команда (выполнять не надо):

$ sudo systemctl stop softether-vpnserver

После запуска сервиса убедимся в нормальной работе путем просмотра статуса командой:

$ systemctl status softether-vpnserver

Если статус active (running), то можно приступать к конфигурированию сервера SoftEther VPN.

Результат выполнения команды:

root@ubuntu:~/SoftEtherVPN# systemctl status softether-vpnserver
● softether-vpnserver.service - SoftEther VPN Server
     Loaded: loaded (/lib/systemd/system/softether-vpnserver.service; enabled; vendor preset: enab>
     Active: active (running) since Sat 2024-01-06 02:34:37 MSK; 8s ago
    Process: 3919 ExecStart=/usr/local/libexec/softether/vpnserver/vpnserver start (code=exited, s>
   Main PID: 3921 (vpnserver)
      Tasks: 33
     Memory: 12.9M
        CPU: 381ms
     CGroup: /system.slice/softether-vpnserver.service
             ├─3921 /usr/local/libexec/softether/vpnserver/vpnserver execsvc
             └─3922 /usr/local/libexec/softether/vpnserver/vpnserver execsvc

Jan 06 02:34:37 ubuntu systemd[1]: Starting SoftEther VPN Server...
Jan 06 02:34:37 ubuntu vpnserver[3919]: The SoftEther VPN Server service has been started.
Jan 06 02:34:37 ubuntu systemd[1]: Started SoftEther VPN Server.

Шаг 3 — Загрузка менеджера управления сервером SoftEther VPN

Для настройки SoftEther VPN Server используется менеджер управления (только для ОС Windows) загружаемый со страницы SoftEther Download Center, но к сожалению без поддержки конфигурирования протокола SOCKS5. Загрузить менеджер управления с поддержкой SOCKS5 можно двумя путями:

  • с зеркала на GitHub;
  • с официального ночного Pipeline на портале dev.azure.com.

Для загрузки с зеркала на GitHub достаточно загрузить архив Binaries_x64, все собранные инсталляторы и бинарники доступны на GitHub devdotnetorg/softethervpn.

Загрузка с pipeline несколько сложнее. Для начала перейдем по ссылке dev.azure.com/SoftEther-VPN. Затем выбрать Pipeline с названием Nightly. Далее из списка выбираем  последний по дате, например  #20231110.1 • Merge pull request #1924 from hiura2023/master. Из списка Jobs выбираем Windows_x64. Затем в окне журнала справа на последней строке расположится ссылка 2 artifacts, необходимо перейти по этой ссылке. Из списка Published выбрать Binaries_x64, но нажать на три точки справа пункта для показа меню. В этом меню выбрать Download artifacts.

VPN router based on SoftEther VPN with Shadowsocks proxy
Последовательность загрузки архивов с бинарниками SoftEther VPN с ресурса dev.azure.com

Шаг 4 — Настройка языка для менеджера управления сервером SoftEther VPN

После распаковки архива необходимо интерфейс переключить на английский язык. Для этого запустить менеджер клиента, файл vpncmgr.exe, в пункте меню выбрать Инструменты => Настройки языка в окне выбрать English и нажать кнопку Далее >. Затем Готово и закрыть клиента.

VPN router based on SoftEther VPN with Shadowsocks proxy
Переключение языка в  SoftEther VPN клиенте

Шаг 5 — Создание профиля подключения в менеджере управления сервером SoftEther VPN

Для управления сервером используется утилита vpnsmgr.exe. После запуска утилиты переходим к созданию Соединения, пункт меню New Setting, указываем следующие настройка:

  • Setting Name: gateway_to_vpn_contoso_server;
  • Host Name: 192.168.50.18;
  • Port Number: 5555;
  • Password: пароль по умолчанию пустой.

Затем подключаемся к серверу кнопка — Connect.

Шаг 6 — Настройка сервера SoftEther VPN в менеджере управления

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

Затем окно мастера настройки SoftEther VPN Server / Bridge Easy Setup закрываете. В вопросе включения поддержки протокола IPSec, отвечаем No.

Создание витуального хаба VPN

По умолчанию доступен хаб — DEFAULT, удаляем его.

Создаем новый хаб — кнопка Create a Virtual Hub. Укажем Virtual Hub Name: VPN. Открываем настройки хаба кнопка — Manage Virtual Hub.

VPN router based on SoftEther VPN with Shadowsocks proxy
Новый виртуальный хаб VPN в SoftEther VPN

Настройка каскадного подключения

Настроим каскадное подключение до сontoso-server кнопка Manage Cascade Connections. В окне Cascade Connections on VPN нажимаем на кнопку New.

VPN router based on SoftEther VPN with Shadowsocks proxy
Создание каскадного подключения в SoftEther VPN

Создаем новое подключение напрямую без использования SOCKS5, заполняем поля:

  • Settings Name: Contoso Corporation VPN
  • Host Name: 185.240.242.10
  • Port Number: 5555 (SE-VPN Port)
  • Virtual Hub Name: VPN
  • User Name: officeuser1
  • Password: пароль который был указан
  • Proxy Type: Direct TCP/IP Connection (No Proxy)

Обратите внимание, при переходе на поле Virtual Hub Name в списке должен появиться пункт VPN. После создания профиля подключения переводим его в режим Online. Поле Status должно измениться на Online (Established).

VPN router based on SoftEther VPN with Shadowsocks proxy
Включено каскадное подключение до сервера сontoso-server

Если удалось создать подключение, то переключаем работу соединения через прокси по протоколу SOCKS5, для этого повторно открываем настройки соединения, кнопка Edit. Изменяем пункт Proxy Type на Connect via SOCKS5 Proxy Server, затем нажимаем на кнопку Proxy Server Settings. В окрывшеся окне выставить следующие значения:

  • Host Name: localhost
  • Port: 1080

VPN router based on SoftEther VPN with Shadowsocks proxy
Подключение к серверу сontoso-server через Shadowsocks прокси

Закрываем окно настроек, переводим соединение в режим выключено Offline, и снова подключаемся, кнопка Online. Поле Status должно измениться на Online (Established). Каскадное подключение к  сontoso-server  серверу настроено.

Закрываем окно настроек Cascade Connections on VPN и окно управления виртуальным хабом — VPN.

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

Настройка локального моста

Для настройки моста на главном окне конфигурирования SoftEther VPN  нажмем на кнопку Local Bridge Setting.

VPN router based on SoftEther VPN with Shadowsocks proxy
Главное окно программы конфигурирования Shadowsocks прокси

Заполнить следующие поля:

  • Virtual Hub: VPN (виртуальный хаб для моста)
  • Type to Create: Bridge with Physical Existing Network Adapter (тип моста, мост с локальным физическим сетевым адаптером)
  • LAN Adapter: ens34 (название сетевого адаптера, сетевой трафик которого направляется в виртуальный хаб VPN).

После выбора опций нажимаем на кнопку Create Local Bridge.

VPN router based on SoftEther VPN with Shadowsocks proxy
Создание Local Bridge в SoftEther VPN

После нажатия на кнопку создания моста, отобразится окно с дополнительной информацией об использование функции локального моста в виртуальной машине. Виртуальная машина должна поддерживать режим «Promiscuous Mode» (MAC Address Spoofing, подмена MAC-адреса). В данном случае в VMWare Workstation эта опция работает.

VPN router based on SoftEther VPN with Shadowsocks proxy
Использование функции локального моста в виртуальной машине

На этом все настройки закончены, перезапустите ВМ VM-SoftEther-VPN-router для проверки автозапуска SoftEther VPN + Shadowsocks клиента и поднятия моста до сервера сontoso-server.

Тестирование VPN-маршрутизатора

Для тестирования VPN-маршрутизатора создадим новую ВМ VM-Client работающую под ОС Windows 10. Сетевой адаптер подключим к изолированной виртуальной сети VMnet2.

VPN router based on SoftEther VPN with Shadowsocks proxy
Настройки ВМ VM-Client

Откроем сетевые настройки адаптера.

VPN router based on SoftEther VPN with Shadowsocks proxy
Настройки сетевого подключения ВМ VM-Client

SoftEther VPN выдал сетевые настройки. Проверим маршрутизацию трафика путем построения маршрута до сервера с IP-адресом 1.1.1.1 (DNS сервер компании Cloudflare).

Результат выполнения:

 
C:\Windows\system32>tracert 1.1.1.1

Tracing route to one.one.one.one [1.1.1.1]
over a maximum of 30 hops:

  1    82 ms    87 ms    83 ms  192.168.30.1
  2    92 ms   122 ms   151 ms  172.28.1.127
  3    87 ms    83 ms    93 ms  *** ***
  4    86 ms    89 ms    88 ms  *** ***
  5    83 ms    84 ms    87 ms  ffm-b11-link.ip.twelve99.net [213.248.85.192]
  6    83 ms    84 ms    95 ms  cloudflare-ic-328337.ip.twelve99-cust.net [62.115.144.199]
  7    84 ms    93 ms    83 ms  172.70.244.3
  8    94 ms    82 ms    86 ms  one.one.one.one [1.1.1.1]

Trace complete.

Сетевой трафик проходит через VPN-маршрутизатор.

Сетевые шлюзы:

  • 192.168.30.1 — шлюз виртуального хаба VPN на сontoso-server;
  • 172.28.1.127 — шлюз внутренней сети br0 docker контейнеров на сontoso-server.

Для проверки внешнего IP-адреса запустим браузер и открыть адрес ifconfig.co. На начальной странице отобразится публичный IP-адрес 85.240.242.10, т.к. теперь весь сетевой трафик маршрутизируется через сервер сontoso-server.

Ресурсы

Вам также может понравиться

About the Author: Anton

Programistik