Объединение локальных сетей при помощи 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 install nano mc net-tools
Далее создадим нового пользователя и дадим ему привилегии root, для этого необходимо выполнить следующие команды:
username замените на имя вашего пользователя.
Отключим доступ по SSH от root пользователя:
$ sudo nano /etc/ssh/sshd_config
Закомментируем строку #PermitRootLogin yes и сохраним изменения.
Установим ufw (простой фаервол), выполнив следующую команду:
Также нам нужно открыть затребованные порты, такие как SSH port 22, 80, 443, 993 и так далее:
Для включения фаервола воспользуемся следующей командой:
Состояние фаервола можно проверить, выполнив следующую команду:
Шаг 2. Установим OpenVPN при помощи скрипта openvpn-install.sh
$ 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.
Данная директория не создается по умолчанию, создадим её при помощи следующих команд:
Далее перейдем в эту директорию и создадим файлы наших клиентов, названия должны совпадать с именами клиентов:
Добавим в него следующую запись:
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 машины могут быть доступны по своим локальным адресам.
На этом все, надеюсь материал оказался для Вас полезным.
В качестве основы для данного сценария подключения использовались следующие материалы:
Соединение нескольких офисов в одну сеть с помощью OpenVPN
Сервер полностью аналогичен серверу в первом офисе, за исключением eth1: там адрес 192.168.4.1/24.
Объединять мы будем сервера в виртуальную сеть 192.168.10.0/24. Поэтому на всех серверах должен быть настроен NAT не только для «своих» сетей, но и для сети 192.168.10.0/24.
Будем считать что всё это уже сделано. Приступаем к установке и настройке OpenVPN-сервера:
Создаём файл конфигурации /etc/openvpn/server.conf следующего содержания:
mode server tls-server daemon ifconfig 192.168.10.1 255.255.255.0 port 1194 proto tcp-server dev tap ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/office-0.crt key /etc/openvpn/keys/office-0.key dh /etc/openvpn/keys/dh1024.pem client-config-dir /etc/openvpn/ccd push "route 192.168.10.0 255.255.255.0 192.168.10.1" keepalive 10 120 client-to-client comp-lzo persist-key persist-tun verb 3 log-append /var/log/openvpn.log
Создаём каталог, в котором будут хранится индивидуальные настройки клиентов:
Копируем скрипты для генерации ключей и создаём ключи:
cp -vR /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/ mkdir /etc/openvpn/2.0/keys ln -s /etc/openvpn/2.0/keys /etc/openvpn/keys cd /etc/openvpn/2.0/keys source ./vars ./clean-all ./build-ca ./build-dh # Ключ для центрального офиса ./build-key-server office-0 # Ключ для первого офиса ./build-key office-1 # Ключ для второго офиса ./build-key office-2
Входе выполнения этих команд будет задан ряд вопросов. Ответы на них вобщем-то очевидны, поэтому заострять на них внимание не будем.
Далее создаём файлы /etc/openvpn/ccd/office-1 и /etc/openvpn/ccd/office-2. Содержание первого:
# приcваиваем ip-адрес ifconfig-push 192.168.10.101 255.255.255.0 # роутинг на сети центрального офиса push "route 192.168.1.0 255.255.255.0 192.168.10.1" push "route 192.168.2.0 255.255.255.0 192.168.10.1" # роутинг на сеть второго офиса push "route 192.168.4.0 255.255.255.0 192.168.10.102"
# присваиваем ip-адрес ifconfig-push 192.168.10.102 255.255.255.0 # роутинг на сети центрального офиса push "route 192.168.1.0 255.255.255.0 192.168.10.1" push "route 192.168.2.0 255.255.255.0 192.168.10.1" # роутинг на сеть первого офиса push "route 192.168.3.0 255.255.255.0 192.168.10.101"
На этом настрока сервера завершена. Перезапускаем его:
Убеждаемся что поднялся интерфейс tap0:
Переходим к настройке офисов. Рассмотрим только один. Второй будет сделан аналогично, за исключением имён сертификатов.
urpmi openvpn mkdir /etc/openvpn/keys
Создаём файл конфигурации /etc/openvpn/client.conf:
client dev tap proto tcp # адрес сервера в центрально офисе remote a.b.c.d 1194 resolv-retry infinite nobind persist-key persist-tun comp-lzo ns-cert-type server ca ca.crt cert /etc/openvpn/keys/office-1.crt key /etc/openvpn/keys/office-1.key log-append /var/log/openvpn.log
Далее нам нужно поместить файлы office-1.* и ca.crt из каталога /etc/openvpn/keys сервера в каталог /etc/openvpn/keys клиента.
После этого запускаем сервис:
chkconfig openvpn on service openvpn start
Убеждаемся что поднялся интерфейс:
После настройки обоих офисов можно убедиться в работе сети попробовав пинговать из одного офиса какой-нибудь компьютер, расположенный в другом офисе.
На этом всё. Более подробную информацию можно найти в документации по openvpn.