Как прокинуть порт на mikrotik только в случаи когда в запросе есть соответствующая строка?

Всем доброго!
Есть у меня за NATом сервер, и я хочу прокидывать на его порт (допустим 81 порт) только те запросы которие имеют в себе слово online
Допустим пробрасывать запрос severIP:81/online
Но другие запросы типу severIP:81/chekresult или другие блокировать(не пробрасывать)

Пытался через Layer 7 protocol с регуляркой ^.+(online).*$ с названием tst
и правилом в разделе NAT
/ip firewall nat
add action=dst-nat chain=dstnat comment="TMP-test" dst-address=My-external-ip dst-port=81 layer7-protocol=tst protocol=tcp to-addresses=10.10.10.141 to-ports=81


Но не работает :(
  • Вопрос задан
  • 476 просмотров
Пригласить эксперта
Ответы на вопрос 2
shurshur
@shurshur
Сисадмин, просто сисадмин...
И не будет работать, так как URI передаётся только после установки соединения, на момент установки соединения ещё нельзя идентифицировать, куда перенаправить трафик. Для решения этой задачи надо использовать reverse proxy, в качестве которого популярно использовать nginx. Но так как тут не нужно раскидывать по нескольким разным серверам, то проще просто в целевом web-сервере отвергать запросы, не подходящие под условие. Если это почему-то невозможно (например, сервер является чужим приложением, в котором нельзя ничего изменить), то можно поставить nginx в разрез.
Ответ написан
Комментировать
@rPman
это бессмысленно, так как url скрыт от роутера шифрованием https

если все же надо для http то делай через прокси, при необходимости transparrent proxy (вроде бы когда то на микротике его запускали), трафик пропускай через свою прокси, которая будет уже по логике что хочешь делать, как подменять адрес подключения так и настраивать внешне перенаправления на роутере) но как это сделать именно на микротике не посоветую
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы