Настройка собственного VPN-сервера для обхода блокировок: пошаговое руководство (WireGuard и OpenVPN) | AdminWiki

Настройка собственного VPN-сервера для обхода блокировок: пошаговое руководство (WireGuard и OpenVPN)

01 августа 2026 9 мин. чтения

Вам нужен полностью контролируемый VPN-канал, который нельзя отключить централизованно. Коммерческие сервисы банят по IP-диапазонам, а корпоративные политики требуют гарантий конфиденциальности. Решение - собственный сервер на VPS с правильно выбранным протоколом. Это руководство дает готовые конфигурации для WireGuard и OpenVPN, проверенные на Ubuntu 24.04 в августе 2026 года.

Технические средства противодействия угрозам (ТСПУ) анализируют сигнатуры трафика. Стандартный WireGuard и OpenVPN без обфускации детектируются за секунды. Поэтому мы разберем не только установку, но и маскировку: udp2raw для WireGuard, obfsproxy для OpenVPN. Вы получите работающий туннель, устойчивый к DPI.

Материал построен как шпаргалка для системного администратора. Минимум теории, максимум команд и конфигов. Каждый блок можно копировать и применять. Если вы ищете информацию по раздельному туннелированию, обратитесь к руководству по Split Tunneling. Для настройки маршрутизации на уровне ядра используйте гайд по iptables и nftables.

Выбор протокола: WireGuard или OpenVPN?

Выбор между WireGuard и OpenVPN определяет архитектуру всей системы. WireGuard работает на уровне ядра Linux, использует ChaCha20 для шифрования и Poly1305 для аутентификации. OpenVPN действует в userspace, поддерживает TCP и UDP, совместим с оборудованием 15-летней давности. Оба протокола безопасны при корректной настройке, но сценарии применения различаются кардинально.

Для быстрого развертывания с минимальной задержкой берите WireGuard. Если нужна работа через прокси-серверы, обход корпоративных файрволов или поддержка старых маршрутизаторов - OpenVPN. Подробное сравнение всех трех основных протоколов есть в общем руководстве по VPN-серверам.

Сравнение производительности и безопасности

WireGuard показывает пропускную способность 800-950 Мбит/с на VPS с одним ядром. OpenVPN в режиме UDP на том же железе выдает 300-400 Мбит/с. Причина - отсутствие переключений контекста: WireGuard живет в ядре, OpenVPN гоняет пакеты через userspace. На мобильных устройствах разница еще заметнее: меньшее энергопотребление и нагрев.

Криптография в WireGuard фиксирована. ChaCha20 + Poly1305, обмен ключами через Curve25519. Нет переговорного протокола, нет выбора шифров. Это исключает downgrade-атаки. OpenVPN использует TLS-подобный handshake с возможностью выбора шифров от AES-256-GCM до ChaCha20-Poly1305. Гибкость полезна для compliance, но требует ручного аудита конфигурации.

Производительность OpenVPN можно повысить. Включение BBR на сервере сокращает задержки на 15-20% при потерях пакетов. Настройка sndbuf и rcvbuf в конфиге клиента стабилизирует потоковое видео. WireGuard таких тюнингов не требует - буферы управляются автоматически.

Устойчивость к блокировкам и обфускация

ТСПУ с обновленными базами сигнатур блокируют стандартный WireGuard и OpenVPN. Провайдер видит характерный цифровой отпечаток handshake и обрывает сессию. WireGuard использует UDP с фиксированным размером пакетов инициализации - это триггер для DPI. OpenVPN в режиме UDP тоже детектируется по структуре заголовков.

OpenVPN можно обфусцировать. Встроенная опция scramble XOR-ит заголовки, а связка с obfsproxy маскирует трафик под HTTP. Сервер настраивается так:

obfsproxy obfs3 --dest=127.0.0.1:1194 server 0.0.0.0:21194

