Объединение bare-metal и vps серверов в коммутируемую сеть при помощи OpenVPN

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

# apt-get install openvpn easy-rsa bridge-utils

Настраиваем конфигурацию пакета easy-rsa

На хосте который будет выступать сервером пакет для генерации сертификатов скопируем из /usr/share/easy-rsa/ в /opt/easy-rsa/. Копируем файл vars.example в vars и настраиваем параметры которые будут подставляться при генерации сертификатов:

set_var EASYRSA_REQ_COUNTRY     "RU"
set_var EASYRSA_REQ_PROVINCE    "NSK"
set_var EASYRSA_REQ_CITY        "Novosibirsk"
set_var EASYRSA_REQ_ORG         "Interlan"
set_var EASYRSA_REQ_EMAIL       "chernousov@interlan.xyz"
set_var EASYRSA_REQ_OU          "VPN"
set_var EASYRSA_CA_EXPIRE       3650
set_var EASYRSA_CERT_EXPIRE     3650
set_var EASYRSA_CRL_DAYS        3650

Генерируем сертификаты и ключи сервера

# ./easyrsa init-pki
# ./easyrsa build-ca nopass
# ./easyrsa gen-dh
# ./easyrsa gen-req vpn-server nopass
# ./easyrsa sign-req server vpn-server
# openvpn --genkey --secret pki/ta.key

Генерируем сертификаты и ключи клиентов

# ./easyrsa gen-req client-1 nopass
# ./easyrsa sign-req client client-1

или

# ./easyrsa build-client-full client-2 nopass

Конфигурация OpenVPN сервера

Конфиг сервера с интерфейсом без назначения сетевого адреса (инициализация моста при старте сервера):

local 0.0.0.0
port 1194
proto tcp-server
dev tap-bridge
ca /opt/easy-rsa/pki/ca.crt
cert /opt/easy-rsa/pki/issued/vpn-server.crt
key /opt/easy-rsa/pki/private/vpn-server.key
dh /opt/easy-rsa/pki/dh.pem
mode server
tls-server
client-to-client
keepalive 10 120
tls-auth /opt/easy-rsa/pki/ta.key 0 # This file is secret
cipher AES-256-CBC
data-ciphers-fallback AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
script-security 2
up /etc/openvpn/server/up-bridge.sh

Скрипт инициализации сетевого моста vmbr1 (Мост для Proxmox):

#!/bin/sh

ifconfig tap-bridge up
brctl addif vmbr1 tap-bridge

exit 0

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

# systemctl start openvpn-server@server
# systemctl status openvpn-server@server
# systemctl enable openvpn-server@server

Конфигурация OpenVPN клиента

Копируем ключи клиента на клиентский сервер, после чего создаем конфигурацию клиента:

client
dev tap-bridge
proto tcp
remote 109.248.250.74 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client-1.crt
key client-1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
script-security 2
up /etc/openvpn/client/up-bridge.sh

Скрипт инициализации сетевого моста vmbr1:

#!/bin/sh

ifconfig tap-bridge up
brctl addbr vmbr1
ifconfig vmbr1 up
brctl addif vmbr1 tap-bridge
ifconfig vmbr1 10.240.250.250/24

exit 0

Активируем и запускаем сервис клиента:

# systemctl start openvpn-client@client
# systemctl status openvpn-client@client
# systemctl enable openvpn-client@client

На клиенте при подключении к разным версиям OpenVPN может вылезти ошибка вида.

2025-03-10 10:11:14 Compression is not allowed since allow-compression is set to 'stub-only'
2025-03-10 10:11:14 OPTIONS ERROR: server pushed compression settings that are not allowed and will result in a non-working connection. See also allow-compression in the manual.
2025-03-10 10:11:14 ERROR: Failed to apply push options

Собственно в конфиг добавляем опцию указанную в ошибке и пробуем.

allow-compression yes

Работает.

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

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Nextcloud — отличное решение для хранения файлов, но управление пользователями вручную становится головной болью при масштабировании. Keycloak позволяет централизовать аутентификацию, обеспечивая безопасность, поддержку MFA (двухфакторной аутентификации) и удобный вход через…

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Пакеты в Ubuntu по умолчанию настроены на работу с серверами, имеющими довольно много оперативной памяти. Нам нужно жёстко ограничить потребление памяти для работы на Mikro VPS. Запускать будем мой блог…

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

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

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

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Интеграция Gitea и Keycloak: пошаговое руководство

Интеграция Gitea и Keycloak: пошаговое руководство

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда