Как стать автором
Обновить

Объединение локальных сетей при помощи OpenVPN на VPS

Рассмотрим способ объединения двух локальных сетей (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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.