Клиент подключается на порт 21194, и трафик выглядит как обычный веб-серфинг. Это работает в 95% случаев блокировок на территории РФ.

WireGuard сложнее поддается маскировке. UDP-пакеты туннелируются через TCP с помощью udp2raw. Схема: клиент WireGuard → udp2raw (клиент) → udp2raw (сервер) → WireGuard (сервер). Накладные расходы - 4-7% пропускной способности. Альтернатива - WStunnel, маскирующий трафик под WebSocket. Выбор зависит от того, что блокирует конкретный провайдер.

Подготовка VPS и установка серверного ПО

VPS с Ubuntu 22.04 или 24.04, 1 ГБ ОЗУ, публичный IP-адрес. Этого достаточно для обслуживания 50 одновременных клиентов. Для развертывания можно использовать Timeweb Cloud - облачную инфраструктуру с готовыми шаблонами и автоматическим масштабированием. Подключаетесь по SSH, обновляете систему:

apt update && apt upgrade -y

Сразу настройте базовую защиту: смените порт SSH, включите аутентификацию по ключу, установите fail2ban. Эти шаги критичны - открытый 22-й порт сканируется ботами круглосуточно. Рекомендации по защите веб-интерфейсов и серверов собраны в гайде по безопасности.

Установка и базовая настройка WireGuard

Установка из официального репозитория Ubuntu:

apt install wireguard -y

Генерация ключей сервера:

cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

Создайте конфигурационный файл /etc/wireguard/wg0.conf:

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <приватный_ключ_сервера>

# Клиент 1
[Peer]
PublicKey = <публичный_ключ_клиента>
AllowedIPs = 10.0.0.2/32

Запустите интерфейс и добавьте в автозагрузку:

systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0

Проверьте статус командой wg show. Интерфейс должен отображаться с флагом listening на порту 51820.

Установка и базовая настройка OpenVPN

Скрипт автоматической установки от Angristan экономит 40 минут ручной работы. Он генерирует сертификаты, настраивает файрвол и создает клиентские конфигурации:

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh

Скрипт задаст вопросы: порт (1194), протокол (UDP), DNS (1.1.1.1), включить ли сжатие (нет). Для ручного контроля настройте PKI через easy-rsa. Инициализируйте CA, сгенерируйте сертификат сервера и клиентские ключи. Конфигурация /etc/openvpn/server.conf должна включать:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
keepalive 10 120
cipher AES-256-GCM
user nobody
group nogroup

После правки конфига перезапустите сервис: systemctl restart openvpn@server.

Генерация и управление ключами шифрования

Компрометация приватного ключа означает перехват всего трафика. Храните ключи на сервере с правами 600, передавайте клиентам по защищенному каналу. Никогда не отправляйте приватные ключи через мессенджеры или email без шифрования.

Управление ключами в WireGuard

Для каждого клиента генерируется отдельная пара ключей. На клиентской машине выполните:

wg genkey | tee client_private.key | wg pubkey > client_public.key

Публичный ключ клиента добавьте в секцию [Peer] на сервере. Приватный ключ остается только у клиента. Сервер никогда не видит приватные ключи пиров - архитектура исключает утечку при взломе сервера.

Для добавления нового клиента отредактируйте /etc/wireguard/wg0.conf, добавьте блок Peer и перезагрузите интерфейс:

wg addconf wg0 <(wg-quick strip wg0)

Эта команда применяет изменения без разрыва существующих соединений.

Управление сертификатами в OpenVPN

Инфраструктура открытых ключей (PKI) OpenVPN требует дисциплины. Каждый клиент получает уникальный сертификат, подписанный CA сервера. Для отзыва доступа используется CRL (Certificate Revocation List).

Создание клиентского сертификата через easy-rsa:

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

Сертификат клиента - это файл client1.crt. Вместе с ca.crt и client1.key он упаковывается в .ovpn файл. При компрометации устройства отзовите сертификат:

