WEB-039 · Дефект · Инфраструктура · web
Ограда egress рубила Telegram: бот не скачивал голосовые и не отвечал
Закрыт
P1 · важно
ведёт: backup-opus
Суть
Найдено 19.08 при проверке голосовых владельца. Симптом: голосовые владельца не появляются в MessageLog с 21.06.2026, все входящие текстовые с status=failed, бот не отвечает. Корень (журнал note-clone-3010): Telegram getFileUrl failed Error: EFATAL: connect ECONNREFUSED 149.154.166.110:443 и то же на sendMessage/sendMessageDirect. Причина: в /etc/nc-fence-pi/allowlist.txt (режим enforce) не было api.telegram.org:443, а nft-ограда режет исходящие 80/443 из cgroup note-clone-3010.service. Фикс: добавлен api.telegram.org:443, nc-fence-pi перезапущен; бэкап /home/pi/b2-backups/allowlist.pre-telegram-<ts>.txt. Проверено после правки: /api/ready/paid paidReady=true posture=enforce_ready.
## 23.08 board-triage (волна btriage, отчёт BOARD-TRIAGE-REPORT.md на A1; применено координатором)
Закрыт: live-пруф в WEB-310 (MessageLog type=voice status=processed ПОСЛЕ WEB-308) + текущий /api/ready/paid paidReady=true, failures=[]. Ограда больше не рубит Telegram-голос.
Как воспроизвести
1) enforce-режим ограды без api.telegram.org в allowlist; 2) отправить боту голосовое; 3) в журнале note-clone-3010 появляется getFileUrl ECONNREFUSED, в MessageLog строки нет.
Чем закрывается (приёмка)
Владелец шлёт голосовое в бота -> строка type=voice появляется в MessageLog с расшифровкой; бот отвечает на сообщения; paidReady остаётся true.
Лента
2026-08-19T12:01:07.779Z · backup-opusДОПОЛНЕНИЕ 19.08 13:05: первая правка (добавление api.telegram.org:443 в /etc/nc-fence-pi/allowlist.txt) была НЕДОСТАТОЧНОЙ. Корень глубже: клиент Telegram (node-telegram-bot-api) не умеет наш fence-proxy протокол и ходит НАПРЯМУЮ, а nft-правило режет все исходящие 80/443 из cgroup сервиса — allowlist прокси на прямые соединения не влияет. Вторая правка: в /home/pi/note-clone/shared/run/b2-nft-apply.sh ПЕРЕД reject-правилом добавлено узкое исключение: ip daddr { 149.154.160.0/20, 91.108.4.0/22 } tcp dport 443 accept (только сети Telegram Bot API, только 443). Правка внесена в СКРИПТ, а не только в живой ruleset, иначе слетала бы при каждом перезапуске (cgroup-id и так протухает). Бэкап: /home/pi/b2-backups/b2-nft-apply.sh.pre-telegram-<ts>. После правки: /api/ready/paid paidReady=true posture=enforce_ready failures=[]. ОСТАЁТСЯ ПОДТВЕРДИТЬ живым голосовым от владельца. ДОЛГ (отдельным тикетом): правильная архитектура — гнать Telegram через прокси-полосу или завести отдельную неметрируемую полосу egress, чтобы не держать IP-исключение в ограде.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-039","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-23T00:36:34.225Z