Гид по технологиям

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

• 6 min read • DevOps • Обновлено 27 Nov 2025
OpenVPN на openSUSE Leap 42.1
OpenVPN на openSUSE Leap 42.1

Что такое VPN и OpenVPN

VPN — виртуальная частная сеть. Это зашифрованный туннель через публичную сеть (например, интернет), который защищает трафик и повышает конфиденциальность. OpenVPN — свободное ПО для создания VPN. Оно использует библиотеку OpenSSL для шифрования и поддерживает транспорт по UDP или TCP. Аутентификация возможна с помощью предустановленных ключей, сертификатов или логин/пароль.

Кому полезно: системным администраторам и инженерам по безопасности, которым нужно быстро поднять защищённый удалённый доступ в сети на openSUSE.

Предварительные требования

  • openSUSE Leap 42.1 — 64-бит
  • root-права (или sudo)
  • устройство TUN/TAP должно быть включено

Кратко: убедитесь, что сервер доступен по SSH и у вас есть права администратора.

Шаг 1 — Проверка наличия TUN/TAP

Проверьте устройство TUN командой:

cat /dev/net/tun

Ожидаемый результат:

cat: /dev/net/tun: File descriptor in bad state

Если вместо этого устройство отсутствует, включите модуль tun в ядре или добавьте модуль в конфигурацию виртуальной машины/хостинга.

Шаг 2 — Установка OpenVPN

OpenVPN доступен в репозитории openSUSE. Установите пакет:

zypper in openvpn

После установки перейдите к настройке PKI.

Шаг 3 — Настройка easy-rsa и генерация ключей

easy-rsa — утилита для управления сертификатами. Она позволит создать собственный корневой ЦС (CA), выдать серверный и клиентские сертификаты.

Перейдите в каталог OpenVPN и скачайте easy-rsa:

cd /etc/openvpn/
wget https://github.com/OpenVPN/easy-rsa/archive/release/2.x.zip

Распакуйте архив и переместите каталог easy-rsa:

unzip 2.x.zip
mv easy-rsa-release-2.x/easy-rsa/ /etc/openvpn/
rm -rf easy-rsa-release-2.x/

Настройте параметры ключей:

cd easy-rsa/2.0/
vim vars

Отредактируйте следующие строки в файле vars:

export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="US"
export KEY_PROVINCE="California"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA"

Сохраните изменения и инициализируйте PKI:

source ./vars && ./clean-all && ./build-ca

При появлении подсказок можно принимать значения по умолчанию кнопкой Enter.

Инициализация PKI и вывод easy-rsa

Сгенерируйте параметры Диффи-Хеллмана:

./build-dh

Генерация может занять продолжительное время.

Сгенерируйте серверный приватный ключ:

./build-key-server server

Подтвердите вопросы нажатием Enter и ответом “y” при подтверждении подписи.

Генерация серверного ключа

Сгенерируйте клиентский ключ и сертификат (например, client1):

./build-key client1

Подтвердите аналогично.

Генерация клиентского сертификата и ключа

Ключи и сертификаты появятся в каталоге “keys”. Скопируйте его в каталог OpenVPN:

cp -r keys/ /etc/openvpn/

Важно: храните приватные ключи в защищённом месте и ограничьте доступ по файловой системе.

Шаг 4 — Конфигурация OpenVPN-сервера

Создайте конфигурационный файл сервера /etc/openvpn/server.conf:

cd /etc/openvpn/
vim server.conf

Пример содержимого server.conf:

#change with your port
port 2034

#You can use udp or tcp
proto udp

# dev tun создаёт маршрутизируемый IP-туннель
dev tun

#Certificate Configuration

#ca certificate
ca /etc/openvpn/keys/ca.crt

#Server Certificate
cert /etc/openvpn/keys/server.crt

#Server Key and keep this is secret
key /etc/openvpn/keys/server.key

#See the size a dh key in /etc/openvpn/keys/
dh /etc/openvpn/keys/dh2048.pem

#Internal IP will get when already connect
server 10.10.2.0 255.255.255.0

