Как установить OpenVPN на VPS?

calendar_month 17 марта 2025 schedule 9 мин. чтения visibility 16 просмотров
person
Valebyte Team
Как установить OpenVPN на VPS?

Установка OpenVPN на ваш VPS — это отличный способ обеспечить безопасное и зашифрованное соединение, защитить вашу конфиденциальность и обойти географические ограничения, создав собственный VPN-сервер. Процесс включает несколько ключевых этапов: от подготовки сервера и установки необходимых пакетов до генерации криптографических ключей, настройки конфигурационных файлов и запуска сервиса. В этой статье мы подробно разберем каждый шаг, чтобы вы могли развернуть OpenVPN на своем виртуальном сервере, превратив его в надежную точку доступа для ваших устройств.

Почему OpenVPN? Краткий обзор для сисадмина

A secure digital tunnel connecting a laptop to a server rack, symbolizing OpenVPN's role in creating secure, encrypted connections.

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

Ключевые преимущества OpenVPN:

  • Безопасность: Использует SSL/TLS для обмена ключами и OpenSSL для шифрования данных, поддерживая широкий спектр алгоритмов (AES, Blowfish и др.). Это позволяет строить туннели с высоким уровнем защиты.
  • Гибкость: Может работать как по TCP, так и по UDP, что дает возможность адаптироваться к различным сетевым условиям и обходить фаерволы. Поддержка различных методов аутентификации, включая сертификаты, логины/пароли, а также двухфакторную аутентификацию.
  • Кроссплатформенность: Доступны клиенты для всех популярных операционных систем: Windows, macOS, Linux, Android, iOS.
  • Открытый исходный код: Прозрачность кода позволяет сообществу постоянно проверять его на уязвимости, что повышает доверие к решению.
  • Обход блокировок: Позволяет получить доступ к ресурсам, ограниченным по географическому признаку или заблокированным провайдером.

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

Подготовка VPS: Что нужно знать перед стартом

Прежде чем мы перейдем к установке, убедимся, что ваш VPS готов к работе. Эти шаги критически важны для безопасности и стабильности.

1. Выбор VPS и ОС

Для OpenVPN подойдет практически любой VPS с достаточным объемом оперативной памяти (минимум 512 МБ, лучше 1 ГБ для комфортной работы) и дискового пространства (несколько ГБ). В качестве операционной системы мы будем использовать Ubuntu Server 22.04 LTS, как одну из самых популярных и хорошо документированных. Процесс будет очень похож и для других Debian-based дистрибутивов.

2. Подключение к VPS через SSH

Первым делом, подключаемся к вашему VPS. Рекомендуется использовать аутентификацию по SSH-ключам вместо пароля для повышения безопасности.

ssh ваш_пользователь@ваш_ip_адрес_vps

Если вы используете SSH-ключи, убедитесь, что ваш публичный ключ добавлен на сервер, а приватный ключ доступен на вашей локальной машине. Если вы используете пароль, будьте готовы ввести его.

Совет для коллег: Если вы столкнулись с ошибкой подключения, проверьте, запущен ли SSH-сервис на VPS (`sudo systemctl status sshd`), открыт ли порт 22 в фаерволе сервера и нет ли проблем с сетевой связностью.

3. Обновление системы

Всегда начинайте с обновления пакетной базы и установленных пакетов. Это гарантирует, что у вас будут последние версии ПО и исправления безопасности.

sudo apt update && sudo apt upgrade -y

4. Настройка базового фаервола (UFW)

Фаервол — ваш первый рубеж обороны. Мы будем использовать UFW (Uncomplicated Firewall) для его простоты и эффективности.

sudo apt install ufw -y
sudo ufw allow OpenSSH # Разрешаем SSH, чтобы не потерять доступ
sudo ufw enable # Включаем фаервол
sudo ufw status # Проверяем статус

На этом этапе фаервол разрешает только SSH-соединения. Позже мы добавим правила для OpenVPN.

Нужен надежный VPS для OpenVPN?

Выберите идеальный VPS-хостинг, чтобы ваш OpenVPN работал безупречно и безопасно. — from €4.49/mo.

Выбрать VPS-хостинг →

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

Теперь, когда сервер готов, переходим к основной части.

Шаг 1: Установка OpenVPN и Easy-RSA

Нам потребуется сам OpenVPN и Easy-RSA — набор скриптов для управления инфраструктурой открытых ключей (PKI).

sudo apt install openvpn easy-rsa -y

Что такое Easy-RSA? Это скрипты, которые упрощают процесс создания и управления сертификатами, необходимыми для OpenVPN. Они позволяют легко создать корневой центр сертификации (CA), сертификаты для сервера и клиентов, а также Diffie-Hellman параметры.

Шаг 2: Настройка PKI с Easy-RSA

Безопасность OpenVPN во многом зависит от правильно настроенной PKI. Мы создадим собственный Центр Сертификации (CA), который будет подписывать сертификаты для нашего OpenVPN сервера и клиентов.

2.1. Подготовка рабочей директории Easy-RSA

