Вот вы и развернули у себя дома TrueNAS. Установили кучу приложений, подняли несколько полезных для себя сервисов. И столкнулись с вопросом защиты данных и организации безопасного подключения к своей домашней сети. Подключаться, естественно, собираетесь с работы или из любой точки земного шара.
Можно заморочиться и пойти каким-нибудь классическим путём: развернуть дома OpenVPN или WireGuard, добавить для удобства какой-нибудь веб-интерфейс, прокинуть на домашнем роутере порт к серверу, выдать себе ключи шифрования, настроить маршрутизацию к остальным домашним сервисам.
Можно оптимизировал процесс: поставить себе в качестве домашнего роутера что-то продвинутое типа Mikrotik, Keenetic или ещё что-то на OpenWRT, поднять на нём VPN сервер, выдать себе ключи шифрования, настроить маршрутизацию к остальным домашним сервисам.
Можно ещё оптимизировать процесс: развернуть на TrueNAS в качестве приложения WireGuard, я его там видел. Поищем приложения по ключевому слову "VPN".

Да, есть WireGuard. Но кроме него есть еще и другие приложения. Интересно, а что предложит нам сам TrueNAS?
https://www.truenas.com/docs/solutions/remoteaccess/
Для организации удалённого доступа к себе любимому TrueNAS предлагает три варианта:
- Tailscale
- ZeroTier
- Wireguard
И сегодня мы развернём Tailscale. Потыкал в него и развернул себе на несколько минут удалённый доступ к TrueNAS и домашним сервисам.
О Tailscale
Tailscale — решение элегантное и простое для пользователя. Рано или поздно такое решение должно было появится, потому как настраивать дома VPN — целая история. А если у вас еще и на даче точка? У родителей? У друзей? Здесь помог бы Mesh VPN, но это вообще что-то эзотерическое и сложное, даже браться не хочется. И теперь у нас есть Tailscale.
Представьте сеть, в которой любое устройство может выступать как клиентом, так и сервером, — это и есть принцип Mesh VPN. Tailscale — это реализация данной концепции, сделанная максимально доступной. Он работает практически на любой платформе (Windows, Linux, мобильные ОС), а в своей основе использует современный и производительный протокол WireGuard.
Ключевое преимущество Tailscale — организация прямого (P2P) соединения между узлами, без ненужных промежуточных узлов. Это похоже на то, как если бы вместо передачи письма через длинную цепочку почтовых отделений, вы просто передали его из рук в руки адресату. Такой подход обеспечивает минимально возможную задержку в сети. А чтобы добавить новое устройство, достаточно выполнить буквально пару команд.
Поначалу это кажется почти волшебством. Разберёмся, как это работает на практике.
Допустим, у вас есть домашний сервер, рабочий ноутбук и несколько облачных инстансов в разных дата-центрах. В классическом сценарии для их объединения пришлось бы разворачивать VPN-сервер, настраивать роутеры, управлять сертификатами и конфигурациями для каждого клиента. Знакомо?
Tailscale полностью меняет этот процесс. Вы просто устанавливаете лёгкий клиент на каждое устройство, авторизуетесь — и они автоматически "видят" друг друга, будто находятся в одной локальной сети. При этом вам не нужно:
- Конфигурировать правила фаерволов или проброс портов
- Покупать белый IP адрес
- Вручную устанавливать соединения — система сама справляется с этим, в том числе при работе через NAT (ниже про DERP)
- Сложно управлять доступом — для этого есть понятный веб-интерфейс
Представьте, что вы запускаете веб-сервер на одной из машин. Обычно пришлось бы настраивать реверс-прокси, SSL, думать о безопасности. С Tailscale сервер сразу получает внутренний IP-адрес в вашей виртуальной сети, и вы можете обращаться к нему напрямую из любой точки мира по защищённому туннелю.
А если прямое соединение установить невозможно? В таких случаях подключается резервный механизм — DERP (Designated Encrypted Relay for Packets). Это зашифрованные ретрансляционные серверы, которые служат "запасным путём". Если два устройства не могут связаться напрямую (например, из-за строгих правил сети), Tailscale автоматически находит промежуточный узел, способный связаться с обоими, и использует его для безопасной передачи данных. Для пользователя процесс абсолютно прозрачен.
Control Plane
По умолчанию Tailscale использует централизованный управляющий сервер (control plane) от компании Tailscale Inc. Хотя он не имеет доступа к вашему трафику и видит только метаданные, сама компания применяет географические ограничения на использование своего сервиса.
Для кого-то это может показаться критическим. Однако, и в этом случае есть обходной вариант. Можно развернуть свой управляющий сервер, которые виден на скриншоте выше и называется Headscale.
Сегодня мы не рассматриваем Headscale, и без него всё поднимем через внешний управляющий сервер Tailscale.
Установка Tailscale
Приложение Tailscale официально поддерживается разработчиком. И инструкция имеется. Инструкция куцая и уже не актуальная, к сожалению. Могли бы и обновить. Но ей тоже можно пользоваться.
https://tailscale.com/kb/1483/truenas
Собственно, разобраться в процессе установки можно и самому.

