Tailscale — удалённый доступ к контроллеру Wiren Board без своего VPN-сервера

From Wiren Board
This is the approved revision of this page, as well as being the most recent.
Пример подключения к контроллеру через Tailscale

Описание

Tailscale — VPN-сервис, который работает поверх WireGuard и позволяет получить доступ к контроллеру даже, если у вас нет своего VPN-сервера и вам не подходит Wiren Board Cloud.

Важно понимать, что при использовании Tailscale, между вами и контроллером будет посредник в виде облака Tailscale, поэтому для критически важных систем, возможно, стоит использовать OpenVPN в связке со своим личным VPN-сервером или наш Wiren Board Cloud в варианте On-premise.

Установка

Учётная запись

Вам потребуется учётная запись, которую можно создать на сайте https://tailscale.com/, справа вверху кнопка Use Tailscale.

Контроллер

Установка клиента на контроллер для релиза wb-2307 и новее:

  1. Обновите список пакетов и установите tailscale:
    apt update && apt install tailscale
    
  2. Перезагрузите контроллер, чтобы подгрузились модуля ядра:
    reboot
    
  3. Снова зайдите в консоль и подключите контроллер к облаку Tailscale командой:
    # tailscale up
    
    To authenticate, visit:
    
            https://login.tailscale.com/a/5d51dbc87007
    
    в ответ на команду будет показана разовая ссылка: перейдите по ней, авторизуйтесь на сайте Tailscale и контроллер появится в списке ваших устройств.
  4. Чтобы узнать IP-адрес контроллера в сети Tailscale, введите команду:
    # tailscale ip -4
    100.83.15.81
    

Сразу после подключения контроллера к облаку, он будет доступен в личном кабинете, где вы сможете:

  • узнать текущий статус устройства;
  • посмотреть его IP-адрес
  • или создать ссылку совместного доступа к устройству (Share Link).

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

Компьютер

Список устройств в личном кабинете Tailscale. Видно, что в сети компьютер и один из контроллеров, также видны их IP-адреса

Теперь, чтобы получить доступ к вашему контроллеру, нужно установить на компьютер клиентское приложение Tailscale, которое объединит контроллер и компьютер в единую сеть.

Способы установки и настройки немного отличаются в зависимости от используемой вами операционной системы, полную инструкцию для вашей ОС смотрите по ссылке Download Tailscale.

Здесь мы приведём основной алгоритм:

  1. Скачиваете и устанавливаете клиент Tailscale.
  2. Запускаете его и переходите по ссылке, которую выведет приложение.
  3. Авторизуетесь в браузере на сайте Tailscale и ваш компьютер автоматически добавится в список устройств.

С этого момента вы получаете доступ к своей собственной VPN-сети на базе серверов Tailscale и можете работать со всеми устройствами так, как если бы они были в одной локальной сети.

Использование

Пример подключения к контроллеру через Tailscale

После установки клиентов на компьютер и контроллер, оба устройства находятся в одной локальной сети, поэтому вы можете подключаться к контроллеру любым удобным способом:

  1. К консоли контроллера по SSH.
  2. Через веб-браузер к веб-интерфейсу контроллера или другого установленного программного обеспечения.
  3. К MQTT-брокеру через MQTT Explorer.
  4. С помощью десятков других способов, которые вам понадобятся. Например, с настольного клиента одной из SCADA-систем.


Доступ к локальной сети через контроллер (Subnet Router)

По умолчанию Tailscale обеспечивает доступ только к самому контроллеру. Чтобы получить доступ к другим устройствам локальной сети, контроллер Wiren Board необходимо настроить как Subnet Router с включённым NAT.

Разрешение пересылки трафика

Включите IP-forwarding в ядре Linux:

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

Объявление маршрутов локальной сети

Определите адрес локальной сети (например, 192.168.0.0/24) и объявите маршрут:

tailscale up --advertise-routes=192.168.0.0/24

Настройка в панели управления Tailscale

  1. Перейдите в Admin Console.
  2. Найдите контроллер в списке устройств.
  3. Выберите More → Edit route settings.
  4. В разделе Subnet routes включите объявленный маршрут и сохраните изменения.

