Guida MikroTik
RoutingIntermedio

Policy Routing: routing table multiple, mangle mark-routing e routing rules

Implementa il policy routing in RouterOS v7 usando /routing/table per creare tabelle custom, mangle con action=mark-routing per marcare i flussi e routing rules per instradare traffico specifico su ISP dedicati.

Cos'è il policy routing e quando serve

Il policy routing (PBR, Policy-Based Routing) consente di instradare il traffico in base a criteri diversi dalla sola destinazione: sorgente IP, interfaccia di ingresso, protocollo, porta, o qualsiasi campo del pacchetto. Caso d'uso tipico WISP: far uscire tutto il traffico di una certa VLAN cliente dal ISP2 dedicato, mentre il resto usa ISP1.

Passo 1: creare la routing table custom

In RouterOS v7 le tabelle di routing si gestiscono nel menu /routing/table. Il sistema include sempre la tabella main. Ogni tabella custom può avere il proprio set di rotte indipendente. Il flag fib indica che la tabella ha una propria FIB (necessario per il forwarding).

Creare una routing table per ISP2
# Crea la tabella custom per ISP2
/routing/table/add name=isp2-table fib

# Aggiungi il default gateway ISP2 nella tabella custom
/ip/route/add dst-address=0.0.0.0/0 \
  gateway=198.51.100.1 \
  routing-table=isp2-table \
  comment="Default via ISP2 (policy routing)"

# IMPORTANTE: la tabella main deve avere una rotta che risolva
# il gateway ISP2 (solitamente già presente come rotta connected)

Passo 2: marcare il traffico con mangle

Il firewall mangle (chain prerouting o output) usa action=mark-routing per taggare i pacchetti con un nome di routing mark. Questo mark viene poi usato per selezionare la tabella di routing. La chain prerouting intercetta il traffico in ingresso (da LAN verso WAN); output intercetta il traffico generato dal router stesso.

Marcare il traffico di una VLAN per policy routing
# Marca tutto il traffico proveniente da 10.20.0.0/24 (VLAN cliente speciale)
# perché esca da ISP2
/ip/firewall/mangle/add \
  chain=prerouting \
  src-address=10.20.0.0/24 \
  action=mark-routing \
  new-routing-mark=isp2-table \
  passthrough=yes \
  comment="VLAN-speciale -> ISP2"

# Marca traffico verso un server specifico (es. backup cloud) via ISP2
/ip/firewall/mangle/add \
  chain=prerouting \
  dst-address=203.0.113.50 \
  action=mark-routing \
  new-routing-mark=isp2-table \
  passthrough=yes \
  comment="Backup cloud -> ISP2"

Passo 3: routing rules (alternativa al mangle)

Le routing rules in /routing/rule sono un meccanismo alternativo al mangle, più semplice per casi basati su IP sorgente/destinazione o interfaccia. La priorità di default è: mangle prima, poi routing rules. Le azioni disponibili sono lookup (usa la tabella, poi fallback a main), lookup-only-in-table (usa solo quella tabella, senza fallback) e drop.

Routing rules basate su IP sorgente
# Tutto il traffico da 10.20.0.0/24 usa isp2-table (senza fallback)
/routing/rule/add \
  src-address=10.20.0.0/24 \
  action=lookup-only-in-table \
  table=isp2-table \
  comment="VLAN speciale -> ISP2"

# Visualizzare le regole attive
/routing/rule/print

# Ordine di lookup (default): mangle, vrf-lookup, vrf-unreach, local, user, main
/routing/settings/print
Con policy routing e NAT masquerade su più WAN, aggiungi una regola srcnat per ogni WAN: out-interface=ether-wan1 e out-interface=ether-wan2. Senza, i pacchetti escono dall'ISP2 ma il NAT li mappa con l'IP ISP1, causando rifiuto delle risposte.
policy routingrouting tablemark-routingmanglePBRsource routingmulti-WAN routingtraffic steeringrouting rule

Configura senza fatica con l'AI

In WispOS l'agente AI genera la configurazione RouterOS dalle tue parole e un tutor ti guida passo passo.

Prova WispOS