Если у вас дома или в офисе роутер на OpenWrt / ImmortalWrt и вы хоть раз гадали, «это провайдер тупит, роутер или сайт лежит», — дочитайте до конца. cgmon — бесплатная открытая программа (GPL-3.0) для роутера: один файл около 1–2,5 МБ, 3–5 МБ памяти, веб-страница со всем состоянием сети и уведомления в Telegram. Работает даже на старом TP-Link с 64 МБ памяти. Ставится поверх обычной прошивки и по умолчанию только наблюдает.

Главное: cgmon — диспетчер, а не ещё один маршрутизатор
Через cgmon не проходит ни один пакет. Трафик, как и раньше, пересылает ядро Linux — тем же путём и с той же скоростью, что и без cgmon. Программа только смотрит и, когда нужно, даёт ядру новые указания — свои правила рядом с правилами прошивки:
- nftables — свои таблицы рядом с firewall: учёт трафика, метки соединений, карты шлюзов. Правила firewall не меняются, firewall не перезагружается;
- маршрутизация —
ip ruleпо меткам соединений, свои таблицы маршрутов, смена основного шлюза; - tc — очередь SQM и скорость шейпера отдачи;
- DNS — только в аварийном режиме DNS-страховки.
Смотрит cgmon тоже средствами ядра: conntrack и счётчики nftables через netlink, копии рукопожатий и DNS-ответов, сведения о портах из sysfs и ethtool. Поэтому, даже если cgmon остановить или он упадёт, интернет не пропадёт: ядро продолжит работать по последним правилам.
Возможности
- Состояние WAN по-честному. Пробы TCP 443 по IPv4 и IPv6 раз в несколько секунд. Если IPv4 сыплется, а IPv6 работает, в журнал так и пишется: сбой у провайдера на CGNAT, а не «что-то сломалось».
- Down detector и поиск виновника. cgmon видит реальные подключения клиентов и замечает, когда не отвечает отдельный сервис, пока интернет в порядке. Если плох целый протокол, роутер трассирует путь до хороших и плохих сайтов и называет стык провайдеров, через который идут все плохие маршруты.
- Порты и кабели. Обрывы линка, ошибки CRC, «порт работает на 100 вместо 1000» — по каждому порту и даже по портам встроенного свитча. Больной кабель видно раньше, чем он окончательно откажет.

- Устройства. Скорость сейчас, трафик за час и сутки, имена из DHCP, mDNS, NetBIOS, UPnP. График хранится на самом роутере (сутки), наведение на пик показывает, кто его дал.
- cgfinder. Находит устройства с чужими адресами: старую камеру со статическим IP, свитч без DHCP. Кнопка «Открыть доступ» на час делает их доступными с любого компьютера дома.

- Карты шлюзов. Кому каким выходом в интернет ходить: гостевая сеть через мобильный модем, камеры через основной канал, телевизор через роутер в другом городе — при сбое следующий по списку. Работают даже на штатном busybox.

- Резервный канал. Шлюзы находятся сами (PPPoE, DHCP, LTE-модем), cgmon переключает основной маршрут на живой.
- DNS-страховка. Если у одного провайдера сайтов плохо работает IPv6, клиенты сразу уходят на IPv4 — без минутных зависаний.
- SQM и шейпер отдачи — пинг не растёт, когда кто-то качает; провайдер не «наказывает» за долгую отдачу.
- Платный трафик — счётчик всего, кроме бесплатных сетей, с лимитами.
- Центр сбора. Несколько роутеров (дом, дача, родители) шлют состояние на один центр. Он отличает «сломался мой провайдер» от «лёг внешний канал у всех» и пишет в Telegram. Отчёты шифруются (AES-256-GCM).

Три сборки
- full — всё, для x86 и мощных ARM.
- lite — всё, кроме SmartDNS (адресная DNS-страховка и объезд маршрутов).
- nano — для слабых роутеров с маленькой flash: работает на том, что уже есть в прошивке, умную очередь можно доставить (около 240 КБ).
Если для функции на роутере не хватает пакета, cgmon не падает и не мешает остальному: настройка серая, а в «Текущих событиях» — кнопка Установить.
Архитектуры: x86_64, i686, aarch64, ARMv7, ARMv5, MIPS и MIPSel — от x86-сервера до TL-WR1043ND и роутеров на MT7621.
Установка
Пакетом (OpenWrt / ImmortalWrt 25.x):
cd /tmp
wget https://github.com/real4root/cgmon/releases/download/v2.4.21/cgmon-lite-2.4.21-r1-aarch64.apk
apk add --allow-untrusted cgmon-lite-2.4.21-r1-aarch64.apk
На OpenWrt 24.10 и старше — файл .ipk и opkg install. Пакет под чужой процессор не поставится, так что ошибиться трудно. Свою архитектуру видно в /etc/openwrt_release (строка DISTRIB_ARCH).
Страница открывается сразу: http://<адрес роутера>/status.html. Пароль на изменение настроек задаётся в LuCI: Службы → cgmon. Пока пароля нет, страница только показывает.
Безопасный режим
После установки cgmon ничего не блокирует, не шейпит и никуда не шлёт данные. Переключение шлюзов, очередь, шейпер, центр сбора включаются явно.
Ссылки
Исходники, документация и все сборки: https://github.com/real4root/cgmon