./easyrsa revoke client1
./easyrsa gen-crl

Скопируйте crl.pem в директорию OpenVPN и добавьте строку crl-verify crl.pem в server.conf. Сервер начнет отклонять подключения с отозванным сертификатом.

Настройка маршрутизации и файрвола

VPN-сервер должен маршрутизировать трафик клиентов в интернет и обратно. Без правильной настройки NAT клиенты подключатся к серверу, но не выйдут в сеть. Параллельно файрвол блокирует все неавторизованные подключения.

Настройка NAT и IP-форвардинга

Включите форвардинг пакетов. Отредактируйте /etc/sysctl.conf:

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

Примените изменения: sysctl -p. Теперь ядро будет пересылать пакеты между интерфейсами.

Настройте NAT через iptables. Для WireGuard с интерфейсом wg0 и внешним интерфейсом eth0:

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

Для OpenVPN замените wg0 на tun0 и подсеть на 10.8.0.0/24. Чтобы правила сохранились после перезагрузки, установите iptables-persistent.

Базовая защита сервера с помощью UFW

UFW - обертка над iptables, упрощающая управление правилами. Настройте политики по умолчанию:

ufw default deny incoming
ufw default allow outgoing

Откройте необходимые порты:

ufw allow 22/tcp  # SSH
ufw allow 51820/udp  # WireGuard
ufw allow 1194/udp  # OpenVPN

Включите файрвол: ufw enable. Проверьте статус: ufw status verbose. Все непривилегированные порты должны быть закрыты.

Дополнительно ограничьте доступ по SSH. Смените порт с 22 на нестандартный, разрешите аутентификацию только по ключам. Установите fail2ban для блокировки перебора паролей. Эти меры отсекают 99% автоматических атак.

Подключение клиентов на различных устройствах

Клиентская конфигурация - это файл с ключами и параметрами подключения. Для WireGuard это .conf, для OpenVPN - .ovpn. Передавайте файлы через SFTP или защищенный веб-сервер.

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

Скачайте и установите официальный клиент с wireguard.com. Создайте новый туннель, вставьте конфигурацию:

[Interface]
PrivateKey = <приватный_ключ_клиента>
Address = 10.0.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <публичный_ключ_сервера>
Endpoint = <IP_сервера>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Нажмите «Активировать». Туннель поднимется за 1-2 секунды. Проверьте IP-адрес через любой сервис проверки - он должен совпадать с IP сервера. Детальная инструкция по настройке клиентов на Windows и Linux с решением типовых ошибок есть в руководстве по ручной настройке VPN.

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

Установите OpenVPN Connect из Google Play. Перенесите .ovpn файл на устройство. В приложении нажмите «Import Profile», выберите файл. Нажмите «Connect». Приложение установит туннель и отобразит статистику в шторке уведомлений.

Файл .ovpn должен содержать встроенные сертификаты. Убедитесь, что внутри есть секции <ca>, <cert> и <key>. Если сертификаты лежат отдельными файлами, положите их в ту же директорию и пропишите пути в конфиге.

Для iOS процесс аналогичен: установите OpenVPN Connect из App Store, импортируйте профиль через iTunes или AirDrop. Интерфейс минималистичен - одна кнопка подключения и индикатор статуса.

Обход DPI и повышение устойчивости к блокировкам

VPN-туннель без обфускации живет от нескольких часов до нескольких дней. ТСПУ анализирует энтропию пакетов, размеры заголовков и паттерны handshake. Задача обфускации - сделать трафик неотличимым от обычного HTTPS или TCP-потока.

Обфускация OpenVPN с помощью obfsproxy

Obfsproxy устанавливается из репозиториев Ubuntu:

apt install obfsproxy -y

На сервере запустите obfsproxy как демон, который слушает внешний порт и проксирует расшифрованный трафик на локальный порт OpenVPN:

