Перейти к основному содержанию

Tailscale на TrueNAS

Tilescale

Вот вы и развернули у себя дома TrueNAS. Установили кучу приложений, подняли несколько полезных для себя сервисов. И столкнулись с вопросом защиты данных и организации безопасного подключения к своей домашней сети. Подключаться, естественно, собираетесь с работы или из любой точки земного шара.

Можно заморочиться и пойти каким-нибудь классическим путём: развернуть дома OpenVPN или WireGuard, добавить для удобства какой-нибудь веб-интерфейс, прокинуть на домашнем роутере порт к серверу, выдать себе ключи шифрования, настроить маршрутизацию к остальным домашним сервисам.

Можно оптимизировал процесс: поставить себе в качестве домашнего роутера что-то продвинутое типа Mikrotik, Keenetic или ещё что-то на OpenWRT, поднять на нём VPN сервер, выдать себе ключи шифрования, настроить маршрутизацию к остальным домашним сервисам.

Можно ещё оптимизировать процесс: развернуть на TrueNAS в качестве приложения WireGuard, я его там видел. Поищем приложения по ключевому слову "VPN".

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

Собственно, разобраться в процессе установки можно и самому.

vpn

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

vpn

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

vpn

Наводим мышку на знак вопроса и узнаём, что ключи раздаются на сайте разработчика. И ссылку показывают. Это странно, ибо мы никогда не были на этом сайте и не имеем там аккаунта. Дело поправимое, переходим на сайт:

https://tailscale.com/

Тыкаем в Get started - it's free!

vpn

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

vpn

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

vpn 

Принимаем лицензионное соглашение, Install.

vpn

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

vpn

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

vpn

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

vpn

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

vpn

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

vpn

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

vpn

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

vpn

Быстро в описании указал "NAS", чтобы понимать для чего генерирую ключ. И здесь я подвис. Судя по тому, что я вижу, срок жизни ключа максимум 90 дней. Меня это не устраивает, NAS должен автоматически подключаться и без ограничений. Я тут же полез и почитал документацию, оказывается, можно потом в настройках отключить срок жизни ключа для любого устройства, ладно, можно будет позже настроить.

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

vpn

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

vpn

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

vpn

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

vpn

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

vpn

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

vpn

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

vpn

Галка Host Network.

vpn

Install.

vpn

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

vpn

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

vpn

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

vpn

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

vpn

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

vpn

Или Jellyfin. Теперь можно свои фильмы смотреть.

vpn

На ноутбуке, кстати, появилась новая сеть.

Маршрутизация

А как бы теперь получить удалённый доступ к другим IP адресам локальной сети?

vpn

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

vpn

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

vpn

Edit route settings.

vpn

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

vpn

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

vpn

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

vpn

И другие сервисы домашней сети тоже прекрасно открываются и работают.

Заключение

Tailscale — отличный способ организации защищённого соединение к вашему домашнему TrueNAS и другим домашним сервисам. Даже без настройки переадресации портов на роутере.

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

Мы не коснулись темы настройки TrueNAS в качестве выходного узла нашей VPN Mash сети, чтобы можно было проксировать трафик через TrueNAS, об этом можно почитать в документации.

Мы не рассматривали интересную тему: "Настройка репликации ZFS в TrueNAS", об этом тоже можно почитать в документации.

Мы не коснулись ZeroTier, тоже можно попробовать.

 

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

VMware — отправляем RSPAN трафик на виртуалку

Пилотный проект. ИБшники придумали зеркалировать RSPAN трафик в анализатор трафика. Перед покупкой железа и софта нужно проверить, заработает ли вообще всё это дело. Поэтому зеркалировать трафик будем на виртуальную машину.

CTF web — router

Разбираем четвёртую задачку из нашего соревнования CTF. Задание называется router, 122 балла за флаг. Я бы отнёс данную задачу к разделу admin, мне кажется она больше на системное администрирование, нежели на web-разработку.

Теги