(2) создаю правило в L7 для url: routerpwn.com/info.html ip firewall layer7-protocol add name=routerpwn regexp="^.*(\/info\.html).*(routerpwn\.com).*$"
(3) маркирую пакеты по L7 ip firewall mangle add action=mark-packet chain=registry dst-port=80 layer7-protocol=routerpwn new-packet-mark=registry passthrough=no protocol=tcp src-address=172.16.66.0/24
(4) а в NAT перенаправляю: ip firewall nat add action=dst-nat chain=dstnat dst-port=80 packet-mark=registry protocol=tcp src-address=172.16.66.0/24 to-addresses=172.16.66.200 to-ports=80
Что получается: 1-3 проходит как и хотел, а вот (4) не срабатывает… пробовал в (4) перенаправлять, когда dst-address = 74.208.139.97 получается, так же получается если в (1) промаркировать пакеты с dst-address == 74.208.139.97 тоже вышло, а вот после (3) пункта и маркировки пакета по L7 не получается.
Прошу помощи.
UDP:
если на шаге (3) убрать L7, то все получается. L7 правило создано верно, проверял через ip filter — дропаются пакетики
В результате поступил так:
1) Добавил ip адрес в список registry на котором находится сайт routerpwn.com /ip firewall address-list add address=74.208.139.97 list=registry
2) Если пакет для ip адреса из этого списка то перенаправляю на порт 8080 в Web proxy /ip firewall nat add action=redirect chain=dstnat comment=registry dst-address-list=registry dst-port=80 protocol=tcp src-address=172.16.66.0/24 to-ports=8080
3) Включаю прокси на порту 8080
/ip proxy set enabled=yes
4) Перенаправляю если обращение идет к routerpwn.com/info.html на 172.16.66.200
/ip proxy access add action=deny dst-host=routerpwn.com path=/info.html redirect-to=«172.16.66.200\?host=routerpwn.com&get=info.html»
Минус: не передается имя хоста и get запрос. По этой причине передаю их в параметрах get для 172.16.66.200 (172.16.66.200?host=routerpwn.com&get=info.html)
Подозреваю, что первый пакет (TCP SYN) у вас прошел через таблицу нат, где он не перенаправлялся (т.к. до L7 дело еще не дошло), а все последующие пакеты бегают уже мимо таблицы нат из-за connection tracking. Попробуйте в таблице raw отключить connection tracking для таких соединений
Но с SYN-пакетом все равно надо определяться сразу, натить его или нет, т.к. если натить соединение «из середины», то ничего хорошего из этого не получится