Настройка OpenVPN на TrueNAS: Пошаговая инструкция для VPN-сервера | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

OpenVPN на TrueNAS: Полное руководство по настройке VPN-сервера

26 февраля 2026 8 мин. чтения #openvpn #truenas #truenas core #truenas scale #vpn сервер #настройка vpn #удаленный доступ

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

Зачем запускать OpenVPN на TrueNAS?

TrueNAS — это не просто система хранения, а полноценная платформа, на которой можно развернуть сервисы. Запуск OpenVPN на TrueNAS дает несколько преимуществ:

  • Безопасный удаленный доступ ко всей домашней сети через один вход
  • Возможность работать с сетевыми ресурсами (SMB, NFS) как из локальной сети
  • Доступ к веб-интерфейсам сервисов (TrueNAS, Nextcloud, Plex) без проброса портов в интернет
  • Шифрование всего трафика между клиентом и сервером
  • Централизованное управление доступом через один сервер
Важно: В этом руководстве мы рассмотрим два основных подхода: использование Docker-контейнера на TrueNAS Scale и плагина на TrueNAS Core. Выбери метод, соответствующий твоей версии TrueNAS.

Метод 1: OpenVPN на TrueNAS Scale через Docker

TrueNAS Scale основан на Debian Linux и поддерживает запуск приложений через Docker (Kubernetes). Это наиболее гибкий и современный способ.

Шаг 1: Подготовка сети и хранилища

Сначала создадим Dataset для хранения конфигурации OpenVPN и сертификатов:

  1. В веб-интерфейсе TrueNAS перейди в «Datasets»
  2. Создай новый Dataset (например, openvpn-config)
  3. Установи права доступа: Владелец/Группа — apps, разрешения — 770

Шаг 2: Настройка статического IP для TrueNAS

Для VPN-сервера критически важно иметь статический IP-адрес в локальной сети:

bash
# Проверь текущие сетевые настройки
ip addr show

# В веб-интерфейсе TrueNAS:
# 1. Перейди в Network → Interfaces
# 2. Выбери основной интерфейс (обычно enp0sX или eth0)
# 3. Установи статический IP, маску, шлюз и DNS
# 4. Примени изменения

Шаг 3: Установка приложения OpenVPN через TrueNAS Apps

Используем готовый образ kylemanna/openvpn — один из самых популярных и хорошо поддерживаемых.

  1. Перейди в «Apps»«Discover Apps»
  2. Нажми «Launch Docker Image»
  3. Заполни параметры:
    • Image Repository: kylemanna/openvpn
    • Image Tag: latest или конкретную версию

Шаг 4: Конфигурация контейнера OpenVPN

Настройка томов и переменных окружения — ключевой этап:

yaml
# В разделе Storage (тома) добавь:
- Host Path: /mnt/pool/openvpn-config
  Mount Path: /etc/openvpn
  Read Only: false

# В разделе Network Configuration:
- Network Type: Host Network
  # ИЛИ если используешь отдельную сеть:
  # Host Network: false
  # Port Forwarding: 1194 UDP → 1194 контейнера

# Переменные окружения (Environment Variables):
- name: OVPN_SERVER_URL
  value: "udp://ТВОЙ_ПУБЛИЧНЫЙ_IP_ИЛИ_DNS:1194"
- name: OVPN_NETWORK
  value: "10.8.0.0 255.255.255.0"
- name: OVPN_DNS_SERVERS
  value: "8.8.8.8,8.8.4.4"  # или твои локальные DNS

Шаг 5: Инициализация сервера и генерация клиентских конфигов

После запуска контейнера нужно инициализировать PKI (инфраструктуру открытых ключей):

bash
# 1. Подключись к консоли контейнера через TrueNAS UI
# 2. Инициализируй конфигурацию (замени EXAMPLE.COM на свой домен)
docker-compose run --rm openvpn ovpn_genconfig -u udp://EXAMPLE.COM:1194

# 3. Сгенерируй корневой сертификат и ключ
# Введи пароль для CA и пароль для сертификата сервера
docker-compose run --rm openvpn ovpn_initpki

# 4. Сгенерируй клиентский сертификат без пароля (для удобства)
docker-compose run --rm openvpn easyrsa build-client-full client1 nopass

# 5. Экспортируй конфиг для клиента
docker-compose run --rm openvpn ovpn_getclient client1 > client1.ovpn
Внимание: Файл client1.ovpn содержит приватные ключи. Храни его в безопасности! Не передавай по незащищенным каналам.

Метод 2: OpenVPN на TrueNAS Core через плагин

Для TrueNAS Core (на основе FreeBSD) используется плагин из коллекции FreeBSD.

Установка плагина OpenVPN

  1. Перейди в «Plugins»
  2. Найди «openvpn» в списке доступных плагинов
  3. Нажми «Install», выбери jail (или создай новую)
  4. После установки перейди в «Jails» → выбери jail OpenVPN → «Shell»

Базовая настройка сервера OpenVPN в FreeBSD jail

bash
# Внутри jail обнови пакеты и установи OpenVPN
pkg update && pkg upgrade -y
pkg install openvpn easy-rsa

# Скопируй пример конфигурации
cp /usr/local/share/examples/openvpn/sample-config-files/server.conf \
    /usr/local/etc/openvpn/server.conf

# Отредактируй конфиг
vi /usr/local/etc/openvpn/server.conf

# Ключевые параметры для редактирования:
# port 1194
# proto udp
# dev tun
# server 10.8.0.0 255.255.255.0
# push "route 192.168.1.0 255.255.255.0"  # твоя локальная сеть
# push "dhcp-option DNS 192.168.1.1"      # твой DNS

Настройка сетевого моста и фаервола

Чтобы клиенты VPN могли видеть другие устройства в локальной сети, нужно правильно настроить маршрутизацию.

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

bash
# Подключись к TrueNAS по SSH
ssh root@truenas.local

# Проверь текущие настройки
sysctl net.ipv4.ip_forward

# Если значение 0, включи форвардинг
sysctl -w net.ipv4.ip_forward=1

# Чтобы настройка сохранилась после перезагрузки:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

Правила фаервола для OpenVPN

Не забудь открыть порт 1194 UDP на фаерволе TrueNAS:

bash
# На TrueNAS Scale через веб-интерфейс:
# 1. Перейди в Network → Firewall Rules
# 2. Добавь новое правило:
#   - Interface: выбери WAN интерфейс
#   - Protocol: UDP
#   - Port: 1194
#   - Action: ALLOW
#   - Description: OpenVPN Server

# Для TrueNAS Core (через IPFW в jail):
ipfw add allow udp from any to me 1194

Сравнение методов: Docker на Scale vs Плагин на Core

Критерий TrueNAS Scale + Docker TrueNAS Core + Плагин
Простота настройки Высокая (GUI, готовые образы) Средняя (требует работы в shell)
Гибкость Очень высокая (любые образы Docker) Ограниченная (только FreeBSD пакеты)
Производительность Отличная (прямой доступ к сети) Хорошая (изоляция через jail)
Обновление Простое (обновление образа) Через pkg update
Рекомендация Для новых установок и Scale Для существующих систем Core

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

Проблема: Клиент подключается, но не видит локальную сеть.
Решение: Проверь параметры push "route ..." в конфиге сервера и включен ли IP-форвардинг.
Проблема: Ошибка TLS handshake failed.
Решение: Убедись, что время на сервере и клиенте синхронизировано (NTP). Проверь срок действия сертификатов.
Проблема: Низкая скорость через VPN.
Решение: 1) Используй протокол UDP вместо TCP. 2) Поэкспериментируй с параметрами шифрования. 3) Убедись, что у провайдера нет ограничений на VPN-трафик.

Оптимизация производительности OpenVPN

Для максимальной скорости добавь эти параметры в конфиг сервера:

config
# В server.conf или ovpn_env.sh:
sndbuf 0
rcvbuf 0
push "sndbuf 0"
push "rcvbuf 0"

# Используй современные алгоритмы шифрования:
cipher AES-256-GCM
auth SHA256

# Для многопоточности (только если CPU поддерживает):
# (добавь в конфиг клиента тоже)
# ncp-ciphers AES-256-GCM:AES-128-GCM

Безопасность: Лучшие практики

  • Используй стойкие алгоритмы шифрования: AES-256-GCM вместо устаревшего Blowfish
  • Регулярно обновляй OpenVPN: Уязвимости исправляются в новых версиях
  • Ограничь доступ по IP: Настрой фаервол, чтобы принимать подключения только с доверенных сетей
  • Используй двухфакторную аутентификацию: Можно интегрировать с Google Authenticator
  • Веди логи: Мониторь подключения в /var/log/openvpn.log

Автоматизация: Скрипт для быстрого создания клиентов

Создай скрипт для автоматической генерации клиентских конфигов:

bash
#!/bin/bash
# save as /mnt/pool/openvpn-config/create_client.sh

CLIENT_NAME="$1"
if [ -z "$CLIENT_NAME" ]; then
    echo "Usage: $0 client_name"
    exit 1
fi

# Генерация клиента (для Docker-контейнера)
docker exec openvpn_app easyrsa build-client-full $CLIENT_NAME nopass
docker exec openvpn_app ovpn_getclient $CLIENT_NAME > /mnt/pool/openvpn-config/$CLIENT_NAME.ovpn

# Добавь параметры для Windows клиентов, если нужно
if [ "$2" = "windows" ]; then
    echo -e "\n# Windows-specific settings\nroute-method exe\nroute-delay 2" >> /mnt/pool/openvpn-config/$CLIENT_NAME.ovpn
fi

echo "Client config generated: /mnt/pool/openvpn-config/$CLIENT_NAME.ovpn"
echo "Transfer this file securely to the client!"

Теперь у тебя есть полноценный VPN-сервер на базе TrueNAS. Ты можешь безопасно подключаться к своей домашней сети из любой точки мира, работать с файлами на NAS как из локальной сети и управлять другими сервисами. Помни о безопасности: регулярно обновляй, используй стойкие пароли и мониторь логи подключений.

Поделиться:
Сохранить гайд? В закладки браузера