Быстрый старт VPN Обновлено 7 мин Android, iOS, Windows, macOS

Настройка OpenVPN сервера на Debian: пошаговое руководство

Подробное руководство по развертыванию OpenVPN сервера на Debian. Включает установку, конфигурацию сертификатов, настройку клиента и обеспечение безопасности.

OpenVPNDebianVPN серверEasyRSAнастройка сервератуннелирование
Содержание
КороткоУстановите OpenVPN и EasyRSA, сгенерируйте ключи, создайте конфигурацию сервера и клиента, настройте брандмауэр и включите IP-пересылку. Для аутентификации используйте сертификаты.

Введение

OpenVPN — это популярное решение для создания защищённых VPN-туннелей. В этой статье мы подробно рассмотрим процесс настройки OpenVPN сервера на операционной системе Debian. Мы будем использовать аутентификацию на основе сертификатов, что обеспечивает высокий уровень безопасности. Статья предназначена для администраторов, имеющих базовые навыки работы с Linux и командной строкой.

Предварительные требования

Перед началом убедитесь, что у вас есть сервер на Debian (рекомендуется Debian 11 или 12) с доступом к интернету и правами root. Также необходимо открыть порт UDP 1194 в брандмауэре вашего хостинг-провайдера. В этом руководстве мы предполагаем, что сервер имеет статический IP-адрес.

Установка OpenVPN и EasyRSA

Начнём с обновления пакетов и установки необходимого программного обеспечения. Выполните следующие команды от root:

apt update && apt upgrade -y
apt install openvpn easy-rsa -y

EasyRSA — это утилита для управления инфраструктурой открытых ключей (PKI). Мы будем использовать её для генерации сертификатов. После установки создадим каталог для CA (центра сертификации):

make-cadir ~/easy-rsa
cd ~/easy-rsa

Генерация сертификатов

Теперь настроим PKI. Выполните инициализацию:

./easyrsa init-pki

Затем создайте корневой сертификат CA (укажите пароль и общее имя):

./easyrsa build-ca

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

./easyrsa gen-req server nopass
./easyrsa sign-req server server

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

./easyrsa gen-dh

Также создайте ключ TLS (ta.key) для защиты от атак:

openvpn --genkey --secret ta.key

Настройка сервера

Скопируйте сгенерированные файлы в каталог OpenVPN:

cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/

Создайте файл конфигурации сервера /etc/openvpn/server.conf со следующим содержимым:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
cipher AES-256-GCM
auth SHA256
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
persist-key
persist-tun
verb 3

Объяснение ключевых директив: port 1194 — порт по умолчанию; server 10.8.0.0 255.255.255.0 — подсеть для клиентов; push "redirect-gateway" — перенаправлять весь трафик через VPN; tls-auth — защита от DoS-атак.

Включение IP-пересылки и настройка брандмауэра

Чтобы клиенты могли выходить в интернет, включите IP-пересылку. Раскомментируйте строку в файле /etc/sysctl.conf:

net.ipv4.ip_forward=1

Примените изменения:

sysctl -p

Настройте iptables. Предположим, основной сетевой интерфейс — eth0. Выполните:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT

Для сохранения правил установите iptables-persistent:

apt install iptables-persistent -y
netfilter-persistent save

Настройка клиента

Создайте клиентский сертификат:

cd ~/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

Скопируйте файлы клиенту: ca.crt, client1.crt, client1.key, ta.key. Создайте файл конфигурации клиента client1.ovpn:

client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-GCM
auth SHA256
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3

Замените YOUR_SERVER_IP на IP вашего сервера. Скопируйте этот файл на клиентское устройство и импортируйте в OpenVPN.

Запуск и проверка

Запустите сервер OpenVPN:

systemctl start openvpn@server
systemctl enable openvpn@server

Проверьте статус:

systemctl status openvpn@server

Если всё в порядке, подключитесь с клиента и проверьте IP: curl ifconfig.me. Если отображается IP сервера, настройка верна.

Распространенные ошибки

  1. Не включена IP-пересылка: клиенты подключаются, но не могут выйти в интернет. Проверьте параметр net.ipv4.ip_forward.
  2. Неправильные права на файлы сертификатов: OpenVPN не запускается из-за ошибок доступа. Все файлы должны быть доступны для чтения пользователем nobody.
  3. Брандмауэр блокирует трафик: убедитесь, что порт 1194 открыт в обоих направлениях, и правила iptables применены.
  4. Конфликт подсетей: если ваша локальная подсеть совпадает с 10.8.0.0/24, измените подсеть сервера.

Заключение

Вы успешно настроили OpenVPN сервер на Debian. Теперь вы можете подключать клиенты безопасно. Рекомендуется регулярно обновлять сервер и следить за журналами OpenVPN (/var/log/openvpn.log). Для повышения безопасности используйте сертификаты с ограниченным сроком действия и отключайте неиспользуемые.

Мини-чеклист

  • Обновить пакеты и установить OpenVPN и EasyRSA
  • Создать PKI и корневой сертификат CA
  • Сгенерировать серверный сертификат и ключ
  • Создать параметры DH и ключ TLS
  • Скопировать файлы в /etc/openvpn
  • Настроить server.conf
  • Включить IP-пересылку и настроить iptables
  • Создать клиентский сертификат и конфигурационный файл
  • Запустить и проверить сервер

Частые ошибки

  • Забыли включить net.ipv4.ip_forward
  • Неправильные права доступа к файлам сертификатов
  • Не открыли порт UDP 1194 в брандмауэре хостинг-провайдера
  • Использовали одинаковую подсеть на сервере и клиенте
  • Не указали параметр tls-auth или неправильно настроили его

Источники и документация

FAQ

Можно ли подключить несколько клиентов к одному серверу?

Да, для каждого клиента нужно создать отдельный сертификат и конфигурационный файл. На сервере не требуется дополнительных изменений, кроме как обеспечить наличие уникальных сертификатов для каждого клиента.

Как перенаправить только часть трафика через VPN, а не весь?

Не добавляйте директиву push "redirect-gateway" в конфигурацию сервера. Вместо этого на клиенте можно настроить маршруты для конкретных подсетей, используя параметр route в конфигурационном файле .ovpn.

Хотите перейти сразу к рабочему доступу?

Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.

Получить доступ

Дальше по теме

Связанные статьи