Скопируйте скрипты Easy-RSA в отдельную директорию, например, в `/etc/openvpn/easy-rsa/`, чтобы работать с ними независимо от системных файлов.

sudo make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

2.2. Инициализация PKI

Запустите инициализацию новой PKI-среды. Это создаст необходимые поддиректории и файлы.

./easyrsa init-pki

2.3. Создание корневого Центра Сертификации (CA)

CA будет удостоверять подлинность всех сертификатов в нашей VPN. Вам будет предложено ввести Common Name (CN) для CA. Можно оставить значение по умолчанию или ввести что-то осмысленное, например, "Valebyte OpenVPN CA".

./easyrsa build-ca nopass

Использование `nopass` означает, что приватный ключ CA не будет защищен паролем. Для production-среды с высокими требованиями к безопасности рекомендуется использовать пароль, но это усложнит автоматизацию и потребует ручного ввода пароля при каждом подписании.

2.4. Генерация сертификата и ключа сервера

Теперь создадим запрос на сертификат для нашего OpenVPN сервера, а затем подпишем его нашим CA.

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

Вам будет предложено подтвердить подписание сертификата. Введите `yes`.

2.5. Генерация Diffie-Hellman параметров

Параметры Диффи-Хеллмана используются для безопасного обмена ключами между сервером и клиентами. Этот процесс может занять некоторое время, в зависимости от мощности вашего VPS.

./easyrsa gen-dh

2.6. Создание ключа TLS-Auth (HMAC)

Ключ TLS-Auth добавляет дополнительный уровень безопасности, защищая OpenVPN от DoS-атак и сканирования портов. Это крайне рекомендуемая мера.

openvpn --genkey --secret ta.key

Этот ключ будет использоваться как сервером, так и клиентами.

Шаг 3: Настройка OpenVPN сервера

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

3.1. Копирование ключей и сертификатов

Перенесем сгенерированные файлы в директорию OpenVPN.

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

3.2. Создание конфигурационного файла сервера

OpenVPN поставляется с примером конфигурационного файла, который мы используем как основу.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
sudo nano /etc/openvpn/server.conf

Отредактируйте файл `/etc/openvpn/server.conf`, внеся следующие изменения. Обратите внимание на комментарии:

# Указываем порт и протокол. UDP предпочтительнее для VPN из-за скорости.
port 1194
proto udp

# Указываем тип туннеля. tun для IP-маршрутизации.
dev tun

# Пути к нашим ключам и сертификатам.
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0 # 0 для сервера

# Подсеть для клиентов VPN. Выберите диапазон, который не пересекается с вашей локальной сетью.
server 10.8.0.0 255.255.255.0

# Перенаправляем весь трафик клиента через VPN.
push "redirect-gateway def1 bypass-dhcp"

# Назначаем DNS-серверы для клиентов. Можно использовать публичные DNS (Cloudflare, Google).
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"

# Разрешаем клиентам видеть друг друга (опционально, для безопасности лучше закомментировать).
#client-to-client

# Разрешаем нескольким клиентам подключаться с одним сертификатом/ключом (не рекомендуется для уникальных пользователей).
#duplicate-cn

# Параметры keepalive для обнаружения неактивных клиентов.
keepalive 10 120

# Шифрование и аутентификация. Рекомендуются современные алгоритмы.
cipher AES-256-GCM
auth SHA256

# Сжатие данных (опционально, может влиять на производительность).
#compress lz4-v2
#push "compress lz4-v2"

# Безопасность: запуск OpenVPN от непривилегированного пользователя.
user nobody
group nogroup

# Сохранение состояния ключей и туннеля при перезапуске.
persist-key
persist-tun

# Статус логирования.
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3 # Уровень детализации логов (3 - хороший баланс)

# Для работы NAT
explicit-exit-notify 1

Сохраните и закройте файл.

3.3. Включение IP-форвардинга

Чтобы ваш VPS мог перенаправлять трафик от VPN-клиентов в интернет, необходимо включить IP-форвардинг.

sudo nano /etc/sysctl.conf

Найдите строку `#net.ipv4.ip_forward=1` и раскомментируйте ее (удалите `#`):

net.ipv4.ip_forward=1

Примените изменения:

sudo sysctl -p

3.4. Настройка фаервола для OpenVPN

Теперь нужно разрешить трафик OpenVPN и настроить NAT, чтобы клиенты могли выходить в интернет через ваш VPS. Для UFW это делается через файл `before.rules`. Сначала узнайте имя вашего сетевого интерфейса (обычно `eth0` или `ens3`).

ip route show default | awk '/default via/ {print $5}'

Далее, отредактируйте `/etc/ufw/before.rules`:

sudo nano /etc/ufw/before.rules

Добавьте следующие строки в самое начало файла, после строки `:ufw-before-logging-forward - [0:0]`:

# START OPENVPN RULES
# Allow traffic from OpenVPN client to any interface
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE # Замените eth0 на имя вашего основного сетевого интерфейса
COMMIT
# END OPENVPN RULES

Теперь добавьте правила для разрешения OpenVPN трафика:

