openvpn сервер на ubuntu

Ускорить пинг Безопасное соединение Высокая скорость Быстрое подключение Хорошая цена

OpenVPN сервер на Ubuntu: как не превратить VPS в решето безопасности

Если вы решили поднять openvpn сервер на ubuntu, то, скорее всего, уже знаете, зачем вам это нужно. Но даже опытные администраторы допускают ошибки, которые сводят на нет всю защиту. Разберём, как настроить всё правильно и какие грабли ждут новичков. Здесь не будет воды — только технические детали, реальные сценарии и честные предупреждения.

Почему свой сервер — это не паранойя, а необходимость

Провайдеры вроде «Ростелекома» или МТС видят каждый ваш запрос. Блокировки Telegram, YouTube, рунета — это реальность. Даже если вы просто сидите в публичном Wi-Fi в московском кафе, ваш трафик может перехватить кто угодно. Свой OpenVPN на VPS даёт контроль: вы сами выбираете логирование (а лучше его отключаете), шифрование и юрисдикцию. Торренты, обход цензуры, безопасная работа — для всего этого нужен собственный сервер.

Но есть нюанс: мало просто установить openvpn. Нужно закрыть утечки DNS, настроить kill switch, защититься от Deep Packet Inspection (DPI) и не забыть про perfect forward secrecy. Иначе ваш «защищённый» туннель будет как бумажная стена.

OpenVPN vs WireGuard vs IKEv2: что выбрать для Ubuntu в 2025 году?

Многие гайды предлагают ставить WireGuard «потому что быстрее». Но у каждого протокола свои слабые места. Сравним их в таблице.

Параметр OpenVPN (TCP/UDP) WireGuard IKEv2/IPsec
Шифрование по умолчанию AES-256-GCM, ChaCha20-Poly1305 (опционально) ChaCha20-Poly1305 AES-256-GCM, 3DES (устарел)
Handshake TLS 1.3 (сертификаты + ECDHE) Noise_IK (прежде всего ключи + PSK) IKEv2 с EAP или сертификатами
Perfect forward secrecy Да (ECDHE) Да (смена ключей каждые 2 минуты) Да (DH группы)
Маскировка трафика OpenVPN легко детектится DPI по портам WireGuard можно задетектить по фиксированному UDP-порту IKEv2 часто пропускают, но легко задетектить по IPsec
Поддержка на роутерах Широкая (Asus, Keenetic, OpenWrt) Хорошая (OpenWrt, Keenetic) Встроена в Windows, macOS, iOS
Аудиты безопасности Cure53, Quarkslab (много раз) Cure53, (но есть уязвимости в реализации) Встроенные протоколы (но много уязвимостей в IKEv1)
Скорость на среднем VPS ($5/мес) 200-400 Мбит/с (AES-NI) 800-1000 Мбит/с 300-600 Мбит/с
Требования к CPU Средние (AES-NI ускоряет) Низкие Средние
Простота настройки Средняя (сертификаты, iptables) Простая (один конфиг) Сложная (StrongSwan, сертификаты)
Split tunnelling Да (через маршруты) Да (через AllowedIPs) Да (через политики)
Kill switch Легко (iptables или ufw) Сложнее (требует настройки маршрутов) Встроен в клиенты (но не на сервере)

Вердикт: OpenVPN остаётся королём маскировки и гибкости. WireGuard быстрее, но его легко заблокировать. IKEv2 удобен для мобильных устройств, но сложен в настройке на сервере. Для российского региона, где DPI активно блокирует VPN, лучше OpenVPN + обфускация (например, через TCP 443 или Shadowsocks поверх). Но об этом позже.

image

Пошаговая настройка OpenVPN сервера на Ubuntu: от ECDHE до kill switch

Я не буду повторять миллион раз переписанные команды из официалки. Дам только то, что реально важно. Предполагаем, что у вас есть VPS (например, на Timeweb или Selectel) с Ubuntu 22.04 или 24.04, и вы зашли по SSH.

1. Генерация ключей с ECDHE (эллиптические кривые)

Используем easy-rsa с параметром nopass для сервера. Но вместо RSA 2048 бит — ECDSA P-384. Это быстрее и безопаснее.

apt update && apt install openvpn easy-rsa -y
make-cadir ~/easy-rsa
cd ~/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass
# для сервера используем ECDSA
./easyrsa --curve=secp384r1 gen-req server nopass
./easyrsa --curve=secp384r1 sign-req server server
# клиент
./easyrsa --curve=secp384r1 gen-req client1 nopass
./easyrsa --curve=secp384r1 sign-req client client1
# DH параметры (можно не генерировать, если используем ECDHE)
openssl dhparam -out pki/dh.pem 2048

Важно: отключите слабые шифры в конфиге сервера. Добавьте строку:

tls-crypt pki/ta.key

Это защитит от атак на TLS handshake.

2. Конфиг сервера — никаких компромиссов

Создайте /etc/openvpn/server.conf:

