Рассмотрим способ объединения двух локальных сетей (site to site) при помощи OpenVPN развернутого на VPS хостинг провайдера. Схема сети, следующая:

В качестве площадки для размещения серверной части OpenVPN можно использовать VPS/VDS с предоставляемым публичным IP–адресом. В нашем случае это будет хостинг-провайдер firstvds.ru. Виртуальный сервер с 1 Гб оперативной памяти, 20 Гб дискового пространства и выделенным публичным IP–адресом обойдется нам в 239 р./ месяц. Хостинг-провайдер позволяет выбрать предустановленный вариант ОС на виртуальном сервере. Будем использовать Ubuntu 22.04.

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

Шаг 1. Подготовка виртуального сервера

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

$ sudo apt update

$ sudo apt upgrade

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

$ sudo apt install nano mc net-tools

Далее создадим нового пользователя и дадим ему привилегии root, для этого необходимо выполнить следующие команды:

$ adduser username

$ adduser username sudo

username замените на имя вашего пользователя.

Отключим доступ по SSH от root пользователя:

$ sudo nano /etc/ssh/sshd_config

Закомментируем строку #PermitRootLogin yes и сохраним изменения.

Установим ufw (простой фаервол), выполнив следующую команду:

$ sudo apt-get install ufw

Также нам нужно открыть затребованные порты, такие как SSH port 22, 80, 443, 993 и так далее:

$ sudo ufw allow 22

$ sudo ufw allow 80

$ sudo ufw allow 443

$ sudo ufw allow 993

Для включения фаервола воспользуемся следующей командой:

$ sudo ufw enable

Состояние фаервола можно проверить, выполнив следующую команду:

$ sudo ufw status

Шаг 2. Установим OpenVPN при помощи скрипта openvpn-install.sh

  Выполним команду wget:

$ wget https://git.io/vpn -O openvpn-install.sh

Запустим скрипт openvpn-install.sh для установки и настройки сервера OpenVPN в автоматическом режиме:

$ sudo bash openvpn-install.sh

        Выполним простое конфигурирование выбрав необходимые параметры.

Протокол: TCP; Порт: 993, для того чтобы замаскироваться под Internet Message Access Protocol (IMAPS); ДНС сервер 1.1.1.1 или другой удобный для вас.

            На последнем шаге указываем имя клиента (например, client1, client2, и т.д.). Нажимаем Enter, скрипт должен все успешно установить.

            Для добавления нового клиента повторно выполните запуск скрипта и укажите Add a new client введя цифру 1.

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

Шаг 3. Конфигурирование файла server.conf

  Далее необходимо выполнить ряд изменений в файле конфигурации OpenVPN сервера server.conf. Для этого его откроем в редакторе nano:

$ sudo nano /etc/openvpn/server/server.conf

Закомментируем строки начинающиеся на push и добавим следующие записи:

client-config-dir /etc/openvpn/server/ccd – укажем путь к настройка сетей клиентов;

route 192.168.0.0 255.255.255.0

route 192.168.43.0 255.255.255.0

Данными записями мы указываем серверу о наших локальных сетях 192.168.0.0/24 и 192.168.43.0/24. В вашем случае укажите все локальные сети, которые необходимо объединять.

client-to-client – разрешаем маршрутизацию между добавленными сетями.

push "route 192.168.0.0 255.255.255.0"

push "route 192.168.43.0 255.255.255.0"

Данными записями мы задаем настройки маршрутизации нашим клиентам. Сохраняем файл конфигурации (ctrl+o) и выходим (ctrl+x). Пример файла конфигурации:

Далее необходимо описать сетевую конфигурацию клиентов и создать соответствующие фалы в директории /etc/openvpn/server/ccd.

Данная директория не создается по умолчанию, создадим её при помощи следующих команд:

$ cd /etc/openvpn/server/

$ sudo mkdir ccd

Далее перейдем в эту директорию и создадим файлы наших клиентов, названия должны совпадать с именами клиентов:

$ cd /etc/openvpn/server/ccd

$ nano client1

Добавим в него следующую запись:

iroute 192.168.0.0 255.255.255.0

То есть client1 находится в сети 192.168.0.0/24. Для других клиентов выполним аналогичные записи. Главное, чтобы имя файлов совпадало с именами клиентов.

Перезапустим службы OpenVPN:

$ sudo systemctl restart openvpn

Также для взаимодействия со службой OpenVPN имеются следующие команды:

$ sudo systemctl stop openvpn – остановка службы;

$ sudo systemctl start openvpn – запуск службы.

Шаг 4. Выгрузка файлов конфигураций клиентов

Далее необходимо выгрузить с виртуального сервера сконфигурированные файлы клиентов (.ovpn). По умолчания файлы (.ovpn) создаются в директории root, их необходимо скопировать в директории /home/username. К данной директории можно подключиться сторонним SFTP клиентом. Для этого удобнее всего воспользоваться клиентом WinSCP. Подключимся к нашему серверу по протоколу SFTP, указав IP–адрес виртуального сервера и данные авторизации.  

Установим OpenVPN клиенты на подключаемые windows машины и передадим им соответствующие конфигурационные файлы (.ovpn) и установим подключение.

После установки соединений в windows прописывается необходимая маршрутизация, для вывода в командной строке необходимо прописать команду route print. Пример вывода списков маршрутов с клиента 1:

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

Далее необходимо на каждой windows машине запустить службу, отвечающую за внутреннюю маршрутизацию, служба называется Маршрутизация и удаленный доступ. Это позволит использовать адресацию локальной сети. Для запуска этой службы нажмите клавиши Win+R на клавиатуре (или нажмите правой кнопкой мыши по кнопке «Пуск» и выберите пункт «Выполнить»), введите services.msc в окно «Выполнить» и нажмите Ok или Enter. Далее найдите службу Маршрутизация и удаленный доступ укажите тип запуска вручную, нажмите применить и затем нажмите кнопку Запустить.

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

На этом все, надеюсь материал оказался для Вас полезным.

В качестве основы для данного сценария подключения использовались следующие материалы:

1) https://blog.sedicomm.com/2018/02/06/kak-ustanovit-i-nastroit-openvpn-server-na-debian-9-za-5-minut/

2)  https://www.youtube.com/watch?v=S358miThwdg&t=864s