sudo ufw allow 1194/udp
sudo ufw allow in on tun0 # Разрешаем трафик на интерфейсе tun0, который создаст OpenVPN
sudo ufw disable && sudo ufw enable # Перезагружаем UFW, чтобы применить правила

Проверьте статус UFW: `sudo ufw status`.

Шаг 4: Запуск и проверка OpenVPN сервера

Запустите OpenVPN сервис и убедитесь, что он работает корректно.

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

Если сервис запущен успешно, вы должны увидеть активный статус. Если есть ошибки, проверьте логи:

sudo journalctl -u openvpn@server -f

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

Теперь, когда сервер готов, нам нужно создать клиентские конфигурационные файлы.

Шаг 1: Генерация клиентских сертификатов и ключей

Вернитесь в директорию `easy-rsa` на сервере.

cd /etc/openvpn/easy-rsa

Создайте запрос на сертификат для клиента (например, `client1`) и подпишите его:

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

Вы можете повторять этот шаг для каждого нового клиента, меняя `client1` на уникальное имя.

Шаг 2: Сбор клиентских файлов

Для каждого клиента вам потребуются следующие файлы:

  • ca.crt (корневой сертификат CA)
  • client1.crt (сертификат клиента)
  • client1.key (приватный ключ клиента)
  • ta.key (ключ TLS-Auth)

Эти файлы находятся в следующих местах (из директории `/etc/openvpn/easy-rsa/`):

  • pki/ca.crt
  • pki/issued/client1.crt
  • pki/private/client1.key
  • /etc/openvpn/ta.key (его нужно скопировать из `/etc/openvpn/` обратно в `easy-rsa` или просто указать путь)

Лучший способ получить их на свою локальную машину — использовать `scp`:

# С вашего локального компьютера
scp ваш_пользователь@ваш_ip_адрес_vps:/etc/openvpn/easy-rsa/pki/ca.crt .
scp ваш_пользователь@ваш_ip_адрес_vps:/etc/openvpn/easy-rsa/pki/issued/client1.crt .
scp ваш_пользователь@ваш_ip_адрес_vps:/etc/openvpn/easy-rsa/pki/private/client1.key .
scp ваш_пользователь@ваш_ip_адрес_vps:/etc/openvpn/ta.key .

Шаг 3: Создание клиентского конфигурационного файла (.ovpn)

Создайте файл `client1.ovpn` на вашей локальной машине со следующим содержимым. Замените `ВАШ_IP_АДРЕС_VPS` на реальный IP вашего сервера.

client
dev tun
proto udp

# IP-адрес вашего OpenVPN сервера и порт.
remote ВАШ_IP_АДРЕС_VPS 1194

resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server

cipher AES-256-GCM
auth SHA256

key-direction 1 # 1 для клиента

verb 3

<ca>
# Содержимое файла ca.crt
</ca>
<cert>
# Содержимое файла client1.crt
</cert>
<key>
# Содержимое файла client1.key
</key>
<tls-auth>
# Содержимое файла ta.key
</tls-auth>

Вставьте содержимое каждого из файлов (`ca.crt`, `client1.crt`, `client1.key`, `ta.key`) между соответствующими тегами (`<ca>...</ca>` и т.д.). Это удобно, так как создает один файл `.ovpn`, который легко распространять.

Шаг 4: Подключение клиента

Установите OpenVPN клиентское ПО на ваше устройство (Windows, macOS, Linux, iOS, Android). Импортируйте файл `client1.ovpn` и подключитесь. После подключения убедитесь, что ваш публичный IP-адрес изменился на IP вашего VPS, и проверьте отсутствие DNS-утечек на сайтах вроде `ip.skr.sh` или `dnsleaktest.com`.

Управление пользователями и отзывание сертификатов

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

cd /etc/openvpn/easy-rsa
./easyrsa revoke client1
./easyrsa gen-crl
sudo cp pki/crl.pem /etc/openvpn/

Затем добавьте в `server.conf` строку:

crl-verify crl.pem

И перезапустите OpenVPN сервис: `sudo systemctl restart openvpn@server`.

Выводы

Мы прошли через полный цикл установки и настройки OpenVPN сервера на VPS, начиная от базовой подготовки сервера и заканчивая созданием клиентских конфигураций. Теперь у вас есть собственный, безопасный и полностью контролируемый VPN-сервер. Это не только повышает вашу конфиденциальность и безопасность в сети, но и дает вам гибкость в управлении доступом к вашим ресурсам.

Помните, что поддержание сервера в актуальном состоянии, регулярное обновление ПО и мониторинг логов — это неотъемлемая часть ответственного администрирования. Экспериментируйте с различными настройками OpenVPN, такими как многофакторная аутентификация или использование разных портов/протоколов, чтобы еще больше адаптировать его под свои нужды.

Если вам нужен надежный и производительный VPS для вашего OpenVPN сервера или других проектов, обратите внимание на предложения Valebyte. Наши серверы оптимизированы для стабильной работы и предоставляют широкие возможности для ваших задач.

Масштабируйте OpenVPN с облачными инстансами

Получите гибкость и производительность для вашего OpenVPN, когда вам это нужно. Наши облачные инстансы готовы к работе.

Начать с облака →

Share this post: