Установка и настройка 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.

Сгенерируйте параметры Диффи-Хеллмана:
./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) — кратко
- Установить пакеты: zypper in openvpn SuSEfirewall2
- Развернуть easy-rsa и сгенерировать CA/ключи
- Скопировать keys в /etc/openvpn
- Создать /etc/openvpn/server.conf
- Настроить SuSEfirewall2, NAT и sysctl
- systemctl start openvpn@server && systemctl enable openvpn@server
- Скопировать клиентские файлы и протестировать подключение
Роли и чек-листы
Администратор сервера:
- Проверил наличие 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, дополнительная защита канала управления.
Ресурсы и ссылки
- https://en.opensuse.org/SDB:OpenVPN_Installation_and_Setup
- https://www.howtoforge.com/tutorial/how-to-install-openvpn-on-centos-7/
Краткое резюме
- OpenVPN хорошо подходит для гибкой настройки VPN с использованием сертификатов. Следуйте шагам: установить пакет, сгенерировать PKI, настроить конфиг сервера, открыть порт в SuSEfirewall2 и включить NAT. Не забывайте про безопасность ключей и регулярный аудит.
Важно: храните приватные ключи в защищённом месте и ограничьте доступ по правам файловой системы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента