Сопоставляем весь трафик 36, chain=prerouting, action=mark-routing, new-routing-mark=all, passthrough=yes. И добавляем маршрут: 0.0.0.0/0 r 82.135.202.1 1 WAN2. С этим маршрутом с routing mark all не работает, а вот если сопоставить, например, порт 80 – маршрут работает хорошо. И этот пример из mikrotik.com.
Примечания:
Можно использовать policy routing даже при использовании маскирования в частных сетях. Адрес источника будет таким же, как и в локальной сети. В предыдущих версиях RouterOS адрес источника менялся на 0.0.0.0.
Невозможно распознать peer-to-peer трафик из первого пакета. Можно сопоставлять только уже установленные соединения. Это также означает, что если Source NAT по-другому обрабатывает peer-to-peer трафик, отличный от обычного, peer-to-peer программы не будут работать (типичное применение – policy-routing перенаправляет обычный трафик через один интерфейс, а peer-to-peer трафик – через другой).
Известный обходной путь для этой проблемы – решить её с другой стороны: заставить не peer-to-peer трафик идти через другой шлюз, а весь остальной полезный трафик – через другой шлюз. Другими словами, указать, какие протоколы (HTTP, DNS, POP3 и т.д.) будут проходить через шлюз А, а все остальное (включая peer-to-peer трафик) использовать шлюз B (неважно, какой шлюз какой; важно только, чтобы peer-to-peer трафик оставался вместе со всем трафиком, кроме указанных протоколов).
Пример:
Чтобы добавить правило, указывающее, что все пакеты от хоста 10.0.0.144 должны искать таблицу маршрутизации mt:
[admin@MikroTik] ip firewall mangle add action=mark-routing new-routing-mark=mt ... chain=prerouting
[admin@MikroTik] ip route> add gateway=10.0.0.254 routing-mark=mt
[admin@MikroTik] ip route rule> add src-address=10.0.0.144/32 ... table=mt action=lookup
[admin@MikroTik] ip route rule> print
Flags: X - disabled, I - invalid
0 src-address=192.168.0.144/32 action=lookup table=mt
[admin@MikroTik] ip route rule>