Настройка SoftEther VPN Bridge

Оцените статью

Для объединения нескольких географически распределенных подсетей при помощи SoftEther используется компонент SoftEther VPN Bridge и сегодня мы в краце рассмотрим как настроить объединение несколько виртуальных сетей (LXD хост).

Подготовка сети хоста

Установка необходимых пакетов

# apt-get update && apt-get upgrade
# apt-get install net-tools bridge-utils traceroute

Настройка моста при помощи NetPlan

Добавляем в конфигурацию NetPlan сетевой мост и не ключаем в него интерфейсы, но назначаем для адреса. Первый адрес это подсеть с выходом в интернет с хоста LXD, а второй адрес это адрес виртуальной сети SoftEther.

network:
  version: 2
  bridges:
    v-bridge:
      dhcp4: no
      addresses: [ "10.101.3.1/24", "10.101.5.9/24" ]
  ethernets:
    ens34:
      addresses: [ 185.135.81.157/22 ]
      nameservers:
          addresses:
          - 8.8.8.8
          - 8.8.4.4
          search: []
      routes:
      -   to: default
          via: 185.135.80.1

Сервис SystemD для организации доступа в интернет для LXC-контейнеров /etc/systemd/system/lxd-nat.service.

[Unit]
Description=NAT network for LXD
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables -t nat -A POSTROUTING -s 10.101.3.0/24 -o ens34 -j MASQUERADE

[Install]
WantedBy=multi-user.target

Активируем и запускаем сервис.

# systemctl enable lxd-nat
# systemctl start lxd-nat

Установка и базовая настройка LXD

Выполняем инициализацию LXD и на этапе настройки указываем мост по умолчанию, но при этом не используем DHCP, так-как в нашей сети уже есть DHCP-сервер, а вся виртуальная сеть плоский мост и следовательно LXC-контейнеры получат адрес от центрального DHCP-сервера.

# lxd init 
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (zfs, btrfs, ceph, cephobject, dir, lvm) [default=zfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: v-bridge
Would you like the LXD server to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]: 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

Контейнер LXD для запуска SoftEther Bridge

Создаем контейнер для запуска SoftEther Bridge.

# lxc launch ubuntu:24.04 srv-lxc-prod-rain-07

Настраиваем сеть в контейнере при помощи NetPlan.

network:
    version: 2
    ethernets:
        eth0:
          dhcp4: false
          dhcp6: false
          addresses:
            - 10.101.3.2/24
          routes:
            - to: default
              via: 10.101.3.1
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]

Не забудьте разрешить Forward на хосте и проверьте доступность доступа в интернет из контейнера.

Установка SoftEther Bridge

Обратите внимание, что для SoftEther нет GUI клиента для Linux и вам придется или использовать консоль для управления или использовать отдельную машину с консолью установленной на OS Windows.

Загрузить SoftEther VPN Bridge можно по адресу https://www.softether.org/5-download. Для установки вам потребуется скачать архив, распаковать его и запустить .install из каталога с приложением. Но так-же обратите внимание, что вам необходимо установить дополнительно пакеты для сборки.

# apt-get install gcc make

Собираем и проводим тестовый запуск

# cd /opt/vpnbridge/
# ./.install.sh
# ./vpnbridge start

Останавливаем VpnBribge и делаем сервис для автозапуска при старте контейнера.

# ./vpnbridge stop

Сервис для автозапуска SoftEther (/etc/systemd/system/vpnbridge.service)

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/opt/vpnbridge/vpnbridge start
ExecStop=/opt/vpnbridge/vpnbridge stop
# Optionally, add a delay to ensure the start process fully completes
# ExecStartPost=/bin/sleep 3s

[Install]
WantedBy=multi-user.target

Настраиваем автозапуск и запускаем.

# systemctl enable vpnbridge.service
# systemctl start vpnbridge.service
# systemctl status vpnbridge.service

Проброс портов до контейнера при помощи утилиты socat

Для проброса порта управления SoftEther (порт 5555) я использую утилиту socat которую запускаю в виде сервиса.

Скрипт для запуска утилиты /usr/local/bin/socat-start.sh

#!/bin/sh

/usr/bin/socat TCP-LISTEN:`echo $1 | awk -F"-" '{ print $2 }'`,fork TCP:`echo $1 | awk -F"-" '{ print $1 }'`:`echo $1 | awk -F"-" '{ print $2 }'`

Сервис запуска /etc/systemd/system/socat@.service

[Unit]
Description=Socat port forward for port %i

[Service]
ExecStart=/usr/local/bin/socat-start.sh %i
Type=simple

[Install]
WantedBy=multi-user.target

Пример запуска.

# systemctl start socat@10.101.2.3-5555.service
# systemctl enable socat@10.101.2.3-5555.service
# systemctl status socat@10.101.2.3-5555.service

Настройка подключения SoftEther VPN Bridge к SoftEther VPN Server

Настройка пользователя на сервере

Выбираем виртуальный хаб

Выбираем виртуальный хаб

Переходим в управление пользователями

Переходим в управление пользователями

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

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

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

Создаем подключение утилитой правления к сетевому мосту

Создаем подключение утилитой правления к сетевому мосту

Обратите внимание, что порт 5555 и пароль не указываем так-как его надо будет указать при первом подключении

Обратите внимание, что порт 5555 и пароль не указываем так-как его надо будет указать при первом подключении

Настраиваем соединение с использованием мастера настройки. Режим работы site-to-site.

 Режим работы site-to-site

Задаем параметры подключения от имени созданного сервисного пользователя.

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

Указываем центральный хост, имя пользователя и пароль.

Указываем центральный хост, имя пользователя и пароль.

Проверяем, что соединение установлено.

Проверяем, что соединение установлено.

Выбираем устройство к которому будем строить мост.

Выбираем устройство к которому будем строить мост.

Вот собственно и все настройки.

Теперь можно проверить, что LXD получет параметры IP с центрального DHCP-сервера и другие устройства в сети доступны.

root@srv-prod-rain-04:~# lxc launch ubuntu:24.04
Creating the instance
Instance name is: legible-krill           
Starting legible-krill
root@srv-prod-rain-04:~# lxc ls
+----------------------+---------+--------------------+------+-----------+-----------+
|         NAME         |  STATE  |        IPV4        | IPV6 |   TYPE    | SNAPSHOTS |
+----------------------+---------+--------------------+------+-----------+-----------+
| legible-krill        | RUNNING | 10.101.5.93 (eth0) |      | CONTAINER | 0         |
+----------------------+---------+--------------------+------+-----------+-----------+
| srv-lxc-prod-rain-07 | RUNNING | 10.101.3.2 (eth0)  |      | CONTAINER | 0         |
+----------------------+---------+--------------------+------+-----------+-----------+

Похожие записи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

GlusterFS — это масштабируемая, распределённая файловая система с открытым исходным кодом, которая объединяет хранилища нескольких серверов в единое пространство имён. Она идеально подходит для создания отказоустойчивых и высокопроизводительных хранилищ, особенно…

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS