OpenVPN на VPS: настройка VPN-сервера своими руками

Сети и VPN
OpenVPN на VPS: настройка VPN-сервера своими руками

OpenVPN — самый проверенный способ поднять личный VPN-сервер: протоколу больше 20 лет, клиенты есть под Windows, macOS, Linux, Android, iOS и почти любой роутер. Настройка OpenVPN на VPS занимает 30–40 минут и решает две бытовые задачи: шифрует ваш трафик в публичном Wi-Fi (кафе, аэропорты, отели) и даёт защищённый доступ к вашим же ресурсам — домашнему NAS, панелям администрирования, серверу с закрытыми портами. В этой инструкции разберём установку VPN-сервера на Ubuntu 24.04 LTS вручную, без «магических» скриптов: PKI на easy-rsa, конфиг сервера, форвардинг и готовый клиентский профиль .ovpn.

Зачем свой VPN-сервер, если есть готовые сервисы

Коммерческий VPN — это чужой сервер, через который проходит весь ваш трафик. Свой сервер снимает главные вопросы:

  • Приватность. Логи ведёте только вы. Никакой «политики нулевых логов», которую нельзя проверить.
  • Личный IP-адрес. Адреса публичных VPN-сервисов массово занесены в чёрные списки сайтов — свой сервер такой репутации не имеет.
  • Цена. Подписка на коммерческий VPN стоит 300–700 ₽ в месяц за одного. VPS за 99–450 ₽ обслужит всю семью и все устройства сразу.
  • Доступ к своим ресурсам. Через VPN-туннель можно безопасно ходить на закрытые файрволом сервисы: базы данных, панели, RDP.

Подробное сравнение по скорости и приватности — в статье «Свой VPN против бесплатного». А если хочется туннель побыстрее и попроще — посмотрите настройку WireGuard за 10 минут: оба протокола спокойно живут на одном сервере.

Что понадобится

OpenVPN нетребователен: 1 vCPU и 1–2 ГБ RAM хватает с запасом, диск почти не используется. Важнее канал и безлимитный трафик — VPN пропускает через себя всё, что вы смотрите и качаете.

  • VPS с Ubuntu 24.04 LTS и root-доступом;
  • 10 минут на PKI и 20 минут на конфиги;
  • клиент OpenVPN Connect (или OpenVPN GUI) на устройствах.

Для личного VPN разумный выбор — NAT VPS от Cheap-Host: тариф NAT Base за 99 ₽/мес даёт 1 vCPU, 2 ГБ RAM, NVMe и безлимитный трафик на канале 100 Мбит/с. Единственный нюанс — общий IPv4 и работа на нестандартных портах, об этом ниже. Если нужен выделенный IP и классический порт 1194 — тариф Start за 450 ₽/мес с 6 vCPU и 8 ГБ RAM. Сервер выдаётся за 45–60 секунд, так что к настройке можно приступать сразу после оплаты.

Шаг 1. Установка OpenVPN и easy-rsa

Подключитесь к серверу (если делаете это впервые — вот инструкция по SSH с Windows, macOS и Linux) и обновите систему:

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

В Ubuntu 24.04 из репозитория ставится OpenVPN 2.6 и easy-rsa 3.x — это актуальные версии, ничего собирать из исходников не нужно.

Шаг 2. Создаём PKI: центр сертификации и ключи

OpenVPN аутентифицирует сервер и клиентов по сертификатам. Создадим свой мини-центр сертификации (CA):

make-cadir ~/easy-rsa
cd ~/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass

На вопрос о Common Name можно ответить просто vpn-ca. Дальше — серверный сертификат, ключ Диффи — Хеллмана и ключ tls-crypt, который прячет сам факт VPN-хендшейка от сканеров:

./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
openvpn --genkey secret pki/ta.key

Теперь сертификат для первого клиента (на каждое устройство лучше выпускать отдельный — так его можно отозвать, не трогая остальные):

./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

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

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

Шаг 3. Конфигурация сервера

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

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-crypt ta.key
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
user nobody
group nogroup
persist-key
persist-tun
verb 3
explicit-exit-notify 1

Ключевые строки: server 10.8.0.0 255.255.255.0 — внутренняя подсеть туннеля, redirect-gateway — заворачивает в VPN весь трафик клиента, dhcp-option DNS — какие DNS-серверы использовать внутри туннеля. Запускаем и добавляем в автозагрузку:

sudo systemctl enable --now openvpn-server@server
sudo systemctl status openvpn-server@server

Шаг 4. Форвардинг и файрвол

Чтобы сервер выпускал клиентов в интернет, включаем маршрутизацию пакетов:

echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-openvpn.conf
sudo sysctl --system

Дальше — NAT для подсети туннеля. Имя внешнего интерфейса узнайте командой ip route get 1.1.1.1 (обычно eth0 или ens3):

