Настройка OpenVPN сервера в Debian 13

Настройка OpenVPN сервера в Debian 13

В статье описана пошаговая установка и настройка OpenVPN сервера в Debian 13: генерация сертификатов, правка конфигурационного файла и настройка сетевых скриптов.

1. Установка пакетов

Установите OpenVPN, утилиту для работы с сертификатами Easy-RSA и iptables:

root@srv:~# apt -y install openvpn easy-rsa iptables

2. Создание центра сертификации (CA) и ключей

Перейдите в директорию Easy-RSA и инициализируйте PKI:

root@srv:~# cd /usr/share/easy-rsa
root@srv:/usr/share/easy-rsa# ./easyrsa init-pki

Создайте центр сертификации (CA). Придумайте и введите пароль, а затем укажите имя (Common Name), например Server-CA:

root@srv:/usr/share/easy-rsa# ./easyrsa build-ca

Сгенерируйте сертификат сервера (ключ nopass означает, что для запуска сервиса не потребуется ввод пароля):

root@srv:/usr/share/easy-rsa# ./easyrsa build-server-full server1 nopass

Подтвердите действие, введя yes, и укажите пароль от CA.

Сгенерируйте сертификат для клиента (например, client1):

root@srv:/usr/share/easy-rsa# ./easyrsa build-client-full client1 nopass

Создайте параметры Диффи-Хеллмана (это может занять некоторое время):

root@srv:/usr/share/easy-rsa# ./easyrsa gen-dh

Сгенерируйте ключ TLS-Auth для дополнительной защиты:

root@srv:/usr/share/easy-rsa# openvpn --genkey secret ./pki/ta.key

Скопируйте все созданные файлы в рабочую директорию OpenVPN:

root@srv:/usr/share/easy-rsa# cp -pR /usr/share/easy-rsa/pki/{issued,private,ca.crt,dh.pem,ta.key} /etc/openvpn/server/

3. Настройка конфигурационного файла

Скопируйте пример конфигурации в рабочую папку:

root@srv:~# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/

Откройте файл для редактирования:

root@srv:~# vi /etc/openvpn/server/server.conf

Найдите и измените следующие строки (либо создайте пустой файл и поместите в него этот конфиг):

# Порт подключения
port 1194
# Протокол
proto udp
# Тип устройства
dev tun
# Пути к сертификатам и ключам
ca ca.crt
cert issued/server1.crt
key private/server1.key
dh dh.pem
# Виртуальная подсеть VPN (не должна совпадать с локальной)
server 172.16.100.0 255.255.255.0
# Маршрут к локальной сети сервера (замените 10.0.0.0 на вашу сеть)
push "route 10.0.0.0 255.255.255.0"
# Настройки keepalive
keepalive 10 120
# Ключ TLS-Auth
tls-auth ta.key 0
# Параметры сохранения состояния
persist-key
persist-tun
# Уровень логирования
verb 3

4. Настройка маршрутизации (iptables)

Создайте скрипт, который будет включаться при старте VPN и настраивать форвардинг трафика:

root@srv:~# vi /etc/openvpn/server/add-bridge.sh

Вставьте следующий код (замените enp1s0 на имя вашего сетевого интерфейса, смотрящего в локальную сеть):

#!/bin/bash
IF=enp1s0
VPNIF=tun0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i ${VPNIF} -j ACCEPT
iptables -t nat -A POSTROUTING -o ${IF} -j MASQUERADE

Создайте скрипт для очистки правил при остановке:

root@srv:~# vi /etc/openvpn/server/remove-bridge.sh
#!/bin/bash
IF=enp1s0
VPNIF=tun0
echo 0 > /proc/sys/net/ipv4/ip_forward
iptables -D FORWARD -i ${VPNIF} -j ACCEPT
iptables -t nat -D POSTROUTING -o ${IF} -j MASQUERADE

Сделайте оба скрипта исполняемыми:

root@srv:~# chmod 700 /etc/openvpn/server/{add-bridge.sh,remove-bridge.sh}

5. Запуск сервиса

Чтобы systemd автоматически выполнял скрипы настройки сети, создайте override для сервиса:

root@srv:~# systemctl edit openvpn-server@server

Добавьте в открывшийся редактор следующие строки:

[Service]
ExecStartPost=/etc/openvpn/server/add-bridge.sh
ExecStopPost=/etc/openvpn/server/remove-bridge.sh

Сохраните файл и запустите сервис:

root@srv:~# systemctl enable --now openvpn-server@server

6. Файлы для клиента

Передайте клиенту по защищенному каналу следующие файлы:

  • ca.crt
  • ta.key
  • client1.crt
  • client1.key

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

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


Другие проекты SKILX


UNLIX © Все права защищены 2015 - 2026 | SKILX

Копирование материалов с сайта UNLIX без указания полной ссылки на источник ЗАПРЕЩЕНО!