Как лучше с микротика отправить пакет udp пакет на определённый порт? Или как на нем организовать клиент port knocking?
Ссылка скопирована
По вводным: имеется linux сервер с настроенным knockd который настраивает iptables, а именно заменяет один dst порт на другой у пакетов с определённым src IP.
По вводным: имеется несколько клиентов микротиков с динамические IP.
По вводным: нужно сделать так чтобы микротики могли настроить iptables на сервере линукса внося туда свои ip.
Сейчас ситуация такая: вариант установить openwrt и с него отправлять необходимые пакеты не подходит.
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ

На MikroTik можно организовать аналог port knocking без OpenWRT. Самый простой вариант — отправлять UDP-пакет с самого RouterOS через встроенный tool, а на Linux-сервере knockd будет видеть исходный публичный IP микротика и добавлять его в iptables/nftables. Вопрос в том, какой способ доступен в вашей версии RouterOS.
Если достаточно отправить UDP на порт, в RouterOS можно использовать
/tool fetchдля TCP/HTTP, но для чистого UDP он не подходит. Для port knocking чаще используют один из вариантов:/tool netwatchи обращением к HTTPS endpoint на сервере;На практике я бы не делал UDP knock как основное решение для динамических IP. Надёжнее поднять на Linux небольшой HTTPS endpoint, куда MikroTik ходит по scheduler:
/tool fetch url="https://example.com/knock?token=SECRET" keep-result=no
На сервере endpoint смотрит реальный source IP запроса и добавляет его в firewall. В nginx/PHP это можно сделать аккуратно, но обязательно с токеном и ограничением частоты. Пример логики:
# псевдологика на сервере ipset add mikrotik_clients "$REMOTE_ADDR" timeout 3600 iptables -t nat -A PREROUTING -m set --match-set mikrotik_clients src -p tcp --dport 1234 -j REDIRECT --to-ports 5678
Если нужен именно knockd, можно настроить последовательность TCP-портов и дергать их с MikroTik через TCP connect, но это менее удобно и хуже диагностируется. UDP-пакеты могут теряться, а за NAT/CGNAT исходный IP может быть не тем, что вы ожидаете.
Итог: технически клиент port knocking на MikroTik сделать можно, но для динамических клиентов лучше заменить knockd на HTTPS-token схему или WireGuard. MikroTik стабильно делает
/tool fetchпо расписанию, сервер видит актуальный внешний IP и обновляет firewall без OpenWRT и без ручного узнавания адресов.