Firewall e QoSIntermedio
Mangle — Marking, Policy Routing e DSCP
Il modulo mangle permette di marcare connessioni e pacchetti per il QoS (Queue Tree), di implementare policy routing per load balancing o failover, e di modificare campi header come TTL e DSCP.
Mangle è il modulo di marcatura e modifica dei pacchetti in RouterOS. Non blocca né accetta traffico: marca le connessioni e i pacchetti per consentire ad altri moduli (Queue Tree per il QoS, routing per il policy routing) di trattarli in modo differenziato.
Azioni principali del mangle
- mark-connection (
new-connection-mark) — applica un segno a tutta la connessione. Efficiente perché segna solo il primo pacchetto (connection-state=new), poi i pacchetti successivi ereditano il mark. - mark-packet (
new-packet-mark) — applica un segno al singolo pacchetto. Il Queue Tree usa questi mark per classificare il traffico nelle code. Limite: max 4096 mark distinti. - mark-routing (
new-routing-mark) — dirige la connessione verso una tabella di routing specifica (policy routing, load balancing, failover). - change-ttl — modifica il TTL (increment/decrement/set). Utile per nascondere la topologia di rete o per gestire CPE dietro il router.
- change-dscp — imposta i bit DSCP (0-63) per QoS end-to-end (es. EF=46 per VoIP, AF21=18 per streaming).
- set-priority — imposta la priorità su interfacce VLAN (802.1p) o wireless (WMM).
- change-mss — modifica il Maximum Segment Size TCP; essenziale per evitare frammentazione su tunnel VPN (imposta a 1300 per tunnel PPPoE/L2TP).
Pattern efficiente: mark-connection poi mark-packet
Marking QoS per Queue Tree — pattern connessione→pacchetto
# ================================================================ # PATTERN DI BASE: marca prima la connessione (solo sul primo pacchetto), # poi marca tutti i pacchetti della connessione già marcata. # Questo è MOLTO più efficiente che fare match su ogni singolo pacchetto. # ================================================================ # PASSO 1: marca la connessione sul primo pacchetto (new) # Esempio: identifica il traffico VoIP (SIP UDP 5060 e RTP 10000-20000) /ip firewall mangle add chain=prerouting connection-state=new protocol=udp dst-port=5060 action=mark-connection new-connection-mark=voip_conn passthrough=yes comment="Identifica connessioni SIP" /ip firewall mangle add chain=prerouting connection-state=new protocol=udp dst-port=10000-20000 action=mark-connection new-connection-mark=voip_conn passthrough=yes comment="Identifica flussi RTP" # PASSO 2: marca ogni pacchetto della connessione già identificata /ip firewall mangle add chain=prerouting connection-mark=voip_conn action=mark-packet new-packet-mark=voip_packet passthrough=no comment="Marca pacchetti VoIP per il Queue Tree" # PASSO 3: il Queue Tree usa il packet-mark per prioritizzare # (vedi articolo QoS - Queue Tree HTB) # ---------------------------------------------------------------- # MODIFICA MSS per connessioni PPPoE (previene frammentazione) # ---------------------------------------------------------------- /ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn tcp-mss=1453-65535 action=change-mss new-mss=1452 passthrough=yes comment="Clamp MSS per PPPoE (MTU 1492 - 40 = 1452)" # ---------------------------------------------------------------- # POLICY ROUTING: traffico HTTP/HTTPS via ISP-2 (failover/load balance) # ---------------------------------------------------------------- /ip firewall mangle add chain=prerouting in-interface-list=LAN connection-state=new protocol=tcp dst-port=80,443 action=mark-routing new-routing-mark=via-isp2 passthrough=yes comment="Instrada navigazione web via ISP secondario" # Nella tabella di routing "via-isp2" deve esserci una default-route # che punta al gateway del secondo ISP: /ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1 routing-table=via-isp2 comment="Default route ISP-2 per policy routing"
Attenzione:
mark-routing non funziona con FastTrack — i pacchetti accellerati hardware bypassano il mangle. Se usi policy routing, disabilita FastTrack per quel traffico oppure usa hw-offload=no. Usa sempre passthrough=yes quando vuoi che il pacchetto continui a essere valutato dalle regole successive, passthrough=no (default) per fermarsi alla prima corrispondenza.manglemark-connectionmark-packetmark-routingDSCPpolicy routingQoS markingchange-ttlchange-dscpset-priorityPCCload balancing
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