Настройка простой конфигурации 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

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

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

GlusterFS — это масштабируемая, распределённая файловая система с открытым исходным кодом, которая объединяет хранилища нескольких серверов в единое пространство имён. Она идеально подходит для создания отказоустойчивых и высокопроизводительных хранилищ, особенно…

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

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

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

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

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS