Уведомления The Dude в Telegram через MTProto proxy: настройка с нуля

Настройка уведомлений The Dude в Telegram через /tool fetch. Обход блокировки api.telegram.org через MTProto proxy и SOCKS5 на VPS. Пошаговая инструкция с командами
Быстрый ответ
Чтобы уведомления The Dude доходили в Telegram даже при заблокированном api.telegram.org:
  • Создай бота через @BotFather, получи токен и Chat ID
  • В The Dude добавь Notification типа «Execute on server»
  • Пропиши команду /tool fetch с URL api.telegram.org в поле Command
  • Если api.telegram.org заблокирован — подними MTProto или SOCKS5 прокси и маршрутизируй трафик через него
  • Проверь кнопкой Test — в боте должно появиться сообщение

Диагноз: узел упал, уведомление не пришло

Уведомления The Dude в Telegram не работают — знакомая ситуация. Поднял мониторинг, настроил карту сети, добавил пороги. А потом обнаружил, что коммутатор лежал два часа, а ты узнал об этом от пользователей, а не от системы.

По факту причин здесь две. Либо уведомление не настроено правильно, либо RouterOS не может достучаться до api.telegram.org — потому что провайдер или ТСПУ блокирует Telegram. В 2026 году это уже не редкий случай, а стандартная ситуация для части российских сетей.

В статье разберём оба варианта: базовую настройку уведомлений через /tool fetch и обход блокировки через MTProto proxy. Уйдёт 30-40 минут, нужен MikroTik с The Dude, доступ к RouterOS и отдельный VPS за пределами блокировок — если провайдер режет Telegram.

Что сделаем:

  • Создадим Telegram-бота и получим токен и Chat ID
  • Настроим Notification в The Dude типа «Execute on server»
  • Пропишем команду /tool fetch для отправки сообщений
  • Поднимем MTProto proxy и настроим маршрутизацию трафика через него
  • Разберём типичные ошибки

Как это работает: архитектура уведомления

The Dude работает поверх RouterOS. Когда статус устройства или сервиса меняется, срабатывает триггер и выполняется действие из секции Notifications. Тип уведомления «Execute on server» означает, что RouterOS выполнит произвольную команду на роутере.

Telegram принимает сообщения через HTTP API. Отправить сообщение — это GET или POST запрос к api.telegram.org. RouterOS умеет делать HTTP-запросы через /tool fetch. Соединяем одно с другим — получаем уведомление в Telegram при любом событии в сети.

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
    A["Устройство меняет статус"] --> B["The Dude фиксирует событие"]
    B --> C["Триггер Notification"]
    C --> D["Execute on server"]
    D --> E["RouterOS /tool fetch"]
    E --> F{"api.telegram.org доступен?"}
    F -->|"Да"| G["Сообщение в Telegram"]
    F -->|"Нет"| H["MTProto/SOCKS5 Proxy"]
    H --> I["VPS за пределами блокировки"]
    I --> G
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style G fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style F fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
    style H fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c

Системные требования

Компонент Минимум Рекомендуется
RouterOS 6.40+ 7.x (стабильный канал)
The Dude Server 6.x (пакет на RouterOS) 7.x
The Dude Client 6.x Последний релиз с mikrotik.com
VPS для прокси 1 CPU / 512 MB RAM 1 CPU / 1 GB RAM, порт 443
ОС на VPS Ubuntu 20.04 Ubuntu 22.04 / Debian 12

На момент публикации актуальна RouterOS 7.18. Перед настройкой проверь свежие релизы на mikrotik.com/download.

Шаг 1. Создаём Telegram-бота

Открой Telegram и найди @BotFather. Это официальный бот Telegram для управления ботами — не ищи альтернативы.

Отправь команду:


/newbot

BotFather спросит имя бота (любое, например «MyDudeBot») и username (должен оканчиваться на «bot», например «my_dude_alert_bot»). После создания BotFather выдаст токен вида:


1234567890:AAFabcDEFghiJKLmnoPQRstu-vwxYZ012345
Важно: сохрани токен
Токен — это пароль от бота. Не публикуй его в открытых конфигах и не вставляй в скрипты, которые хранятся в публичных репозиториях. Если токен утёк — отзови его через /revoke в BotFather и создай новый.

