7.9 KiB
7.9 KiB
MAS НИИКН — ОТКАЧЕН 2026-03-05
Статус MAS: ОТКАЧЕН (snapshot rollback)
- Proxmox snapshot
pre-mas-deploy→ восстановлен на VM 107 - msc4108_enabled: изменён на false в homeserver.yaml (без MAS вызывает краш Synapse)
- NPM server_proxy.conf удалён с LXC 102
- Nextcloud OIDC: восстановлен client "Matrix Synapse" с redirect /_synapse/client/oidc/callback
Nextcloud Talk (VM 108, 192.168.1.200) — РАБОТАЕТ
- TURN: niikn.com:3479, secret: ebf6a8ce0fd1629c2da55356169feea7ab118a18368c2550
- STUN: stun.nextcloud.com:443 + niikn.com:3479
- Signaling: https://niikn.com/standalone-signaling/
- eturnal (TURN) внутри NC AIO Docker (172.18.0.4:3479)
- Janus (WebRTC SFU) внутри того же контейнера
Исправление: Janus nat_1_1_mapping для внешних звонков
- Проблема: Janus рекламировал Docker-внутренние IP (172.18.0.4, fd74:...) как ICE кандидаты
- Внешние клиенты (iPhone по сотовой) не могли установить WebRTC соединение — ICE failed
- Решение:
nat_1_1_mapping = "85.235.181.190"иrtp_port_range = "20000-20100"в janus.jcfg - eturnal:
relay_ipv4_addr: "85.235.181.190"(вместо контейнерного IP) - Контейнер read-only rootfs → конфиг копируется в /tmp, Janus перезапускается с /tmp/janus.jcfg
- Убран
--full-trickle— с ним ICE-кандидаты терялись из-за race condition в сигнальном сервере- С full-trickle: кандидаты отправляются отдельно от SDP → "No MCU subscriber found" → потеряны
- Без full-trickle (half-trickle): кандидаты включены в SDP → доставляются надёжно
- Автопатч:
/opt/talk-janus-patch.sh+ systemdtalk-janus-patch.service(enabled) - Скрипт: ждёт контейнер → iptables DNAT+MASQUERADE → патчит eturnal.yml → копирует/патчит janus.jcfg → перезапускает Janus без --full-trickle → убивает signaling (supervisord рестартит)
Текущее состояние Talk (2026-03-05) — ТРЕБУЕТ ДОРАБОТКИ
- Janus PID 9576: half-trickle, nat_1_1_mapping=85.235.181.190, /tmp/janus.jcfg
- Signaling PID 12313: свежий, подключён к Janus на ws://127.0.0.1:8188
- Supervisord (PID 7) управляет eturnal, nats, signaling; Janus запущен вручную (supervisord сдался после 3 попыток)
- iptables на VM 200: DNAT+FORWARD+MASQUERADE для UDP 20000:20100 и 49152:49252 → 172.18.0.4
Нерешённые проблемы
- DTLS alert/timeout — subscriber/publisher получают hangup (DTLS alert), вызов переподключается
- tcpdump подтвердил: RTP-пакеты доходят до контейнера, но DTLS handshake не завершается
- Может быть связано с MTU на сотовой сети или фрагментацией DTLS
- "The user is not invited to this room" — после перезапуска signaling старые токены клиентов невалидны
- Решение: обоим участникам нужно перезагрузить страницу (F5) для получения свежего токена
- Нужно проверить работает ли после перезагрузки страниц
- Supervisord не управляет нашим Janus — при краше Janus не перезапустится автоматически
- Supervisord запускает оригинальный Janus с --full-trickle и без nat_1_1_mapping
- Наш Janus запущен через docker exec -d — без автоперезапуска
- Нужно: либо модифицировать supervisord.conf (но rootfs read-only), либо обёртка-watchdog
Что нужно сделать при возврате
- Попросить пользователя перезагрузить страницы обоих клиентов и протестировать звонок
- Если DTLS всё ещё падает — попробовать
dtls_mtu = 1200в janus.jcfg - Решить проблему автоперезапуска Janus (watchdog или модификация /supervisord.conf в /tmp)
- Проверить звонки LAN↔LAN, LAN↔сотовая, сотовая↔сотовая
- Обновить /opt/talk-janus-patch.sh если нужно после тестов
Исправление: Netbird VPN ломал внешний доступ к Talk
- Проблема: Netbird VPN (wt0) перехватывал весь внешний трафик через таблицу маршрутизации
netbird - Пакеты SYN приходили через ens18 (MikroTik), но SYN-ACK уходили через wt0 (Netbird) — асимметричный роутинг
- Диагностика: tcpdump на bridge показал что контейнер отвечает SYN-ACK, но они не доходят до ens18
ip route get 194.26.100.165→ показывалdev wt0 table netbirdвместоdev ens18- Решение:
ip rule add from 172.18.0.0/16 lookup main priority 104 - Постоянный скрипт:
/etc/networkd-dispatcher/routable.d/50-docker-routing.sh - После исправления порт 3479 открыт из Канады, Индии, Нидерландов, Турции
MikroTik NAT правила (192.168.1.1) — ДЕЙСТВУЮЩИЕ
- Talk-TURN-TCP: dstnat 85.235.181.190:3479 → 192.168.1.200:3479
- Talk-TURN-UDP: dstnat 85.235.181.190:3479 → 192.168.1.200:3479
- Janus-RTP-UDP: dstnat 85.235.181.190:20000-20100 → 192.168.1.200
- TURN-relay-UDP: dstnat 85.235.181.190:49152-49252 → 192.168.1.200
- Hairpin Talk TURN TCP/UDP: srcnat masquerade 192.168.1.0/24 → 192.168.1.200:3479
- Matrix TURN TCP/UDP: dstnat 3478 → 192.168.1.133:3478
- Matrix Federation: dstnat 8448 → 192.168.1.133:8448
- Hairpin TURN dstnat/srcnat TCP/UDP: для 192.168.1.0/24 → 85.235.181.190:3478 → 192.168.1.133
VM 200 UFW — открытые порты
- 22/tcp, 3479/tcp+udp, 49152:49252/udp, 20000:20100/udp — from Anywhere
- 11000 — from 192.168.1.22 (NPM)
- 80, 8080, 8443, 8000, 9443, 3389, 3390 — LAN only
- Tailscale/Netbird (wt0) — all traffic
Element X / Element Call (2026-03-05)
- well-known
/.well-known/matrix/clientобновлён через NPM advanced_config (proxy host #18) - Добавлено:
"org.matrix.msc4143.rtc_foci": []— mesh mode (P2P без SFU) - Для групповых звонков нужен LiveKit SFU (не развёрнут)
- homeserver.yaml НЕ изменён (SSH к VM 107 заблокирован fail2ban)
- Также:
msc4108_enabled: false— QR-вход отключен (требует MAS)
SSH доступ к VM 107 (2026-03-05) — ПРОБЛЕМА
- fail2ban забанил IP 10.0.0.237 (jump host) и 192.168.1.200 (VM 200)
- Порт 22 открыт (SSH banner отдаётся), но пароль отклоняется
- QEMU guest agent не установлен — Proxmox API exec не работает
- sshpass не установлен на Proxmox хосте (192.168.1.201)
- Решение: нужно разбанить IP через Proxmox console (noVNC/SPICE) или ждать expiry
Данные MAS (для возможного повторного развёртывания)
- DB: mas/MASniikn2026
- Matrix secret: 60pMasWfQd8XUyxix932yIxsweyCG89x
- Полный конфиг: /root/mas-config.yaml
- syn2mas: 97 пользователей, 2 с паролями, 2 с OAuth