6.14 Установка и настройка сервера OpenVPN
OpenVPN – это надежное программное обеспечение с открытым кодом для создания защищенных VPN-туннелей. Оно позволяет безопасно передавать данные через публичные сети, шифруя весь трафик.
Использование VPN сервера предоставляет возможность безопасно подключаться к корпоративной сети удаленно, обходить географические ограничения и защищать личные данные при работе через публичные Wi-Fi сети.
Сегодня OpenVPN считается одним из самых безопасных VPN решений благодаря использованию надежных алгоритмов шифрования и открытому коду, который постоянно проверяется сообществом.
Важно: перед началом установки убедитесь, что у Вас есть следующие привилегии.
- У Вас есть root-доступ к серверу.
- Ваш сервер имеет статический IP-адрес.
- На сервере открыты нужные порты (по умолчанию UDP 1194).
- Система обновлена до последней версии.
Процедура установки
Процесс установки OpenVPN зависит от операционной системы. Перед началом установки важно убедиться, что система соответствует всем необходимым требованиям и имеет достаточно ресурсов для стабильной работы VPN-сервера.
Установка OpenVPN включает не только копирование файлов, но и настройку системы безопасности, создание сертификатов и настройку сетевых параметров. Важно выполнять все шаги последовательно и внимательно, поскольку ошибки на этом этапе могут привести к проблемам с безопасностью или работоспособностью сервера.
Установка на Debian/Ubuntu:
- Обновление системы:
- sudo apt update && sudo apt upgrade -y
- Установка OpenVPN и утилиты easy-rsa:
- sudo apt install openvpn easy-rsa -y
- Настройка PKI:
- mkdir -p /etc/openvpn/server/certs
- cd /etc/openvpn/server
- cp -r /usr/share/easy-rsa .
- cd easy-rsa
Установка на CentOS/AlmaLinux/RockyLinux:
- Обновление системы:
- sudo yum update -y
- Добавление EPEL репозитория:
- sudo yum install epel-release -y
- Установка OpenVPN:
- sudo yum install openvpn easy-rsa -y
- Подготовка директорий:
- mkdir -p /etc/openvpn/server/certs
- cd /etc/openvpn/server
- cp -r /usr/share/easy-rsa .
- cd easy-rsa
Подготовка PKI и сертификатов
Public Key Infrastructure (PKI) является критически важной составляющей безопасности OpenVPN. Она обеспечивает создание и управление цифровыми сертификатами, которые используются для аутентификации и шифрования соединений. Easy-RSA - это утилита для управления PKI, которая позволяет легко создавать сертификаты для сервера и клиентов.
В процессе настройки PKI создаются:
- Корневой сертификат (CA) для подписи других сертификатов.
- Сертификат и приватный ключ сервера.
- Параметры Диффи-Хеллмана для безопасного обмена ключами.
- Дополнительный ключ TLS для защиты от DOS-атак.
Выполните приведенные команды по очереди. Во время выполнения может возникнуть одно из приведенных ниже действий:
- Подтверждение действий. Если появится запрос подтверждения, введите
yes
и нажмите Enter. - Ввод пароля. Некоторые команды могут требовать пароль. Помните, что во время ввода пароля символы не отображаются в консоли. Просто введите пароль и нажмите
Enter
. - Запрос имени пользователя или
commonName
. В некоторых случаях система может запросить ввести имя пользователя или значение commonName. Это может быть название сервера или клиента. Введите нужное значение (например, server для сервера или client1 для клиента) и нажмитеEnter
.
- ./easyrsa init-pki
- ./easyrsa build-ca nopass
- ./easyrsa gen-req server nopass
- ./easyrsa sign-req server server
- ./easyrsa gen-dh
- openvpn --genkey secret ta.key
Конфигурация сервера
Этот этап включает создание основного конфигурационного файла OpenVPN, который определяет параметры работы сервера, включая протокол, порт, методы шифрования и аутентификации, а также настройки сети для клиентов.
Создание базовой конфигурации:
- cat > /etc/openvpn/server/server.conf << EOF
- port 1194
- proto udp
- dev tun
- ca easy-rsa/pki/ca.crt
- cert easy-rsa/pki/issued/server.crt
- key easy-rsa/pki/private/server.key
- dh easy-rsa/pki/dh.pem
- tls-auth easy-rsa/ta.key 0
- server 10.8.0.0 255.255.255.0
- 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-GCM
- auth SHA256
- user nobody
- group nogroup
- persist-key
- persist-tun
- status openvpn-status.log
- verb 3
- EOF
Далее мы готовим операционную систему к работе с VPN-сервером, включая настройку IP-форвардинга, который позволяет передавать пакеты между различными сетевыми интерфейсами, что необходимо для функционирования VPN.
Включение IP форвардинга (для всех ОС):
- echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-openvpn.conf
- sysctl --system
Настройка файрвола
Настройка файрвола включает создание правил для фильтрации входящего и исходящего трафика, настройку NAT (Network Address Translation) для обеспечения доступа клиентов к внешним ресурсам, а также настройку маршрутизации трафика между различными сетевыми интерфейсами.
В данном разделе мы рассмотрим настройку различных типов файрволов, включая традиционный iptables, UFW (Uncomplicated Firewall) для Ubuntu/Debian и firewalld для CentOS. Каждый из этих инструментов имеет свои особенности и преимущества, поэтому выбор конкретного решения зависит от Ваших потребностей и опыта администрирования.
Настройка Iptables:
Важно: замените eth0
на Ваш реальный сетевой интерфейс.
# Очистка существующих правил
iptables -F
iptables -X
iptables -t nat -F
# Установка базовой политики
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Разрешение локального трафика
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Разрешение установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешение SSH (порт 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Разрешение OpenVPN (порт 1194 UDP)
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
- Настройка NAT и форвардинга:
# Определение внешнего интерфейса
INTERFACE=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)')
# Настройка NAT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $INTERFACE -j MASQUERADE
# Настройка форвардинга
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -i $INTERFACE -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o $INTERFACE -j ACCEPT
- Сохранение правил Iptables.
Для Debian/Ubuntu:
- sudo apt install iptables-persistent -y
- netfilter-persistent save
- netfilter-persistent reload
Для CentOS/AlmaLinux/RockyLinux:
- service iptables save
- /etc/init.d/iptables restart
UFW на Ubuntu/Debian:
- Настройка UFW:
- ufw default deny incoming
- ufw default allow outgoing
- ufw allow ssh
- ufw allow 1194/udp
- ufw allow from 10.8.0.0/24
- Настройка форвардинга:
- echo 'net.ipv4.ip_forward=1' >> /etc/ufw/sysctl.conf
- echo '*nat' >> /etc/ufw/before.rules
- echo ':POSTROUTING ACCEPT [0:0]' >> /etc/ufw/before.rules
- echo '-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE' >> /etc/ufw/before.rules
- echo 'COMMIT' >> /etc/ufw/before.rules
-
- ufw enable
Firewalld на CentOS/AlmaLinux/RockyLinux:
- Базовые настройки:
- firewall-cmd --permanent --add-service=openvpn
- firewall-cmd --permanent --add-port=1194/udp
- firewall-cmd --permanent --add-masquerade
- Настройка форвардинга:
- firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
- Применение изменений:
- firewall-cmd --reload
Генерация клиентских сертификатов
- Генерация сертификатов для клиента:
- cd /etc/openvpn/server/easy-rsa
- ./easyrsa gen-req client1 nopass
- ./easyrsa sign-req client client1
- Создание клиентской конфигурации:
- mkdir -p /etc/openvpn/client
- cat > /etc/openvpn/client/client.ovpn << EOF
- client
- dev tun
- proto udp
- remote YOUR_SERVER_IP 1194
- resolv-retry infinite
- nobind
- persist-key
- persist-tun
- remote-cert-tls server
- cipher AES-256-GCM
- auth SHA256
- key-direction 1
- verb 3
- EOF
- Добавление сертификатов в конфигурацию:
- echo "<ca>" >> /etc/openvpn/client/client.ovpn
- cat pki/ca.crt >> /etc/openvpn/client/client.ovpn
- echo "</ca>" >> /etc/openvpn/client/client.ovpn
-
- echo "<cert>" >> /etc/openvpn/client/client.ovpn
- cat pki/issued/client1.crt >> /etc/openvpn/client/client.ovpn
- echo "</cert>" >> /etc/openvpn/client/client.ovpn
-
- echo "<key>" >> /etc/openvpn/client/client.ovpn
- cat pki/private/client1.key >> /etc/openvpn/client/client.ovpn
- echo "</key>" >> /etc/openvpn/client/client.ovpn
-
- echo "<tls-auth>" >> /etc/openvpn/client/client.ovpn
- cat ta.key >> /etc/openvpn/client/client.ovpn
- echo "</tls-auth>" >> /etc/openvpn/client/client.ovpn
Запуск сервера
Для Debian/Ubuntu:
- systemctl enable openvpn-server@server
- systemctl start openvpn-server@server
Для CentOS/AlmaLinux/RockyLinux:
- systemctl enable openvpn@server
- systemctl start openvpn@server
Информируем: как проверить статус сервиса:
- systemctl status openvpn-server@server
- systemctl status openvpn@server
Подключение на компьютере
Настройка OpenVPN на персональном компьютере предоставляет возможность безопасного удаленного доступа к корпоративным ресурсам и защищенного соединения при работе через публичные сети. Процесс настройки отличается в зависимости от операционной системы, но общие принципы остаются неизменными.
Windows
Подключение на компьютерах с Windows можно выполнить с помощью официального клиента OpenVPN GUI. Этот клиент предлагает удобный графический интерфейс для управления VPN-соединениями и поддерживает все современные версии Windows. Процесс настройки включает установку программы и импорт конфигурационных файлов.
-
Установка клиента:
- Загрузите OpenVPN клиент.
- Запустите инсталлятор и выполните стандартные шаги установки.
-
Настройка:
- Переместите конфигурационные файлы в
C:\Users\Ваш_Пользователь\OpenVPN\config\
илиC:\Program Files\OpenVPN\config\
. - Необходимые файлы (может быть нужно от 1 до 4 файлов, в зависимости от настроек сервера):
- Конфигурация (
*.ovpn
). - Сертификат клиента (
*.crt
). - Приватный ключ (
*.key
). - Сертификат CA (
ca.crt
).
- Конфигурация (
- Переместите конфигурационные файлы в
Информируем: для удобства можно создавать отдельную папку под каждую конфигурацию.
- Подключение:
- Запустите клиент OpenVPN GUI.
- Кликните правой кнопкой на иконке в системном трее.
- Выберите
Connect
.
Linux
Linux предоставляет гибкие возможности для настройки OpenVPN как через командную строку, так и через графический интерфейс. Благодаря встроенной поддержке OpenVPN в большинстве дистрибутивов, процесс настройки обычно не вызывает сложностей у пользователей, знакомых с Linux-системами.
Установка через терминал:
- sudo apt install openvpn -y
- sudo yum install openvpn -y
- Настройка через терминал:
- sudo cp *.ovpn /etc/openvpn/client/
- sudo cp *.crt /etc/openvpn/client/
- sudo cp *.key /etc/openvpn/client/
- Запуск подключения:
- sudo openvpn --config /etc/openvpn/client/client.ovpn
Установка через графический интерфейс:
- Установите Network Manager OpenVPN плагин:
- sudo apt install network-manager-openvpn-gnome
- sudo yum install NetworkManager-openvpn-gnome
- Откройте настройки сети.
- Добавьте VPN-подключение.
- Импортируйте файл
.ovpn
.
MacOS
Для пользователей MacOS можно использовать специальную версию OpenVPN Connect, которая полностью интегрируется с системой и обеспечивает простой и надежный способ управления VPN-подключениями. Приложение поддерживает все современные версии MacOS и предлагает интуитивно понятный интерфейс.
-
Установка:
- Загрузите OpenVPN Connect
- Запустите инсталлятор и выполните стандартные шаги установки.
-
Настройка:
- Откройте OpenVPN Connect.
- Нажмите
+
для добавления профиля. - Импортируйте
.ovpn
файл перетаскиванием или через менюBrowse
. - Введите необходимые учетные данные.
- Сохраните профиль.
Подключение на мобильных устройствах
Мобильные устройства стали важной частью нашей жизни, поэтому безопасный доступ к сети через VPN на смартфонах и планшетах может понадобиться для защиты данных. OpenVPN предлагает официальные клиенты для всех популярных мобильных платформ.
Важно: большинство бесплатных мобильных клиентов OpenVPN не поддерживают протокол tap
, который используется по умолчанию. Чтобы избежать проблем, настройте сервер OpenVPN для работы с протоколом tun
.
Android
OpenVPN Connect для Android обеспечивает надежный и безопасный способ подключения к VPN-серверам. Приложение доступно через Google Play Market и поддерживает широкий спектр Android-устройств, включая смартфоны и планшеты различных производителей. Интерфейс программы оптимизирован для удобного использования на мобильных устройствах.
-
Установка:
- Загрузите OpenVPN Connect из Google Play Market.
-
Настройка:
- Перенесите
.ovpn
файл на устройство. - Откройте OpenVPN Connect.
- Нажмите
+
и выберите способ импорта:URL
илиUpload File
. - Мы используем
Upload File
, нажимаемBrowse
для выбора файла конфигурации - Найдите и выберите ранее загруженный
.ovpn
файл. - Введите название подключения (
Profile Name
) и учетные данные (Username
иPassword
).
- Перенесите
iOS
Версия OpenVPN Connect для iOS разработана с учетом особенностей экосистемы Apple и обеспечивает бесперебойную работу на iPhone и iPad. Приложение полностью соответствует требованиям безопасности App Store и интегрируется с системными настройками iOS для максимального удобства использования.
-
Установка:
- Загрузите OpenVPN Connect из App Store.
-
Настройка:
- Импортируйте профиль одним из способов:
- Через файл
.ovpn
(iCloud, Dropbox). - Через URL подключения.
- Через прямой импорт от провайдера.
- Введите название подключения и учетные данные.
- Через файл
- Импортируйте профиль одним из способов:
Важно:
- Убедитесь в наличии всех необходимых файлов сертификатов.
- Используйте только официальные источники для загрузки клиентов.
- Регулярно обновляйте программное обеспечение.
- Храните конфигурационные файлы в надежном месте.
Информируем: для получения дополнительной информации обращайтесь к официальной документации OpenVPN и документации Вашего устройства.