port 443
proto tcp
dev tun
ca pki/ca.crt
cert pki/issued/server.crt
key pki/private/server.key
dh pki/dh.pem
tls-crypt pki/ta.key
cipher AES-256-GCM
auth SHA512
tls-version-min 1.3
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256
reneg-sec 3600
sndbuf 0
rcvbuf 0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.2"
push "dhcp-option DNS 1.0.0.2"
keepalive 10 120
topology subnet
client-to-client
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login

Ключевые моменты:
- Порт 443 TCP — маскируется под HTTPS, DPI часто пропускает.
- tls-crypt — шифрует TLS‑канал, делая невидимым сам факт OpenVPN.
- tls-cipher — только ECDHE + AES-256-GCM или ChaCha20.
- push "redirect-gateway def1" — весь трафик через VPN.
- DNS через 1.1.1.2 (блокирует вредоносное ПО) — не через провайдера.

3. Маршрутизация и kill switch без провалов

Добавьте в /etc/sysctl.conf:

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

И примените: sysctl -p.

Настройте iptables так, чтобы при падении OpenVPN трафик блокировался. Простое правило:

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 -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Kill switch: блокируем входящий трафик снаружи в tun0
iptables -A FORWARD -i eth0 -o tun0 -j DROP
# Исходящий без tun0 - тоже блок
iptables -A OUTPUT -o eth0 -j DROP
iptables -A OUTPUT -o tun0 -j ACCEPT

Но это грубо. Лучше использолвать policy routing:

# Создаём отдельную таблицу маршрутизации
echo "200 vpn" >> /etc/iproute2/rt_tables
# Правило: трафик от клиента VPN идёт только через tun0
ip rule add from 10.8.0.0/24 table vpn
ip route add default dev tun0 table vpn

Это гарантирует, что если tun0 упадёт, клиент останется без интернета — ни один пакет не утечёт наружу.

4. Split tunnelling — маршрутизируем только нужный трафик

Иногда не хочется гнать весь интернет через VPN (например, для доступа к local‑сети). Добавьте в конфиг сервера:

push "route 192.168.1.0 255.255.255.0"
push "route 10.0.0.0 255.0.0.0"

А для клиента — указать redirect-gateway def1 только для определённых IP (через файл .ovpn):

route-nopull
route 185.22.60.0 255.255.255.0

Или используйте vpn_slice на клиенте — но это отдельная история.

5. Обфускация: как обмануть DPI на уровне «Ростелекома»

OpenVPN легко детектится по хэнду. В России активно применяется DPI, который блокирует VPN по сигнатурам. Есть два рабочих способа:

a) Туннель внутри Shadowsocks — ставите Shadowsocks на порт 443, а OpenVPN подключается к нему как к прокси. Это превращает OpenVPN в обычный TCP‑поток, похожий на HTTPS.

b) OpenVPN over WebSocket — через nginx проксируете WebSocket на порт 443, маскируя трафик под обычный веб‑сокет. Это сложнее, но DPI пока не берёт.

Мы не пропагандируем обход законов, но технически это возможно. Если вам нужен рабочий вариант без танцев с бубном — переходите к готовым решениям.

Чего вам НЕ говорят в других гайдах

Этот блок — обязательный. Слишком много статей умалчивают о рисках. Поехали.

Бесплатные VPN — это бизнес на ваших данных

Сервер стоит от $5/мес. Если сервис бесплатный — он зарабатывает на чём‑то другом. Продажа логов, вставка рекламы, сбор статистики для брокеров. Пример: Hola VPN превращал пользователей в выходные ноды ботнета. Betternet торговал трафиком. Даже условно‑бесплатные ProtonVPN (ограничение скорости) — собирают метаданные (сколько вы сидите, какие страны). Аудитов «no‑log» у бесплатных почти нет.

Fake-утечки DNS и WebRTC

Даже с правильно настроенным OpenVPN у вас может произойти утечка DNS из‑за того, что система использует провайдерские DNS. Решение:
- На клиенте установить block-outside-dns (для Windows).
- В конфиге сервера push "dhcp-option DNS 1.1.1.2" и push "block-outside-dns".
- Отключить IPv6 (он часто не шифруется и утекает).
- Проверить WebRTC: зайдите на browserleaks.com/webrtc — если видите ваш реальный IP, отключите WebRTC в браузере.

Логообязательства по требованию суда

Даже если ваш сервер стоит в Нидерландах (юрисдикция 5 Eyes, как вы думаете? На самом деле 9/14 Eyes), местный

image

Полезные ссылки

👉 Забери в Telegram-боте

🔥 Получи на сайте сайте

Ускорить пинг Безопасное соединение Высокая скорость Быстрое подключение Хорошая цена

Комментарии

qproctor 06 Июн 2026 02:14

One thing I liked here is the focus on mobile app safety. The checklist format makes it easy to verify the key points.

stacytorres 08 Июн 2026 05:57

This reads like a checklist, which is perfect for common login issues. The sections are organized in a logical order.

Оставить комментарий

Решите простую математическую задачу для защиты от ботов