Salve a tutti, dopo una lunga pausa ritorno con un altro articolo sempre per MikroTik. Spero che possa essere d’aiuto a qualcuno. Buona lettura.
Questo laboratorio GNS3 nasce con l’obiettivo di utilizzare due connessioni Internet PPPoE su un router MikroTik, assegnando a ciascuna rete locale una WAN preferenziale e mantenendo il passaggio automatico alla linea alternativa in caso di guasto.

Obiettivo del progetto
La LAN principale, corrispondente alla VLAN 1 e alla rete 192.168.10.0/24, utilizza normalmente la WAN2. La VLAN 20, con rete 192.168.1.0/24, utilizza invece la WAN1. Se la navigazione Internet della linea primaria non è più disponibile, anche quando la sessione PPPoE risulta ancora connessa, il traffico viene instradato automaticamente sulla seconda WAN.
- VLAN 1: WAN2 primaria, WAN1 di backup.
- VLAN 20: WAN1 primaria, WAN2 di backup.
- ether7: VLAN 1 untagged/native e VLAN 20 tagged.
- WAN1: client PPPoE su ether1.
- WAN2: client PPPoE su ether2.
Perché usare il routing ricorsivo
Controllare soltanto lo stato della PPPoE non è sufficiente: la sessione può rimanere attiva anche quando il provider non consente più di raggiungere Internet. Per questo vengono utilizzati due indirizzi pubblici come probe: 9.9.9.9 è vincolato alla WAN1 e 1.1.1.1 alla WAN2. Il parametro check-gateway=ping viene applicato alle default route ricorsive, non alle rotte /32 dei probe.
Bridge e VLAN
/interface bridge
add name=bridge1Lan vlan-filtering=no pvid=1
/interface bridge port
add bridge=bridge1Lan interface=ether7 pvid=1 ingress-filtering=yes frame-types=admit-all
/interface bridge vlan
add bridge=bridge1Lan vlan-ids=1 untagged=bridge1Lan,ether7
add bridge=bridge1Lan vlan-ids=20 tagged=bridge1Lan,ether7
/interface vlan
add interface=bridge1Lan name=vlan20 vlan-id=20
/interface bridge
set bridge1Lan vlan-filtering=yes
Il bridge deve comparire tra le porte tagged della VLAN 20 perché rappresenta la CPU port del MikroTik. Senza questa associazione l’interfaccia VLAN creata sopra il bridge non riceve correttamente il traffico tagged.
Indirizzamento e DHCP
/ip address
add address=192.168.10.1/24 interface=bridge1Lan
add address=192.168.1.1/24 interface=vlan20
/ip pool
add name=dhcp_pool_vlan1 ranges=192.168.10.2-192.168.10.254
add name=dhcp_pool_vlan20 ranges=192.168.1.2-192.168.1.254
/ip dhcp-server
add name=dhcp_vlan1 interface=bridge1Lan address-pool=dhcp_pool_vlan1 disabled=no
add name=dhcp_vlan20 interface=vlan20 address-pool=dhcp_pool_vlan20 disabled=no
PPPoE e tabelle di routing
/interface pppoe-client
add name=pppoe-out1 interface=ether1Wan1 user=<UTENTE_WAN1> add-default-route=no use-peer-dns=no disabled=no
add name=pppoe-out2 interface=ether2Wan2 user=<UTENTE_WAN2> add-default-route=no use-peer-dns=no disabled=no
/routing table
add name=rtabVlan20 fib
Le default route automatiche delle PPPoE vengono disabilitate perché la scelta della linea è gestita esplicitamente dalle tabelle di routing.
Probe e default route ricorsive
/ip route
add dst-address=9.9.9.9/32 gateway=pppoe-out1 routing-table=main scope=10 comment="Probe WAN1"
add dst-address=1.1.1.1/32 gateway=pppoe-out2 routing-table=main scope=10 comment="Probe WAN2"
# Main: WAN2 primaria, WAN1 backup
add dst-address=0.0.0.0/0 gateway=1.1.1.1@main routing-table=main distance=1 check-gateway=ping scope=30 target-scope=11
add dst-address=0.0.0.0/0 gateway=9.9.9.9@main routing-table=main distance=2 check-gateway=ping scope=30 target-scope=11
# VLAN20: WAN1 primaria, WAN2 backup
add dst-address=0.0.0.0/0 gateway=9.9.9.9@main routing-table=rtabVlan20 distance=1 check-gateway=ping scope=30 target-scope=11
add dst-address=0.0.0.0/0 gateway=1.1.1.1@main routing-table=rtabVlan20 distance=2 check-gateway=ping scope=30 target-scope=11
Le rotte /32 dei probe devono risiedere nella tabella main ed essere vincolate alla relativa PPPoE. Le default route della tabella personalizzata utilizzano invece la sintassi gateway=IP_PROBE@main, necessaria affinché RouterOS possa risolvere correttamente il next-hop.
Policy routing della VLAN 20
/routing rule
add dst-address=192.168.0.0/16 action=lookup-only-in-table table=main comment="Reti locali via main"
add src-address=192.168.1.0/24 action=lookup-only-in-table table=rtabVlan20 comment="VLAN20 via WAN1"
La prima regola conserva la comunicazione con le reti locali. La seconda invia il traffico proveniente dalla VLAN 20 nella tabella dedicata, dove WAN1 ha distanza 1 e WAN2 distanza 2.
NAT
/ip firewall nat
add chain=srcnat action=masquerade out-interface=pppoe-out1 comment="NAT WAN1"
add chain=srcnat action=masquerade out-interface=pppoe-out2 comment="NAT WAN2"
Comportamento del failover
In condizioni normali i client della VLAN 1 navigano attraverso WAN2 e quelli della VLAN 20 attraverso WAN1. Se il probe associato alla linea primaria smette di rispondere, RouterOS disattiva la relativa default route ricorsiva e utilizza quella con distanza 2. Quando la connettività viene ripristinata, la route primaria torna attiva automaticamente.
Errori riscontrati durante il laboratorio
La prima configurazione non funzionava perché il probe della WAN1 era stato collocato nella tabella personalizzata e la default route non utilizzava correttamente il suffisso @main. Di conseguenza il gateway ricorsivo risultava inattivo e il traffico della VLAN 20 ricadeva sulla default route della WAN2. Mancavano inoltre la route di backup nella tabella VLAN20 e il bridge tra le porte tagged della VLAN 20.
Verifica
/ip route print detail where routing-table=rtabVlan20
/tool traceroute 8.8.8.8 routing-table=rtabVlan20
/interface pppoe-client disable pppoe-out1
/interface pppoe-client enable pppoe-out1
Disabilitando WAN1, la VLAN 20 deve passare su WAN2; dopo la riattivazione deve tornare automaticamente su WAN1. Lo stesso comportamento, con priorità opposta, è previsto per la VLAN 1.