Находим в TrueNAS приложение Tilescale. Установить.

Внимательно читаем и смотрим. Видим, что обязательным параметром является поле Auth Key.

Наводим мышку на знак вопроса и узнаём, что ключи раздаются на сайте разработчика. И ссылку показывают. Это странно, ибо мы никогда не были на этом сайте и не имеем там аккаунта. Дело поправимое, переходим на сайт:
Тыкаем в Get started - it's free!

Регистрируем аккаунт. Не долго думая делаю это через Google.

Предлагают скачать клиент. Ну, допустим, всё равно понадобится. Скачиваю клиент под Windows. Запускаю инсталлятор.
Принимаем лицензионное соглашение, Install.

Пока не сложно.

Клиент Tailscale установился. Жмём Get Started.

Просят выполнить вход. Тыкаем в Sign in to your network.

Залогинились в личный кабинет на сайте Tailscale. Пока я думал куда нажимать дальше, произошёл редирект.

И справа я вижу свой ноутбук, которому выдался некий IP адрес. Система ожидает второе устройство, собственно, которым будет наш NAS. Однако, непонятно как выдать ключ аутентификации. При попытке перейти по ссылке из установки приложение в TrueNAS мы попадаем на эту же страницу. Затем я снизу увидел ссылку Skip this introduction. Совсем не для средних умов, тыкаю.

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

Вот и ключи. Жмём в Generate auth key...

Быстро в описании указал "NAS", чтобы понимать для чего генерирую ключ. И здесь я подвис. Судя по тому, что я вижу, срок жизни ключа максимум 90 дней. Меня это не устраивает, NAS должен автоматически подключаться и без ограничений. Я тут же полез и почитал документацию, оказывается, можно потом в настройках отключить срок жизни ключа для любого устройства, ладно, можно будет позже настроить.
Смотрю дальше и вижу раздел Tags. Здесь можно задать тег для устройства и (о чудо!) ещё одна заметка: " This will also disable node key expiry for the device". Если мы зададим тег для нашего NAS, то не придётся отключать срок жизни ключа, он сам отключится. Включаю чекбокс и появляется ссылка "Manage tags in Access Controls". Открываю её в новом окне.

Перехожу на вкладку Tags.

Жму Create Tag, и создаю тег с названием "NAS".

Возвращаюсь к окну генерации ключа, добавляю свежесозданный тег. Generate key.

Ключ аутентификации сгенерирован, копирую его в блокнотик.

Вставляем сгенерированный ключ в поле Auth Key.

Ставим галки Auth Once и Userspace. Про Userspace еще не факт что так и останется, в некоторых случаях, когда не удаётся получить удалённый доступ к приложениях TrueNAS, на форумах рекомендуют не ставить галку и запускать контейнер от рута. Но я пока следую официальной инструкции, позже можно будет внести изменения.

Галка Host Network.

Install.

Начинается установка приложения.

Приложение установилось быстро и даже запустилось.

А в личном кабинете появилось второе устройство.

Пробую с ноутбука зайти на интерфейс TrueNAS по выданному Tailscale IP адресу, работает.

Другие сервисы на том же IP, которые живут на TrueNAS, тоже работают, тот же Nginx Proxy Manager.

Или Jellyfin. Теперь можно свои фильмы смотреть.
На ноутбуке, кстати, появилась новая сеть.
Маршрутизация
А как бы теперь получить удалённый доступ к другим IP адресам локальной сети?

Редактируем приложение и прописываем маршруты в Advertise Routes. Для примера пропишу всю домашнюю подсеть, хотя делать это нужно далеко не всегда.

В личном кабинете у NAS появилась синяя плашка Subnets.
Edit route settings.

Показывают, что появился один маршрут.

Отмечаем его галкой. Save.

И на ноутбуке появляется новый маршрут. Правда, проверить его не могу, потому как он живёт в той же подсети. Отключаю ноутбук от локальной сети, подключаю его к точке доступа телефона. И...

И другие сервисы домашней сети тоже прекрасно открываются и работают.
Заключение
Tailscale — отличный способ организации защищённого соединение к вашему домашнему TrueNAS и другим домашним сервисам. Даже без настройки переадресации портов на роутере.
У меня всё заработало с первого раза. Однако, следует отметить устаревшую документацию на сайте производителя и недружелюбный интерфейс, с которым не сразу разберёшься.
Мы не коснулись темы настройки TrueNAS в качестве выходного узла нашей VPN Mash сети, чтобы можно было проксировать трафик через TrueNAS, об этом можно почитать в документации.
Мы не рассматривали интересную тему: "Настройка репликации ZFS в TrueNAS", об этом тоже можно почитать в документации.
Мы не коснулись ZeroTier, тоже можно попробовать.


