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. Casi d'uso tipici WISP: far uscire una VLAN cliente dedicata da un ISP2 separato; mandare il traffico di gestione/management su un link out-of-band; instradare il VoIP sul link a latenza più bassa.
Passo 1: creare la routing table custom
In RouterOS v7 le tabelle di routing si gestiscono nel menu /routing/table (in v6 erano un campo libero, in v7 vanno dichiarate esplicitamente). Il sistema include sempre la tabella main. Il flag fib indica che la tabella ha una propria FIB ed è quindi usabile per il forwarding: senza fib la tabella esiste ma non instrada nulla.
# Crea la tabella custom per ISP2 (fib obbligatorio per il forwarding) /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 \ check-gateway=ping \ comment="Default via ISP2 (policy routing)" # Verifica /routing/table/print /ip/route/print where routing-table=isp2-table
Passo 2: marcare il traffico con mangle (consigliato con connection-mark)
Il firewall mangle usa action=mark-routing per taggare i pacchetti con un routing mark, che seleziona poi la tabella. Per evitare di rivalutare ogni pacchetto è buona pratica marcare prima la connessione (mark-connection) e poi derivare il routing mark dal connection mark: così tutti i pacchetti di una sessione (andata e ritorno della logica applicativa) restano coerenti. La chain prerouting intercetta il traffico transitante; output quello generato dal router.
# 1. Marca la NUOVA connessione proveniente dalla VLAN speciale /ip/firewall/mangle/add \ chain=prerouting \ src-address=10.20.0.0/24 \ connection-state=new \ action=mark-connection \ new-connection-mark=vlan-isp2 \ passthrough=yes \ comment="VLAN speciale -> connection mark" # 2. Deriva il routing mark dal connection mark (per ogni pacchetto della sessione) /ip/firewall/mangle/add \ chain=prerouting \ connection-mark=vlan-isp2 \ action=mark-routing \ new-routing-mark=isp2-table \ passthrough=no \ comment="VLAN speciale -> ISP2"
Passo 3: routing rules (alternativa più semplice al mangle)
Le routing rules in /routing/rule sono un meccanismo alternativo al mangle, più diretto per casi basati su IP sorgente/destinazione o interfaccia. Le azioni disponibili sono lookup (cerca nella tabella indicata, poi fa fallback a main se non trova), lookup-only-in-table (usa SOLO quella tabella, niente fallback) e drop. Le regole si valutano in ordine di min-prefix/inserimento.
# Tutto il traffico da 10.20.0.0/24 usa isp2-table (con fallback a main se non trova) /routing/rule/add \ src-address=10.20.0.0/24 \ action=lookup \ table=isp2-table \ comment="VLAN speciale -> ISP2" # Variante 'hard': nessun fallback (se ISP2 è giù, il traffico viene scartato) /routing/rule/add \ src-address=10.20.0.0/24 \ action=lookup-only-in-table \ table=isp2-table # Visualizzare le regole attive /routing/rule/print
Continua con
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