sudo apt install -y iptables-persistent
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo netfilter-persistent save

Если используете UFW, откройте порт VPN и разрешите форвардинг (в /etc/default/ufw поменяйте DEFAULT_FORWARD_POLICY на ACCEPT):

sudo ufw allow 1194/udp
sudo ufw reload

OpenVPN на NAT VPS: работаем на нестандартном порту

На NAT VPS у вас общий IPv4 и персональный диапазон из 999 проброшенных TCP/UDP-портов (плюс отдельный SSH-порт). Стандартный 1194 в этот диапазон не входит, поэтому:

  1. посмотрите в панели ваш диапазон портов — например, 20500–21498;
  2. в server.conf замените port 1194 на любой порт из диапазона, скажем port 20501;
  3. тот же порт укажите в клиентском профиле в строке remote;
  4. в файрволе откройте именно его: sudo ufw allow 20501/udp.

Больше ничего не меняется: OpenVPN всё равно, на каком порту слушать. Как устроен проброс и что ещё можно запустить на общем IP — читайте в разборе «Проброс портов на NAT VPS».

Шаг 5. Клиентский профиль .ovpn

Удобнее всего собрать один файл, в котором зашиты все сертификаты, — его достаточно импортировать в приложение. Создайте client1.ovpn:

client
dev tun
proto udp
remote ВАШ_IP_ИЛИ_ХОСТ 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
verb 3
<ca>
(содержимое pki/ca.crt)
</ca>
<cert>
(содержимое pki/issued/client1.crt)
</cert>
<key>
(содержимое pki/private/client1.key)
</key>
<tls-crypt>
(содержимое pki/ta.key)
</tls-crypt>

Для NAT VPS в строке remote укажите общий IP сервера и ваш нестандартный порт. Скачайте файл на устройство (например, командой scp), импортируйте в OpenVPN Connect — и подключайтесь. Проверить, что трафик идёт через сервер, можно на сайте ifconfig.me: он должен показывать IP вашего VPS.

Проверка и типичные проблемы

  • Подключение есть, интернета нет. В 9 случаях из 10 забыт ip_forward или правило MASQUERADE. Проверьте: sysctl net.ipv4.ip_forward и sudo iptables -t nat -L -n.
  • Клиент не подключается (TLS timeout). Порт закрыт файрволом или указан не тот протокол/порт в remote. На NAT VPS убедитесь, что порт из вашего диапазона.
  • UDP заблокирован в сети. Поднимите второй экземпляр с proto tcp и port 443 (на NAT VPS — TCP-порт из вашего диапазона): такой трафик почти нигде не режут.
  • Логи. sudo journalctl -u openvpn-server@server -f — здесь видно все хендшейки и ошибки.

FAQ

Что лучше — OpenVPN или WireGuard?

WireGuard быстрее и проще, OpenVPN — гибче: работает по TCP/443 в сетях с жёсткой фильтрацией, умеет логин-пароль и передаёт клиенту маршруты и DNS с сервера. Для капризных сетей и старых роутеров — OpenVPN, для максимальной скорости — WireGuard. Ничто не мешает держать оба на одном VPS.

Насколько снизится скорость интернета?

На канале 100 Мбит/с по UDP с AES-256-GCM потери обычно 10–20%. По TCP скорость ниже и задержки выше, поэтому TCP — только как запасной вариант.

Заработает ли OpenVPN на NAT VPS с общим IP?

Да. Укажите в server.conf любой порт из вашего диапазона 999 проброшенных портов вместо 1194 и пропишите его же в клиентском профиле. Всё остальное настраивается одинаково.

Сколько клиентов потянет сервер за 99 рублей?

Для личного использования — с запасом: 1 vCPU и 2 ГБ RAM спокойно обслуживают 5–10 одновременных устройств. Ограничением скорее станет ширина канала, чем процессор.

Выбирать UDP или TCP?

По умолчанию UDP — быстрее и без эффекта «TCP поверх TCP». TCP на 443 порту держите как резерв для отельных и корпоративных сетей, где UDP заблокирован.

Вывод

Своими руками OpenVPN-сервер поднимается за вечер: пакеты из репозитория Ubuntu 24.04, easy-rsa для сертификатов, один конфиг сервера, форвардинг — и у вас личный VPN, который шифрует трафик в любом Wi-Fi и открывает доступ к вашим ресурсам с любого устройства. Если для этой задачи нужен сервер — у Cheap-Host тариф NAT Base от 99 ₽/мес: NVMe, KVM, безлимитный трафик и выдача сервера за минуту, а для выделенного IPv4 и порта 1194 — тариф Start от 450 ₽/мес. Выбрать конфигурацию можно на cheap-host.onl.

Читайте также