Настройка простой конфигурации OpenVPN клиент-сервер

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

В рамках небольшого проекта потребовалось настроить сетевую связанность между несколькими офисами. Самое простое и быстрое решение это OpenVPN сервер и несколько клиентов, так и поступим и в рамках этого проекта освежим в памяти как это настраивается и какие есть нюансы.

Базовая настройка OpenVPN сервера и клиента

Включаем маршрутизацию IPv4 на уровне ядра Linux

Текущее состояние режима маршрутизации.

# cat /proc/sys/net/ipv4/ip_forward
  • 0 — маршрутизация отключена.
  • 1 — маршрутизация включена.

Чтобы временно включить маршрутизацию (до перезагрузки):

# sysctl -w net.ipv4.ip_forward=1

Проверка:

# sysctl net.ipv4.ip_forward
# sysctl net.ipv6.conf.all.forwarding

Постоянное включение маршрутизации в файле /etc/sysctl.conf добавляем или раскоментируем строки.

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

Применяем настройки.

# sysctl -p

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

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

Генерация RSA-ключей OpenVPN сервера и клиента

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

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

# mkdir /opt/easy-rsa
# cp -r /usr/share/easy-rsa/ /opt/

Копируем файл vars.example в vars.

# cp ./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         "Rain"
set_var EASYRSA_REQ_EMAIL       "chernousov@interlan.xyz"
set_var EASYRSA_REQ_OU          "IT"
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 srv-prod-rain-02 nopass
# ./easyrsa sign-req server srv-prod-rain-02
# openvpn --genkey --secret pki/ta.key

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

# ./easyrsa gen-req srv-prod-rain-01 nopass
# ./easyrsa sign-req client srv-prod-rain-01

или

# ./easyrsa build-client-full srv-prod-rain-01 nopass

Базовая конфигурация сервера

Базовая конфигурация сервера OpenVPN.

port 1194
proto udp
dev tap-ovpn

ca /opt/easy-rsa/pki/ca.crt
cert /opt/easy-rsa/pki/issued/srv-prod-rain-02.crt
key /opt/easy-rsa/pki/private/srv-prod-rain-02.key
dh /opt/easy-rsa/pki/dh.pem

server-bridge 10.134.80.1 255.255.255.0 10.134.80.2 10.134.80.254

ifconfig-pool-persist ipp.txt

client-to-client
tun-mtu 1400
keepalive 10 120

tls-auth /opt/easy-rsa/pki/ta.key
cipher AES-256-GCM

user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log
verb 3

Выполняем тестовый запуск.

# openvpn --config ./rain-server.conf

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

client
dev tap-ovpn
proto udp
remote 45.155.204.127 1194

resolv-retry infinite
tun-mtu 1400
remote-cert-tls server

cipher AES-256-GCM

verb 3

persist-key
persist-tun

<ca>
-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----
</key>

<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----

-----END OpenVPN Static key V1-----
</tls-auth>

Настройка автозапуска сервера и клиента OpenVPN

Автозапуск клиента

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

Автозапуск сервера

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

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

Настройка взаимодействия RED ADM и Windows Active Directory

Сегодня проведем несколько экспериментов по настройке взаимодействия RED ADM и Windows Active Directory. Есть несколько способов настройки доверия для упрощения миграции с решений Microsoft на Российское ПО и сегодня их…

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Так как на севере делать абсолютно нечего, то я продолжаю заниматься саморазвитием 🙂 На этой неделе вспоминаю и углубляю свои знания в Docker. Лучший способ запомнить тему, это вести конспект…

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

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

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

Топ-9 нейросетей для генерации изображений в 2026 году

Топ-9 нейросетей для генерации изображений в 2026 году

Настройка взаимодействия RED ADM и Windows Active Directory

Настройка взаимодействия RED ADM и Windows Active Directory

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Установка основного контроллера домена на базе REDADM

Установка основного контроллера домена на базе REDADM

zVirt работа с шаблонами виртуальных машин

zVirt работа с шаблонами виртуальных машин

Подробная инструкция по работе с томами (volumes) в Docker

Подробная инструкция по работе с томами (volumes) в Docker