Теперь нужен Chat ID — идентификатор чата, куда бот будет слать сообщения. Напиши своему боту любое сообщение (например, «hello»). Затем открой в браузере:


https://api.telegram.org/bot/getUpdates

В ответе найди поле «chat» — там будет «id». Это и есть Chat ID. Запиши его.


{
  "ok": true,
  "result": [{
    "message": {
      "chat": {
        "id": 123456789,
        "type": "private"
      }
    }
  }]
}

Если хочешь слать уведомления в группу — добавь бота в группу администратором, напиши что-нибудь в группе, потом снова вызови getUpdates. Chat ID группы начинается с минуса, например -1001234567890.

Шаг 2. Проверяем доступность api.telegram.org

Прежде чем настраивать уведомления — проверь, достигает ли RouterOS Telegram. Зайди в терминал RouterOS (SSH или Winbox Terminal) и выполни:


/tool fetch url="https://api.telegram.org" keep-result=no

Если получаешь ошибку «connection timed out» или «connection refused» — api.telegram.org заблокирован. Переходи сразу к разделу про MTProto proxy. Если команда выполнилась без ошибок — идём дальше.

Можно проверить пингом (хотя Telegram не всегда отвечает на ICMP):


/ping address=api.telegram.org count=3

Шаг 3. Настройка уведомления в The Dude

Открой The Dude Client и подключись к серверу. На левой панели найди раздел «Notifications» — это список всех настроенных уведомлений.

Нажми «+» чтобы создать новое. Заполни:

  • Name — любое понятное имя, например «Telegram Alert»
  • Type — выбери «Execute on server»
  • Command — вставь команду отправки сообщения (см. ниже)

Базовая команда для поля Command:


/tool fetch url="https://api.telegram.org/bot/sendMessage\?chat_id=&text=[TimeAndDate]%20[Device.Name]%20--%20[Service.Status]" keep-result=no

Замени и на свои значения. Экранирование знака вопроса обязательно (\?) — без него RouterOS ломает URL.

Расширенная команда с форматированием:


/tool fetch url="https://api.telegram.org/bot/sendMessage\?chat_id=&text=[TimeAndDate]%0ADevice:%20[Device.Name]%0AIP:%20[Device.FirstAddress]%0AMAC:%20[Device.MacAddressesCommaList]%0AStatus:%20[Service.Status]&parse_mode=markdown" keep-result=no

%0A — это URL-кодированный перенос строки. %20 — пробел. Весь URL должен быть в одну строку без переносов.

Переменные The Dude которые можно использовать в тексте уведомления:

Переменная Что подставляет
[Device.Name] Имя устройства в The Dude
[Device.FirstAddress] Первый IP-адрес устройства
[Device.MacAddressesCommaList] MAC-адреса через запятую
[Device.Status] Статус устройства (up/down)
[Service.Status] Статус сервиса
[TimeAndDate] Дата и время события
[Time] Только время

Шаг 4. Привязка уведомления к устройству

Создать уведомление — это половина дела. Его нужно привязать к устройству или сервису.

Двойной клик на устройстве в карте открывает его свойства. Перейди на вкладку «Notifications». Нажми «+» и выбери созданный «Telegram Alert». Укажи триггеры — когда отправлять уведомление. Стандартный вариант:

  • Status change: any — при любом изменении статуса
  • Status change: to down — только при падении
  • Status change: to up — только при восстановлении

Нажми кнопку «Test» чтобы проверить. В поле Command переменные не подставляются при тесте — это нормальное поведение. В реальном уведомлении они будут заменены на значения.

Результат
Если всё настроено правильно — в Telegram появится сообщение от бота сразу после нажатия Test. Если сообщения нет — читай раздел «Осложнения».

MTProto proxy: когда api.telegram.org заблокирован

Это самая интересная часть. Классическая проблема российских сетей — /tool fetch к api.telegram.org виснет или возвращает ошибку подключения. Роскомнадзор режет трафик к Telegram на уровне ТСПУ.

Решение — MTProto proxy. Это официальный прокси-сервер от Telegram, разработанный специально для обхода блокировок. Он работает только с Telegram и маскирует трафик под обычный HTTPS. Тебе нужен VPS за пределами блокировок — любой европейский хостер, например Hetzner или DigitalOcean.

