- Home »

Настройка и конфигурация OpenVPN сервера на Ubuntu 24
Сегодня поговорим о том, как развернуть собственный OpenVPN сервер на Ubuntu 24 — задача, которая может показаться сложной, но на самом деле решается за полчаса, если знать правильные команды. Этот гайд поможет вам создать безопасный VPN-туннель для удаленного доступа к корпоративной сети, обхода блокировок или просто для шифрования трафика в общественных Wi-Fi сетях.
Поднимем три главных вопроса: как работает OpenVPN под капотом, как настроить сервер пошагово без лишних заморочек, и какие подводные камни могут встретиться в процессе. Разберем реальные примеры, покажем команды и конфиги, а также сравним с альтернативными решениями.
Как работает OpenVPN
OpenVPN — это SSL/TLS-based VPN решение, которое работает в пространстве пользователя (userspace) и использует виртуальные сетевые интерфейсы TUN/TAP. В отличие от IPSec, который работает на уровне ядра, OpenVPN проще в настройке и отладке.
Основные компоненты:
- OpenVPN сервер — принимает подключения от клиентов
- PKI инфраструктура — сертификаты для аутентификации
- Конфигурационные файлы — настройки сервера и клиентов
- Маршрутизация — правила для пересылки трафика
Процесс подключения выглядит так: клиент инициирует SSL handshake с сервером, происходит взаимная аутентификация по сертификатам, после чего создается зашифрованный туннель и клиенту назначается IP-адрес из пула.
Подготовка сервера
Для начала нужен VPS с Ubuntu 24. Минимальные требования: 512MB RAM, 10GB диска, 1 CPU core. Рекомендую взять что-то посерьезнее для продакшена — VPS с 2GB RAM будет комфортнее для работы с несколькими клиентами.
Обновляем систему и устанавливаем необходимые пакеты:
sudo apt update && sudo apt upgrade -y
sudo apt install openvpn easy-rsa ufw -y
Включаем IP forwarding — без этого сервер не сможет маршрутизировать трафик между клиентами:
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Настройка PKI инфраструктуры
Создаем директорию для сертификатов и инициализируем PKI:
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
Редактируем файл vars для упрощения генерации сертификатов:
nano vars
Находим и изменяем следующие строки:
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
Инициализируем PKI и создаем корневой сертификат:
source vars
./clean-all
./build-ca
Генерируем сертификат и ключ для сервера:
./build-key-server server
Создаем параметры Диффи-Хеллмана (это займет несколько минут):
./build-dh
Генерируем статический ключ для дополнительной безопасности:
openvpn --genkey --secret keys/ta.key
Конфигурация сервера
Копируем сертификаты в директорию OpenVPN:
sudo cp ~/openvpn-ca/keys/{ca.crt,ca.key,server.crt,server.key,ta.key,dh2048.pem} /etc/openvpn/
Создаем конфигурационный файл сервера:
sudo nano /etc/openvpn/server.conf
Вставляем следующую конфигурацию:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
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"
client-to-client
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3
explicit-exit-notify 1
Настройка файрвола
Настраиваем UFW для работы с OpenVPN:
sudo ufw allow ssh
sudo ufw allow 1194/udp
sudo ufw enable
Добавляем правила NAT для маршрутизации трафика. Редактируем файл before.rules:
sudo nano /etc/ufw/before.rules
Добавляем в начало файла (перед строкой *filter):
# NAT rules for OpenVPN
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
Также в разделе *filter добавляем:
# Allow TUN interface connections
-A ufw-before-input -i tun+ -j ACCEPT
-A ufw-before-forward -i tun+ -j ACCEPT
-A ufw-before-forward -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
Включаем forwarding в UFW:
sudo nano /etc/default/ufw
Меняем:
DEFAULT_FORWARD_POLICY="ACCEPT"
Перезагружаем UFW:
sudo ufw disable && sudo ufw enable
Запуск сервера
Запускаем и добавляем OpenVPN в автозагрузку:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
Проверяем статус:
sudo systemctl status openvpn@server
Если все настроено правильно, увидите:
● openvpn@server.service - OpenVPN connection to server
Loaded: loaded (/lib/systemd/system/openvpn@.service; enabled; vendor preset: enabled)
Active: active (running)
Создание клиентских сертификатов
Возвращаемся в директорию PKI и создаем сертификат для клиента:
cd ~/openvpn-ca
source vars
./build-key client1
Создаем директорию для клиентских конфигов:
mkdir -p ~/client-configs/files
Создаем базовый конфиг для клиента:
nano ~/client-configs/base.conf
Содержимое:
client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
Создаем скрипт для генерации клиентских конфигов:
nano ~/client-configs/make_config.sh
#!/bin/bash
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '') \
${KEY_DIR}/ca.crt \
<(echo -e ' \n') \
${KEY_DIR}/${1}.crt \
<(echo -e ' \n') \
${KEY_DIR}/${1}.key \
<(echo -e ' \n') \
${KEY_DIR}/ta.key \
<(echo -e ' ') \
> ${OUTPUT_DIR}/${1}.ovpn
Делаем скрипт исполняемым и генерируем конфиг:
chmod +x ~/client-configs/make_config.sh
cd ~/client-configs
./make_config.sh client1
Практические примеры и подводные камни
Рассмотрим типичные проблемы и их решения:
Проблема | Причина | Решение |
---|---|---|
Клиент подключается, но нет интернета | Не настроен NAT или IP forwarding | Проверить правила UFW и sysctl net.ipv4.ip_forward |
Connection timeout | Заблокирован порт 1194/udp | Настроить файрвол или использовать TCP порт 443 |
TLS handshake failed | Проблемы с сертификатами | Пересоздать сертификаты или проверить настройки времени |
Медленная скорость | Слабый сервер или неоптимальные настройки | Увеличить MTU, использовать компрессию lz4 |
Пример оптимизированной конфигурации для высокой нагрузки:
# Добавить в server.conf
fast-io
sndbuf 0
rcvbuf 0
comp-lzo adaptive
mtu-test
Альтернативные решения
Кроме OpenVPN существуют и другие решения:
- WireGuard — более современный и быстрый протокол, но менее функциональный
- SoftEther VPN — поддерживает множество протоколов, но сложнее в настройке
- IPSec/IKEv2 — встроенная поддержка в мобильных устройствах
- Pritunl — веб-интерфейс для OpenVPN с корпоративными функциями
Сравнение производительности показывает, что WireGuard обычно быстрее OpenVPN на 15-20%, но OpenVPN более стабилен при нестабильном соединении благодаря механизму keep-alive.
Автоматизация и скрипты
Для автоматизации создания клиентов можно использовать такой скрипт:
#!/bin/bash
CLIENT_NAME=$1
if [ -z "$CLIENT_NAME" ]; then
echo "Usage: $0 "
exit 1
fi
cd ~/openvpn-ca
source vars
./build-key $CLIENT_NAME
cd ~/client-configs
./make_config.sh $CLIENT_NAME
echo "Client config created: ~/client-configs/files/${CLIENT_NAME}.ovpn"
Для мониторинга подключений:
#!/bin/bash
echo "Active OpenVPN connections:"
sudo cat /var/log/openvpn.log | grep -E "peer info|ESTABLISHED"
Безопасность и рекомендации
Для повышения безопасности рекомендую:
- Использовать сертификаты с коротким сроком действия (90 дней)
- Настроить логирование и мониторинг подключений
- Регулярно обновлять OpenVPN и систему
- Использовать двухфакторную аутентификацию через PAM
- Ограничить доступ к серверу только с определенных IP
Пример настройки CRL (Certificate Revocation List) для отзыва сертификатов:
cd ~/openvpn-ca
source vars
./revoke-full client1
sudo cp keys/crl.pem /etc/openvpn/
Добавить в server.conf:
crl-verify crl.pem
Интересные факты и нестандартные применения
OpenVPN можно использовать не только для обычного VPN:
- Site-to-site соединения — связывание офисов через интернет
- Failover каналы — резервирование основного интернет-канала
- Isolated networks — создание изолированных сетей для тестирования
- Game servers — создание приватных игровых серверов
Малоизвестная возможность — использование OpenVPN в режиме bridge для прозрачного подключения к локальной сети:
dev tap0
server-bridge 192.168.1.1 255.255.255.0 192.168.1.50 192.168.1.100
Статистика показывает, что OpenVPN остается самым популярным open-source VPN решением с долей рынка около 60% среди корпоративных пользователей.
Заключение и рекомендации
OpenVPN — надежное и проверенное временем решение для создания VPN-серверов. Основные преимущества: стабильность, безопасность, кроссплатформенность и богатые возможности настройки. Главные недостатки: сложность первоначальной настройки и несколько меньшая производительность по сравнению с WireGuard.
Рекомендую использовать OpenVPN для:
- Корпоративных VPN с большим количеством пользователей
- Случаев, когда нужна максимальная совместимость с различными устройствами
- Сред с высокими требованиями к безопасности
- Сложных сетевых топологий
Для простых задач личного использования стоит рассмотреть WireGuard как более современную альтернативу. Если планируете серьезную нагрузку, берите выделенный сервер — на виртуалке могут быть проблемы с производительностью при большом количестве одновременных подключений.
Полезные ссылки:
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.