obfsproxy obfs3 --dest=127.0.0.1:1194 server 0.0.0.0:21194

На клиенте настройте обратную схему. В конфигурации OpenVPN замените строку remote <IP> 1194 на:

remote <IP> 21194
socks-proxy 127.0.0.1 10194

И запустите obfsproxy локально: obfsproxy obfs3 --dest=<IP>:21194 client 127.0.0.1:10194. Трафик между клиентом и сервером маскируется под случайный поток байт без сигнатур OpenVPN.

Маскировка WireGuard под TCP

WireGuard работает поверх UDP. Если провайдер блокирует UDP-трафик или детектирует сигнатуры WireGuard, туннелируйте его через TCP с помощью udp2raw.

Установка udp2raw:

wget https://github.com/wangyu-/udp2raw/releases/download/20230206.0/udp2raw_binaries.tar.gz
tar xzf udp2raw_binaries.tar.gz
cp udp2raw_x86 /usr/local/bin/udp2raw

На сервере запустите udp2raw в режиме сервера. Он слушает TCP-порт и передает данные на UDP-порт WireGuard:

udp2raw -s -l 0.0.0.0:443 -r 127.0.0.1:51820 --raw-mode faketcp -k "пароль"

На клиенте запустите udp2raw в режиме клиента. Он слушает локальный UDP-порт и туннелирует трафик на TCP-порт сервера:

udp2raw -c -l 127.0.0.1:51820 -r <IP_сервера>:443 --raw-mode faketcp -k "пароль"

В конфигурации клиента WireGuard укажите endpoint 127.0.0.1:51820. WireGuard отправляет пакеты на локальный порт, udp2raw упаковывает их в TCP и отправляет на сервер. Серверный udp2raw распаковывает и передает WireGuard. DPI видит TCP-соединение без сигнатур VPN.

Типичные ошибки и их устранение

80% проблем при настройке VPN вызваны тремя причинами: неправильная маршрутизация, несовпадение ключей и блокировка портов провайдером. Диагностика всегда начинается с логов.

Проблемы с DNS и маршрутизацией

Симптом: VPN подключен, пинг до 8.8.8.8 работает, сайты не открываются. Причина - DNS-запросы уходят в локальную сеть, а не через туннель. Проверьте параметр DNS в конфигурации клиента. Для WireGuard укажите DNS = 1.1.1.1 в секции Interface. Для OpenVPN убедитесь, что сервер пушит dhcp-option DNS 1.1.1.1.

На Windows проверьте таблицу маршрутизации: route print. Маршрут 0.0.0.0 должен вести на интерфейс туннеля. Если остался маршрут через физический интерфейс, удалите его вручную или перезапустите клиент с правами администратора.

Диагностика соединения в WireGuard

Команда wg show выводит состояние всех пиров. Ключевые поля:

  • latest handshake - время последнего успешного рукопожатия. Если N/A, ключи не совпадают или порт закрыт.
  • transfer - объем переданных и принятых данных. Нули означают, что трафик не идет через туннель.
  • allowed ips - список разрешенных IP для этого пира. Проверьте, что указана нужная подсеть.

Если handshake не устанавливается, проверьте три вещи. Первое: совпадают ли публичные ключи в конфигах сервера и клиента. Второе: доступен ли порт 51820/udp снаружи - проверьте через nc -u <IP> 51820 с внешнего хоста. Третье: не блокирует ли провайдер UDP-трафик. Для проверки запустите tcpdump на сервере: tcpdump -i eth0 udp port 51820. Если пакеты не доходят, используйте обфускацию.

Для OpenVPN основной инструмент диагностики - логи: journalctl -u openvpn@server -f. Ошибки аутентификации обычно вызваны просроченными сертификатами или несовпадением CA. Проверьте срок действия: openssl x509 -in client.crt -noout -dates. Если сертификат истек, сгенерируйте новый.

Поделиться:
Сохранить гайд? В закладки браузера