113 lines
5.9 KiB
Markdown
113 lines
5.9 KiB
Markdown
---
|
||
date: 2026-04-16
|
||
type: decision
|
||
tags: [decision]
|
||
---
|
||
|
||
# Миграция 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.
|
||
|
||
## Ключевые доступы
|
||
- **Контроллер**: https://100.70.138.234:8443 (SSO: batlaew@yandex.ru)
|
||
- **OpenWrt Переделки**: ssh root@100.70.197.125 (1qaz!QAZ)
|
||
- **Proxmox НИИКН**: ssh root@100.70.120.229 (1qaz!QAZ), pve-niikn.netbird.cloud
|
||
- **NetBird API**: Token `nbp_YTEmAVpS0hLhnTeJ09q3wYaC0AAXjN21NPvM`
|
||
- **SSH к устройствам**: batlaew / 20iPUHpzpMXnp9Rx
|
||
|
||
## Что осталось
|
||
- [ ] Подключить остальные точки доступа (U6 LR, U6+) когда будут запитаны (2026-04-16)
|
||
- [ ] Настроить WiFi сети окончательно (если нужны дополнительные SSID) (2026-04-16)
|
||
- [ ] Обновить прошивки устройств (контроллер предлагает update) (2026-04-16)
|
||
- [ ] Убрать alias 192.168.1.1/24 на OpenWrt (когда все устройства на 192.168.2.x) (2026-04-16)
|
||
|
||
## 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`**.
|
||
|
||
```bash
|
||
# проверка настройки
|
||
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.
|