Но тут важный момент. MTProto proxy — это прокси для Telegram-клиентов, а не для HTTP API. /tool fetch в RouterOS обращается к HTTP API, а не через клиентский протокол. Для /tool fetch нужен обычный HTTP или SOCKS5 прокси, который проксирует запросы к api.telegram.org.

Архитектура которая работает:

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart LR
    A["RouterOS /tool fetch"] --> B["SOCKS5 Proxy на VPS"]
    B --> C["api.telegram.org"]
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style B fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
    style C fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d

Вариант А: поднимаем SOCKS5 прокси на VPS

Это самый простой вариант. Dante — один из самых распространённых SOCKS5-серверов. Устанавливаем на VPS с Ubuntu/Debian:


apt update && apt install -y dante-server

Конфигурация /etc/danted.conf (минимальная, без авторизации — только для твоего IP):


logoutput: syslog
internal: 0.0.0.0 port = 1080
external: eth0
clientmethod: none
socksmethod: none
client pass {
    from: /32 to: 0.0.0.0/0
    log: connect disconnect error
}
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    protocol: tcp
    log: connect disconnect error
}

Замени eth0 на имя интерфейса VPS (проверь через ip a). Замени на внешний IP твоего MikroTik.


systemctl enable danted
systemctl start danted
systemctl status danted

Проверь с самого VPS что SOCKS5 работает:


curl -x socks5h://127.0.0.1:1080 https://api.telegram.org/botTEST/getMe

Если в ответе JSON — всё работает. Теперь настраиваем маршрутизацию на MikroTik.

Маршрутизация /tool fetch через SOCKS5 в RouterOS

RouterOS не поддерживает SOCKS5 напрямую в /tool fetch — это ограничение команды. Нужно маршрутизировать IP-трафик к api.telegram.org через туннель или через policy-based routing.

Самый чистый способ — добавить маршрут к IP-адресам Telegram через VPS-сервер, используя WireGuard или OpenVPN туннель между MikroTik и VPS. Но это отдельная история.

Быстрый способ без туннеля — использовать на VPS HTTP-прокси (nginx как reverse proxy или 3proxy) и вызывать его из /tool fetch напрямую:


apt install -y nginx

Конфиг /etc/nginx/sites-available/tgproxy:


