Быстрый старт vpn Обновлено 7 vps, ubuntu

OpenVPN на VPS Ubuntu: классическая установка

Пошаговая инструкция по установке OpenVPN на VPS с Ubuntu: от установки пакетов до запуска сервера и генерации клиентских сертификатов.

openvpnvpsubuntuvpnsetupeasy-rsa
Содержание
КороткоКлассический способ установки OpenVPN на Ubuntu VPS предполагает установку openvpn и easy-rsa, создание PKI, настройку сервера и клиента, а также включение маршрутизации. Ниже разберём каждый шаг подробно.

Что такое OpenVPN и зачем он нужен на VPS

OpenVPN — это популярное решение для создания виртуальных частных сетей с открытым исходным кодом. Оно позволяет безопасно подключаться к вашему VPS из любой точки мира, шифруя весь трафик. Классическая установка подразумевает ручную настройку сервера и клиентов с использованием сертификатов. В отличие от панелей вроде OpenVPN Access Server, классический вариант полностью бесплатен и даёт полный контроль над конфигурацией.

Типичные сценарии использования — доступ к домашней или офисной сети, обход гео-блокировок, защита публичного Wi-Fi. В этой статье мы рассмотрим установку на VPS с Ubuntu (18.04/20.04/22.04/24.04). Актуальные версии пакетов уточняйте в официальных репозиториях Ubuntu и на сайтах проектов.

Подготовка VPS к установке OpenVPN

Перед началом убедитесь, что у вас есть root-доступ к серверу и установлен Ubuntu LTS. Обновите систему и установите необходимые пакеты:

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

Пакет openvpn содержит демон, а easy-rsa — скрипты для управления ключами и сертификатами. Также стоит установить iptables и net-tools, если они ещё не установлены.

Включите IPv4-форвардинг, чтобы трафик от клиентов мог проходить через сервер:

sudo sysctl -w net.ipv4.ip_forward=1

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

net.ipv4.ip_forward=1

и выполните sudo sysctl -p.

Установка Easy-RSA и создание PKI

Перейдите в каталог Easy-RSA и подготовьте инфраструктуру открытых ключей (PKI). На Ubuntu обычно каталог называется /usr/share/easy-rsa.

cd /usr/share/easy-rsa
sudo cp vars.example vars

Отредактируйте файл vars, задав значения по умолчанию для страны, региона, организации и т.д. Затем инициализируйте PKI:

sudo ./easyrsa init-pki

Создайте корневой сертификат (CA) с длиной ключа 4096 бит:

sudo ./easyrsa build-ca nopass

Укажите Common Name, например, vpn.example.com. Далее сгенерируйте параметры Диффи-Хеллмана (может занять несколько минут):

sudo ./easyrsa gen-dh

Создайте сертификат и ключ для сервера. Укажите имя сервера, например, server:

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

Теперь нужно создать HMAC-ключ для TLS-аутентификации:

sudo openvpn --genkey secret ta.key

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

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

Настройка сервера 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
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
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
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

В строке tls-auth ta.key 0 единица означает, что на сервере используется первый ключ из HMAC-файла. Теперь включите NAT, чтобы клиенты могли выходить в интернет через VPS. Настройте iptables:

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables-save > /etc/iptables/rules.v4

Если файла /etc/iptables/rules.v4 нет, установите пакет iptables-persistent.

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

Для каждого клиента создайте отдельный сертификат. Например, для клиента с именем client1 выполните:

cd /usr/share/easy-rsa
sudo ./easyrsa gen-req client1 nopass
sudo ./easyrsa sign-req client client1

Теперь необходимо подготовить клиентский конфигурационный файл. Скопируйте ca.crt, client1.crt, client1.key и ta.key на компьютер клиента. Создайте файл client1.ovpn на основе шаблона:

client
dev tun
proto udp
remote YOUR_VPS_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
key-direction 1
<ca>
... содержимое ca.crt ...
</ca>
<cert>
... содержимое client1.crt ...
</cert>
<key>
... содержимое client1.key ...
</key>
<tls-auth>
... содержимое ta.key ...
</tls-auth>

Вместо YOUR_VPS_IP подставьте реальный IP-адрес вашего сервера.

Запуск и проверка работы OpenVPN

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

sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server

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

sudo systemctl status openvpn@server

Убедитесь, что интерфейс tun0 создан:

ip addr show tun0

Для проверки подключения используйте клиентское ПО OpenVPN на своём компьютере. После подключения должно появиться сетевое соединение с IP-адресом 10.8.0.x.

Типичные проблемы и их решение

Если клиент не подключается, проверьте:

  • Открыт ли порт 1194/udp в файрволе VPS.
  • Корректно ли указан IP-адрес и порт в .ovpn файле.
  • Не конфликтуют ли подсети (например, 10.8.0.0 уже используется где-то в вашей сети).

Также убедитесь, что tls-auth настроен одинаково на сервере и клиенте (в файле сервера — 0, в клиентском — 1). Если трафик не проходит, проверьте маршрутизацию и NAT.

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

  • Обновить систему и установить openvpn, easy-rsa
  • Настроить IPv4 forwarding
  • Инициализировать PKI и создать CA
  • Сгенерировать серверный сертификат и DH-параметры
  • Скопировать ключи в /etc/openvpn
  • Написать server.conf
  • Настроить iptables для NAT
  • Создать клиентские сертификаты
  • Сгенерировать клиентский .ovpn файл
  • Запустить сервис и проверить подключение

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

  • Забывают открыть порт 1194/udp в файрволе
  • Используют одинаковые имена для сервера и клиента в easy-rsa
  • Неправильно указывают key-direction в конфигурации
  • Не включают IP-форвардинг, из-за чего нет интернета у клиентов
  • Копируют ключи в незащищённые каталоги
  • Не проверяют актуальные версии пакетов в репозиториях Ubuntu

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

FAQ

Сколько времени занимает установка OpenVPN по классической схеме?

В среднем при наличии опыта с Linux и SSH — 15-20 минут. Основное время уходит на генерацию DH-параметров, особенно на слабых VPS.

Может ли OpenVPN работать через TCP вместо UDP?

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

Как добавить нового клиента без перезапуска сервера?

Создайте новый сертификат и ключ через easy-rsa, сгенерируйте новый .ovpn файл. Сервер автоматически примет клиента после подписания — перезапуск не требуется.

Безопасно ли использовать NOPASS ключи?

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

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

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

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

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

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