Представь, что твой сервер TrueNAS с важными данными находится в офисе, а тебе нужно получить доступ к общим папкам из дома. Или наоборот — централизованное хранилище дома, а доступ нужен с работы. Давай разберем, как безопасно организовать доступ к общей папке TrueNAS из другой локальной сети, превратив географическую проблему в техническую задачу с элегантным решением.
Почему нельзя просто открыть порты SMB/NFS в интернет?
Протоколы общего доступа к файлам, такие как SMB и NFS, создавались для доверенных локальных сетей. Их использование через интернет без защиты — это как оставить ключи от квартиры под ковриком. Вместо этого мы создадим безопасный туннель между сетями.
Сравнение методов доступа из другой сети
| Метод | Сложность | Безопасность | Скорость | Использование |
|---|---|---|---|---|
| WireGuard VPN | Средняя | Очень высокая | Высокая | Постоянный доступ |
| OpenVPN | Высокая | Высокая | Средняя | Постоянный доступ |
| Tailscale/ZeroTier | Низкая | Высокая | Зависит от сервера | Быстрый старт |
| SSH туннель | Низкая | Средняя | Низкая | Временный доступ |
Настройка WireGuard VPN на TrueNAS Scale
WireGuard — современный, быстрый и безопасный VPN протокол. Идеально подходит для нашей задачи. Начнем с настройки на стороне TrueNAS.
Шаг 1: Установка приложения WireGuard
- В веб-интерфейсе TrueNAS перейди в "Приложения"
- Нажми "Установить" и найди "WireGuard"
- Настрой параметры установки:
- Название:
wireguard-server - Сетевой интерфейс: выбери основной
- Включи "Host Network" для доступа к хосту
- Название:
Шаг 2: Конфигурация сервера WireGuard
Создадим конфигурационный файл сервера. Подключись к TrueNAS по SSH или используй Shell в веб-интерфейсе.
# Создаем приватный и публичный ключи для сервера
wg genkey | tee /mnt/pool/apps/wireguard/privatekey | wg pubkey > /mnt/pool/apps/wireguard/publickey
# Создаем конфиг сервера
cat > /mnt/pool/apps/wireguard/wg0.conf << EOF
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = $(cat /mnt/pool/apps/wireguard/privatekey)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Клиент 1 (твой домашний ПК)
[Peer]
PublicKey = КЛЮЧ_КЛИЕНТА_1
AllowedIPs = 10.10.0.2/32
# Клиент 2 (ноутбук)
[Peer]
PublicKey = КЛЮЧ_КЛИЕНТА_2
AllowedIPs = 10.10.0.3/32
EOF
КЛЮЧ_КЛИЕНТА_1 и КЛЮЧ_КЛИЕНТА_2 на реальные публичные ключи клиентов, которые сгенерируешь позже.
Шаг 3: Настройка маршрутизации в TrueNAS
Чтобы клиенты VPN могли видеть локальную сеть TrueNAS, нужно настроить статические маршруты.
# Включаем форвардинг пакетов
sysctl -w net.ipv4.ip_forward=1
# Делаем настройку постоянной
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# Добавляем маршрут в локальную сеть (пример для сети 192.168.1.0/24)
ip route add 192.168.1.0/24 dev wg0
Настройка клиента для доступа к общей папке
Теперь настроим клиентскую сторону. Я покажу пример для Windows и Linux.
Конфиг клиента WireGuard (Windows/Linux)
[Interface]
PrivateKey = ТВОЙ_ПРИВАТНЫЙ_КЛЮЧ_КЛИЕНТА
Address = 10.10.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА
Endpoint = ТВОЙ_ПУБЛИЧНЫЙ_IP:51820
AllowedIPs = 10.10.0.0/24, 192.168.1.0/24
PersistentKeepalive = 25
Подключение к общей папке SMB после установки VPN
После успешного подключения VPN, общая папка TrueNAS будет доступна как в локальной сети:
# Linux/Mac
mount -t cifs //192.168.1.100/общая_папка /mnt/truenas \
-o username=твой_пользователь,password=твой_пархоль,vers=3.0
# Windows
# В проводнике: \\192.168.1.100\общая_папка
Альтернатива: Быстрая настройка с Tailscale
Если не хочешь возиться с ручной настройкой VPN, Tailscale — отличная альтернатива. Это WireGuard "как сервис".
# Установка Tailscale на TrueNAS через приложение
# Или через командную строку:
curl -fsSL https://tailscale.com/install.sh | sh
# Авторизация
tailscale up --advertise-routes=192.168.1.0/24 --accept-routes
# В веб-интерфейсе Tailscale разреши маршруты для других устройств
Частые вопросы (FAQ)
Можно ли использовать динамический IP адрес для доступа к TrueNAS?
Да, можно. Используй DDNS (Dynamic DNS) сервисы типа DuckDNS, No-IP или DynDNS. Настрой обновление IP на роутере или самом TrueNAS, затем используй доменное имя вместо IP в конфиге WireGuard.
Почему медленная скорость передачи файлов через VPN?
Скорость ограничена твоим интернет-каналом (особенно upload на стороне TrueNAS). Проверь:
- Скорость интернета на обоих концах
- Используй WireGuard вместо OpenVPN для лучшей производительности
- Проверь MTU настройки (обычно 1420 для WireGuard поверх Ethernet)
Как обеспечить безопасность при доступе из другой сети?
- Используй сложные ключи WireGuard (256-битные)
- Ограничь доступ по IP в настройках SMB/NFS
- Регулярно обновляй TrueNAS и приложения
- Используй двухфакторную аутентификацию для веб-интерфейса
- Настрой fail2ban для защиты SSH
Можно ли настроить автоматическое подключение к общей папке при запуске VPN?
Да. На Windows используй скрипт PostUp в WireGuard. На Linux добавь mount команду в /etc/network/if-up.d/. На Mac используй launchd или создай Automator workflow.
Заключение
Настройка доступа к общей папке TrueNAS из другой локальной сети — это не магия, а хорошо документированная инженерная задача. WireGuard предоставляет золотой стандарт безопасности и производительности, а Tailscale делает этот процесс почти тривиальным. Помни главное правило: никогда не открывай порты файловых протоколов напрямую в интернет. VPN туннель — твой надежный щит и проводник между сетями.