server {
    listen 8443;
    allow ;
    deny all;

    location / {
        proxy_pass https://api.telegram.org;
        proxy_ssl_server_name on;
        proxy_set_header Host api.telegram.org;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

ln -s /etc/nginx/sites-available/tgproxy /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Теперь в The Dude меняем URL в команде уведомления — вместо api.telegram.org подставляем IP нашего VPS и порт:


/tool fetch url="http://:8443/bot/sendMessage\?chat_id=&text=[TimeAndDate]%20[Device.Name]%20--%20[Service.Status]" keep-result=no

Проверь из RouterOS:


/tool fetch url="http://:8443/botТОКЕН/getMe" keep-result=no

Если ответ не содержит ошибок — маршрут работает.

Вариант Б: MTProto proxy + туннель

Если нужна именно MTProto-маскировка трафика — на VPS поднимаем MTProto proxy, а рядом SOCKS5 или HTTP прокси для API-запросов. MTProto proxy обслуживает Telegram-клиентов на телефонах, SOCKS5 — запросы от RouterOS.

Устанавливаем MTProto proxy через Docker на VPS:


apt install -y docker.io
systemctl enable docker && systemctl start docker

SECRET=$(openssl rand -hex 16)
echo "Твой секрет: $SECRET"
docker run -d \
  --name mtproto-proxy \
  --restart=always \
  -p 443:443 \
  -e SECRET=$SECRET \
  telegrammessenger/proxy:latest

После запуска контейнер выведет ссылку для подключения вида tg://proxy?server=…. Сохрани её — она нужна для настройки Telegram-клиентов.


docker logs mtproto-proxy

Проверяем что контейнер запустился и работает:


docker exec mtproto-proxy curl http://localhost:2398/stats

Параметр active_targets должен быть больше нуля. Если ноль — VPS не достигает Telegram-серверов, проверь исходящий трафик на порту 443.

Настройка файрвола на VPS

Прокси без защиты — приглашение для абьюза. Минимальный набор правил UFW:


ufw allow ssh
ufw allow 443/tcp comment "MTProto proxy"
ufw allow from  to any port 8443 comment "Nginx TG API proxy"
ufw allow from  to any port 1080 comment "SOCKS5 Dante"
ufw --force enable
ufw status

Порт 1080 открыт только для IP твоего роутера. Остальным — отказ. Это не опциональная рекомендация, это обязательный шаг.

Таблица портов

Порт Протокол Назначение Открыт снаружи
443 TCP MTProto proxy для клиентов Да (все)
8443 TCP Nginx reverse proxy к TG API Только для IP роутера
1080 TCP Dante SOCKS5 Только для IP роутера
2398 TCP MTProto stats (localhost) Нет
22 TCP SSH управление VPS Лучше ограничить по IP

Проверка работы

После настройки проверяем каждый уровень по цепочке.

Проверка доступности VPS из RouterOS:


/ping address= count=3

Проверка что nginx-прокси отвечает:


/tool fetch url="http://:8443/botТОКЕН/getMe" output=user as-value

В выводе должен быть JSON с данными бота — поле «username» с именем твоего бота.

Ручная отправка тестового сообщения прямо из RouterOS:


/tool fetch url="http://:8443/botТОКЕН/sendMessage\?chat_id=&text=Test+from+RouterOS" keep-result=no

Если сообщение пришло — интеграция работает. Возвращайся в The Dude и нажимай Test в настройках уведомления.

Осложнения

Ошибка: connection timed out при /tool fetch

Причина — api.telegram.org заблокирован или недоступен с IP роутера. Решение — перейди на схему с прокси. Проверь доступность VPS через пинг. Убедись что nginx на VPS запущен и порт 8443 открыт.


systemctl status nginx
netstat -tlnp | grep 8443

Ошибка: bad HTTP message при /tool fetch

Причина — неправильно сформирован URL. Чаще всего забытый знак \? или пробел внутри URL. RouterOS требует URL в одну строку без реальных пробелов. Пробелы заменяй на %20, перенос строки на %0A.


# Неправильно - знак ? без экранирования
url="https://api.telegram.org/.../sendMessage?chat_id=..."
# Правильно
url="https://api.telegram.org/.../sendMessage\?chat_id=..."

Сообщение приходит при Test, но не приходит при реальном событии

Причина — уведомление не привязано к устройству или триггер настроен неправильно. Проверь: двойной клик на устройстве — вкладка Notifications — должен быть «Telegram Alert» в списке с нужным триггером.

Ещё одна причина — The Dude отправляет уведомление, но RouterOS занят и /tool fetch не выполняется моментально. Проверь логи RouterOS:


/log print where topics~"script"

Ошибка: Docker контейнер mtproto-proxy не запускается

Причина — занят порт 443 или нет доступа к Telegram. Проверь:


netstat -tlnp | grep 443
docker logs mtproto-proxy

Если порт занят — останови мешающий сервис или поменяй порт контейнера на нестандартный (-p 8443:443). Если в логах ошибки подключения — VPS не может достичь Telegram-серверов, проблема на уровне хостинга.

Ошибка: nginx возвращает 403

Причина — IP роутера не попал в allow-список. Проверь внешний IP MikroTik:


/ip address print

Если роутер за NAT у провайдера — используй IP провайдерского шлюза или переключись на схему с авторизацией по паролю в Dante.

Уведомления приходят, но с задержкой 5-10 минут

Причина — в настройках уведомления выставлен интервал повторения или Throttle. В The Dude открой Notification — проверь параметры «Repeat interval» и «Throttle». Для срочных алертов ставь Throttle в 0 или минимальное значение.

Альтернативные решения

3proxy вместо Dante

3proxy — более гибкий инструмент, поддерживает HTTP и SOCKS5 одновременно, умеет авторизацию. Вариант если нужна авторизация по логину/паролю вместо ограничения по IP:


apt install -y 3proxy

Базовый конфиг /etc/3proxy/3proxy.cfg:


daemon
log /var/log/3proxy.log
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
auth strong
users admin:CL:
allow admin
proxy -p8080
socks -p1080

WireGuard туннель вместо открытого прокси

Самый надёжный вариант — WireGuard туннель между MikroTik и VPS. Весь трафик к api.telegram.org идёт через туннель, прокси не нужен вообще. Настройка сложнее, зато прокси не торчит в интернет ни на каком порту. Подходит если уже есть WireGuard-инфраструктура.

Email-уведомления как резерв

The Dude поддерживает email-уведомления без всяких прокси — через штатный SMTP. Если Telegram недоступен совсем — email как fallback. Настраивается в Contents — Notifications — тип «Mail.

Профилактика и мониторинг

Отдельная строка в crontab на VPS без комментария убила несколько IT-отделов. Конфиг MTProto proxy обновляется автоматически, но это не значит что за ним не надо следить.

Автоматическое обновление конфигурации MTProxy (добавь в cron на VPS):


0 3 * * * docker pull telegrammessenger/proxy:latest && docker restart mtproto-proxy

Мониторинг доступности прокси из RouterOS — добавь скрипт в Scheduler:


/tool fetch url="http://:8443/botТОКЕН/getMe" keep-result=no
:if ($fetchresult = "error") do={
    :log error "TG proxy unavailable"
}

Бэкап конфигурации RouterOS перед изменениями — обязательно:


/system backup save name=before-tg-setup

Проверяй логи VPS раз в неделю. Если в логах Dante или nginx появились попытки подключения с чужих IP — немедленно ужесточи правила файрвола или смени порт.

Обновление MTProto proxy

Telegram периодически меняет конфигурацию серверов. Официальный образ Docker обновляется автоматически при рестарте контейнера. Если прокси перестал работать после обновления — пересоздай контейнер с новым секретом:


docker stop mtproto-proxy
docker rm mtproto-proxy
SECRET=$(openssl rand -hex 16)
docker run -d \
  --name mtproto-proxy \
  --restart=always \
  -p 443:443 \
  -e SECRET=$SECRET \
  telegrammessenger/proxy:latest
docker logs mtproto-proxy

FAQ

Почему уведомления The Dude в Telegram не работают после настройки?

Первым делом проверь три вещи. Один — выполни /tool fetch к api.telegram.org из терминала RouterOS и смотри на результат. Два — убедись что уведомление привязано к устройству на вкладке Notifications в свойствах устройства. Три — нажми Test и посмотри в лог RouterOS (/log print) — там будет ошибка если что-то пошло не так.

Как проверить что The Dude правильно отправляет уведомления в Telegram?

Нажми кнопку Test в настройках уведомления. Если в боте появилось сообщение — работает. Если нет — смотри логи RouterOS через /log print. Проверь токен и Chat ID: открой в браузере https://api.telegram.org/botТОКЕН/getMe — должен вернуть JSON с данными бота.

Что делать если api.telegram.org заблокирован провайдером?

Нужен промежуточный сервер — VPS за пределами блокировок. Подними на нём nginx как reverse proxy к api.telegram.org (порт 8443) и в команде /tool fetch замени api.telegram.org на IP своего VPS. Дополнительно закрой этот порт на файрволе для всех кроме IP своего роутера.

Чем MTProto proxy отличается от SOCKS5 для уведомлений The Dude?

MTProto proxy работает на уровне Telegram-клиентов и предназначен для использования в Telegram-приложении на телефоне. RouterOS и /tool fetch работают с HTTP API Telegram, который требует обычного HTTP или SOCKS5 прокси. Для уведомлений из The Dude нужен SOCKS5 или HTTP reverse proxy, а MTProto proxy используют параллельно — для телефонов сотрудников или для клиентов которым нужен доступ к Telegram.

Можно ли использовать публичные MTProto прокси для уведомлений The Dude?

Нет. Публичные MTProto прокси предназначены для Telegram-клиентов, не для HTTP API. Кроме того, они ненадёжны — регулярно умирают, меняют адреса, и ты не контролируешь их доступность. Для production-мониторинга нужен только свой VPS с контролируемым прокси.

Итог

Уведомления настроены. Теперь когда узел падает — Telegram сообщает об этом раньше пользователей. Если провайдер режет Telegram — прокси на VPS решает проблему раз и навсегда.

Вся схема: BotFather — токен и Chat ID — уведомление в The Dude типа «Execute on server» — команда /tool fetch — и опционально nginx или Dante на VPS если api.telegram.org недоступен напрямую.

Не заработало?
Пиши в комментарии — разберёмся. Опиши версию RouterOS, что пишет /log print и что выдаёт /tool fetch при ручном запуске. Это закрывает 90% проблем за пять минут.
Андрей Анатольевич
Author: Андрей Анатольевич

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх