La configurazione di rete su cui lavoreremo sarà la seguente:
Il primo step è quello di assegnare gli opportuni indirizzamenti alle interfacce del router:
/ip address add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=LAN add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=ISP1 add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=ISP2
Le interfacce ISP1 ed ISP2 rappresentano le due connessioni ad internet, mentre l'interfaccia LAN rappresenta la rete interna.
Per poter indirizzare i pacchetti attraverso la corretta interfaccia, sarà necessario creare dei marcatori attraverso l'uso di opportuni mangle:
/ip firewall mangle add chain=prerouting dst-address=10.111.0.0/24 action=accept in-interface=LAN add chain=prerouting dst-address=10.112.0.0/24 action=accept in-interface=LAN add chain=prerouting in-interface=ISP1 connection-mark=no-mark action=mark-connection \ new-connection-mark=ISP1_conn add chain=prerouting in-interface=ISP2 connection-mark=no-mark action=mark-connection \ new-connection-mark=ISP2_conn add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \ per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \ per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn add chain=prerouting connection-mark=ISP1_conn in-interface=LAN action=mark-routing \ new-routing-mark=to_ISP1 add chain=prerouting connection-mark=ISP2_conn in-interface=LAN action=mark-routing \ new-routing-mark=to_ISP2 add chain=output connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1 add chain=output connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2
Al fine di evitare che si generino dei loop sulle interfacce, prima di tutto vengono presi in considerazione i pacchetti che attraversano l'interfaccia LAN nella direzione "uscente", cioè verso un gateway. Questi vengono marcati per ricordare da quale interfaccia sono stati inviati. Purtroppo le regole di mangle non possono essere usati su chain di input, ma le chain di prerouting hanno il difetto di considerare ogni tipo di pacchetto. Per effettuare la selezione si utilizza la regola dst-address-type=!local
Infine scriviamo le route:
/ip route add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_ISP1 check-gateway=ping add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_ISP2 check-gateway=ping
Al fine di prevenire il failover di una delle due connessioni è necessario inserire anche le seguenti regole:
/ip route add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping
Infine, sarà necessario inserire le opportune regole di NAT:
/ip firewall nat add chain=srcnat out-interface=ISP1 action=masquerade add chain=srcnat out-interface=ISP2 action=masquerade
2018 Ⓒ TanzoLab