Настройка NAT (Masquerading)

Определите интерфейс локальной сети (обычно eth0 или wlan1):

ip addr

Включите маскарадинг через nftables:

nft add table ip nat
nft add chain ip nat postrouting { type nat hook postrouting priority 100 ; }
nft add rule ip nat postrouting oifname "wlan1" masquerade

Замените wlan1 на фактический интерфейс.

Для сохранения правил после перезагрузки установите пакет:

apt update && apt install iptables-persistent

Настройка на стороне компьютера

  • Windows / macOS: включите опцию Use Tailscale Subnets в настройках клиента.

Приостановка доступа или удаление сервиса

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

Приостановить доступ:

tailscale down
контроллер останется в списке устройств на сайте Tailscale, но у него будет статус «отключен» и попасть на него будет невозможно.

Восстановить доступ:

tailscale up

Удалить клиент Tailscale полностью:

apt purge tailscale

После удаления клиента Tailscale, удалите контроллер в личном кабинете.

Решение проблем

Проблемы с обновлением пакетов

Если вы устанавливали Tailscale вручную через сторонний репозиторий, автоматические обновления могут перестать работать. В этом случае необходимо переключиться на официальный репозиторий Wiren Board.

  1. Удалите старый список источников:
rm /etc/apt/sources.list.d/tailscale.list
  1. Обновите список пакетов и установите Tailscale из репозитория Wiren Board:
apt update && apt install tailscale

Проблемы при настройке Subnet Router

Если после настройки маршрутизации устройства в локальной сети по-прежнему недоступны, проверьте следующие пункты.

Конфликт IP-адресов

Самая частая причина — совпадение подсетей:

  • домашняя сеть (где находится компьютер);
  • сеть на объекте (где установлен Wiren Board).

Например, обе используют диапазон 192.168.1.0/24. В этом случае компьютер будет искать устройство в своей физической сети, не отправляя трафик в Tailscale-туннель.

Решение: Измените подсеть на одном из объектов на нетипичную, например:

  • 192.168.188.0/24
  • 10.14.20.0/24

Проверка прохождения пакетов (tcpdump)

Для диагностики используйте утилиту tcpdump на контроллере.

  1. Установите утилиту:
    apt update && apt install tcpdump
    
  2. Проверьте входящий трафик из Tailscale-туннеля:
    tcpdump -i tailscale0 icmp
    
    Запустите ping с компьютера.
    * Если пакеты с вашего Tailscale-IP не появляются — проблема на стороне клиента ПК или в ACL (правилах доступа) в панели Tailscale.
    * Если пакеты видны — трафик до контроллера доходит.
  3. Проверьте исходящий трафик в локальную сеть:
    # Замените wlan1 на ваш локальный интерфейс (eth0 / eth1)
    tcpdump -i wlan1 icmp
    
    Если ICMP-запросы (request) видны, а ответов (reply) нет — значит, не настроен или не работает NAT (Masquerade).
    Локальные устройства не знают, куда отправлять ответ.

Ошибка «Chain 'MASQUERADE' does not exist»

На актуальных релизах Wiren Board используется система nftables. При попытке использовать классический синтаксис iptables может появляться ошибка:

Chain 'MASQUERADE' does not exist

Решение: Используйте настройку NAT через команду nft, как описано в разделе выше.

Статус сетевого интерфейса

Убедитесь, что интерфейс, через который транслируется локальная сеть, активен.

Проверка:

ip link show wlan1

(или eth0, eth1 — в зависимости от конфигурации)

Если интерфейс находится в состоянии DOWN, трафик через него проходить не будет.

Изоляция клиентов в Wi-Fi сети

Если контроллер подключён к стороннему Wi-Fi роутеру в режиме клиента, проверьте настройки роутера.

На многих устройствах есть функция AP Isolation (изоляция клиентов), которая запрещает прямой обмен трафиком между устройствами в одной сети.

Если эта опция включена, Subnet Router работать не будет.