#this line will redirect all traffic through our OpenVPN
push "redirect-gateway def1"

#Provide DNS servers to the client, you can use goolge DNS
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

#Enable multiple client to connect with same key
duplicate-cn

keepalive 20 60
comp-lzo
persist-key
persist-tun
daemon

#openvpn status log
status /var/log/openvpn/openvpn-status.log

#enable log
log-append /var/log/openvpn/openvpn.log

#Log Level
verb 3

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

mkdir -p /var/log/openvpn/
touch /var/log/openvpn/{openvpn,openvpn-status}.log

Пояснение ключевых параметров:

  • port — порт для подключений клиентов (в примере 2034).
  • proto — транспортный протокол (udp выше производителен для VPN трафика).
  • server 10.10.2.0 255.255.255.0 — подсеть, выдаваемая клиентам.
  • push “redirect-gateway def1” — форсирует обход интернет-трафика клиента через VPN.

Если хотите ограничить трафик только в корпоративную сеть, не используйте redirect-gateway и вместо этого добавляйте специфические маршруты.

Шаг 5 — Настройка SuSEfirewall2 и NAT

Установите SuSEfirewall2:

zypper in SuSEfirewall2

Отредактируйте файл конфигурации:

cd /etc/sysconfig/
vim SuSEfirewall2
  • Включите маршрутизацию (строка примерно на 134):
FW_ROUTE="yes"
  • Откройте внешний UDP-порт для OpenVPN (в примере 2034):
FW_SERVICES_EXT_UDP="2034"
  • Укажите пользовательские правила:
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"

Теперь добавьте пользовательские правила iptables:

cd /etc/sysconfig/scripts/
vim SuSEfirewall2-custom

В секции fw_custom_after_chain_creation добавьте:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.10.2.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.10.2.0/24 -o eth0 -j MASQUERADE

Пояснение: правила разрешают форвардинг возвращаемых соединений, разрешают трафик от VPN-подсети и включают маскарадинг (NAT) через внешний интерфейс eth0. При необходимости замените eth0 на имя вашего внешнего интерфейса.

Включите форвардинг в sysctl:

vim /etc/sysctl.conf

Добавьте или измените строку:

net.ipv4.ip_forward = 1

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

sysctl -p

Запустите файрвол и OpenVPN:

systemctl start SuSEfirewall2
systemctl start openvpn@server

Добавьте в автозагрузку:

systemctl enable SuSEfirewall2
systemctl enable openvpn@server

Если OpenVPN не запускается, смотрите логи в /var/log/openvpn/openvpn.log.

Шаг 6 — Конфигурация клиента

Скопируйте клиентские файлы на локальную машину (выполняется на клиенте):

scp root@serverip:/etc/openvpn/keys/ca.crt ~/myvpn/
scp root@serverip:/etc/openvpn/keys/client1.crt ~/myvpn/
scp root@serverip:/etc/openvpn/keys/client1.key ~/myvpn/

Создайте клиентский конфиг client1.ovpn:

cd ~/myvpn/
vim client1.ovpn

Содержимое client1.ovpn:

client
dev tun
proto udp

#Server IP and Port
remote SERVERIP 2034

resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo

Замените SERVERIP на публичный IP или DNS-имя сервера. Для теста на Linux можно подключиться из терминала:

cd ~/myvpn/
sudo openvpn --config client1.ovpn

Или использовать NetworkManager / клиент для Windows/macOS.

Рекомендации по безопасности и жёсткая настройка

  • Используйте ключи размера не менее 2048 бит. Для повышенной безопасности рассмотрите 3072/4096.
  • Регулярно отзывайте и пересоздавайте клиентские сертификаты при подозрении на компрометацию.
  • Отключите duplicate-cn, если не хотите, чтобы несколько клиентов использовали один сертификат.
  • Храните приватные ключи с правами 600 и владельцем root.
  • Ограничьте доступ к /etc/openvpn/keys только администраторам.
  • При необходимости используйте tls-auth/tls-crypt для защиты от DDoS и предотвращения неавторизованных соединений.

