Files
knowledge-base/decisions/2026-04-16-unifi-migration-peredelki.md

5.8 KiB
Raw Blame History

Миграция UniFi Controller — Переделки (2026-04-16)

Что было

  • UniFi Controller работал на Orange Pi Мичуринец (192.168.1.10) в Docker
  • 5 устройств: USG 3P, Switch 16 PoE, U6 LR, U6+, U7-IW (U6 LR и U6+ офлайн)
  • Сеть Переделки: 192.168.1.0/24 — конфликтовала с сетью НИИКН (тоже 192.168.1.0/24)
  • OpenWrt Переделки (100.70.197.125) — маршрутизатор на объекте
  • Задача: перенести контроллер на Proxmox НИИКН (LXC 116) и отключить Orange Pi

Что сделано

1. Смена подсети Переделок

  • OpenWrt Переделки: 192.168.1.0/24 → 192.168.2.0/24
  • Устройства получили новые IP по DHCP:
    • Switch: 192.168.2.109
    • AP U7-IW: 192.168.2.146
  • Временный alias 192.168.1.1/24 добавлялся для переходного периода

2. Новый контроллер на LXC 116 (Proxmox НИИКН)

  • LXC 116 (unifi-controller), IP: 192.168.1.84, NetBird: 100.70.138.234
  • Docker с persistent volumes:
    • MongoDB: /opt/unifi/mongo:/data/db
    • Config: /opt/unifi/config:/config (bind mount — данные переживают рестарт)
    • MongoDB user: unifi/unifi (db: unifi, unifi_stat)
  • Image: ghcr.io/linuxserver/unifi-network-application:latest (v10.1.89)
  • Admin: SSO через UI.com (batlaew@yandex.ru)

3. Проброс трафика через NetBird

Контроллер на НИИКН, устройства на Переделках — связь через NetBird VPN.

Socat proxy на OpenWrt Переделки (persistent, /etc/init.d/unifi-proxy):

  • TCP 8080 → 100.70.138.234:8080 (inform)
  • TCP 8443 → 100.70.138.234:8443 (web UI)
  • UDP 3478 → 100.70.138.234:3478 (STUN)

NetBird Network Route (через API):

  • 192.168.2.0/24 → peer openwrt-peredelki (d7fug7rl0ubs73b5r36g)
  • masquerade=true
  • Позволяет контроллеру SSH к устройствам для provisioning

Masquerade на OpenWrt:

  • nft: iifname "wt0" oifname "br-lan" masquerade — в init script
  • Зона netbird: masq=1 через uci

4. Adoption устройств

  • USW-Lite-16-PoE (d8:b3:70:84:0f:05) — adopted, connected (state=1)
  • U7 In-Wall (1c:0b:8b:70:de:1e) — adopted, connected (state=1)
  • Оба устройства прошли factory reset (set-default) для сброса auth keys от старого контроллера
  • SSH credentials: batlaew / 20iPUHpzpMXnp9Rx (для managed devices)
  • Factory default credentials: ubnt / ubnt (после reset)

5. WiFi

  • SSID: Ubnt, пароль: 1234567a (WPA2)

6. Podkop VPN

  • Установлен и работает на OpenWrt Переделки
  • sing-box через WireGuard (wg0)
  • Списки: russia_inside, meta, telegram
  • VPN IP: 193.39.160.237
  • Автозапуск: включён (S99podkop)

7. Orange Pi

  • Старый контроллер (Docker) остановлен
  • Orange Pi отключён физически
  • Бэкап MongoDB: /tmp/unifi-full-backup.archive (1.8MB) — был на Orange Pi

Проблемы и решения

"Factory Default — Database exists. Clean it"

Контроллер LinuxServer/UniFi сбрасывал базу при рестарте. Причина: anonymous Docker volume для /config. Решение: bind mount /opt/unifi/config:/config.

Конфликт подсетей 192.168.1.0/24

НИИКН и Переделки оба использовали 192.168.1.0/24. Решение: смена подсети Переделок на 192.168.2.0/24.

"Content too short" / "Bad packet magic"

DNAT через NetBird ломал inform-пакеты (MTU 1280 vs 1500). Решение: заменили DNAT на socat proxy (application-level forwarding).

SSH adoption failed

Контроллер не мог SSH к устройствам для provisioning. Решение: NetBird Network Route с masquerade.

Ключевые доступы

Что осталось

  • Подключить остальные точки доступа (U6 LR, U6+) когда будут запитаны
  • Настроить WiFi сети окончательно (если нужны дополнительные SSID)
  • Обновить прошивки устройств (контроллер предлагает update)
  • Убрать alias 192.168.1.1/24 на OpenWrt (когда все устройства на 192.168.2.x)

2026-04-17: Auto-discovery для новых AP

Добавлена DNS-запись unifi → 192.168.2.1 в dnsmasq Переделок (uci dhcp.@domain). UniFi AP после factory reset ищут контроллер по URL http://unifi:8080/inform — теперь эта запись резолвится в IP OpenWrt, а socat-proxy форвардит 8080/8443/3478 на контроллер через NetBird. Любая новая AP подключится автоматически без ручного set-inform.

# проверка настройки
ssh root@100.70.197.125
uci show dhcp | grep unifi
# dhcp.cfg05f37d.name='unifi'
# dhcp.cfg05f37d.ip='192.168.2.1'

Новая точка U7-IW 1c:0b:8b:70:e2:41 (IP 192.168.2.227) — Pending Adoption, ждёт клика Adopt в UI.