Пример добавления tls-auth (нужно сгенерировать ta.key командой openvpn –genkey –secret ta.key и разместить на сервере и клиенте):

# в server.conf
tls-auth /etc/openvpn/keys/ta.key 0

# в client1.ovpn
tls-auth ta.key 1

Управление сертификатами и отзыв (revocation)

Чтобы отозвать клиентский сертификат (например, client1) в easy-rsa v2, используйте:

cd /etc/openvpn/easy-rsa/2.0/
./revoke-full client1

После отзыва обновите CRL (файл CRL) и убедитесь, что OpenVPN настроен использовать его (параметр crl-verify).

Отладка и типичные ошибки

Проблема: OpenVPN не стартует — проверьте логи:

less /var/log/openvpn/openvpn.log

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

systemctl status openvpn@server

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

  • Включён ли net.ipv4.ip_forward = 1
  • Правильна ли запись MASQUERADE на внешнем интерфейсе
  • Не блокирует ли внешний фаерволл порт 2034

Если клиент не может подключиться — проверьте согласованность протокола (udp/tcp), порт и наличие файла ta.key, если он используется.

Проверки и тесты (Критерии приёмки)

  • OpenVPN-сервис запущен: systemctl status openvpn@server показывает active (running).
  • Клиент подключается и получает IP из диапазона 10.10.2.0/24.
  • ping до внутреннего хоста через VPN проходит.
  • при push “redirect-gateway def1” внешний IP клиента соответствует IP сервера.
  • файлы ключей имеют права 600 и владелец root.

Шаблон быстрых команд (SOP) — кратко

  1. Установить пакеты: zypper in openvpn SuSEfirewall2
  2. Развернуть easy-rsa и сгенерировать CA/ключи
  3. Скопировать keys в /etc/openvpn
  4. Создать /etc/openvpn/server.conf
  5. Настроить SuSEfirewall2, NAT и sysctl
  6. systemctl start openvpn@server && systemctl enable openvpn@server
  7. Скопировать клиентские файлы и протестировать подключение

Роли и чек-листы

Администратор сервера:

  • Проверил наличие TUN
  • Сгенерировал CA и ключи
  • Настроил server.conf и firewall
  • Запустил сервис и проверил логи

Администратор безопасности:

  • Проанализировал права на ключи
  • Внедрил tls-auth/tls-crypt
  • Настроил периодическую смену сертификатов

Пользователь клиента:

  • Получил ca.crt, client1.crt, client1.key
  • Настроил client1.ovpn с правильным SERVERIP
  • Подключился и проверил доступ к ресурсам

Советы по переносимости и миграции

  • Для новых версий openSUSE или systemd-систем имя сервиса может отличаться; проверяйте unit-ы в /lib/systemd/system.
  • На современных системах предпочтительнее использовать easy-rsa v3; синтаксис и путь к скриптам отличается.
  • Если у вас nftables вместо iptables, портирование правил NAT потребует отдельной инструкции.

Частые альтернативы и когда они уместны

  • WireGuard — проще в настройке и быстрее в большинстве сценариев, но менее гибок по функциям TLS/PKI.
  • IPsec (strongSwan) — стандартный выбор для корпоративных VPN с поддержкой IKE и интеграцией в сетевые устройства.

Краткий глоссарий (1 строка)

  • CA — центр сертификации, подписывает сертификаты.
  • DH — параметры Диффи-Хеллмана для обмена ключами.
  • TA — статический ключ для tls-auth/tls-crypt, дополнительная защита канала управления.

Ресурсы и ссылки

Краткое резюме

  • OpenVPN хорошо подходит для гибкой настройки VPN с использованием сертификатов. Следуйте шагам: установить пакет, сгенерировать PKI, настроить конфиг сервера, открыть порт в SuSEfirewall2 и включить NAT. Не забывайте про безопасность ключей и регулярный аудит.

Важно: храните приватные ключи в защищённом месте и ограничьте доступ по правам файловой системы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро