martedì , Ottobre 22 2019
Ultime Notizie
Home / Wireless & Networking / Mikrotik / Mikrotik – Aggregare due WAN con PCC

Mikrotik – Aggregare due WAN con PCC

Ciao Ragazzi,

oggi parliamo del PCC (Per Connection Classifier). Tra le sue funzionalità analizziamo il Load Balancing di più connessioni internet per avere un unico flusso aggregato che sarà in totale quasi la somma delle velocità delle singole connessioni(es. WAN1=10Mb, WAN=10Mb -> in uscita avremo 18-20Mb)

Esistono diverse modalità di utilizzo, oggi ne vedremo due: una basata sull’indirizzo IP delle due WAN e una basata su due interfacce PPPoE.

1 – Modalità basata su IP delle WAN

Per prima cosa vediamo un esempio di come è organizzata la rete:

In questo caso lo scenario prevedere:

WAN1 – 10.0.1.1/24

WAN2 – 10.0.2.1/24

LAN – 172.18.1.0/24

Per prima cosa definiamo sulla Mikrotik gli IP che utilizzeremo:

/ip address
add address=172.18.1.0/24 network=172.18.1.0 broadcast=172.18.1.255 interface=eth5
add address=10.0.1.1/24 network=10.0.1.0 broadcast=10.0.1.255 interface=eth1
add address=10.0.2.1/24 network=10.0.2.0 broadcast=10.0.2.255 interface=eth2

Fatto questo bisogna andare a definire le regole mangle per “manipolare” i pacchetti:

/ip firewall mangle
add chain=input in-interface=eth1 action=mark-connection new-connection-mark=WAN1_conn
add chain=input in-interface=eth2 action=mark-connection new-connection-mark=WAN2_conn
add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1
add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2
add chain=prerouting dst-address=10.0.1.0/24 action=accept in-interface=eth1
add chain=prerouting dst-address=10.0.2.0/24 action=accept in-interface=eth2
add chain=prerouting dst-address-type=!local in-interface=eth5 per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=eth5 per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
add chain=prerouting connection-mark=WAN1_conn in-interface=eth5 action=mark-routing new-routing-mark=to_WAN1
add chain=prerouting connection-mark=WAN2_conn in-interface=eth5 action=mark-routing new-routing-mark=to_WAN2

Definite le regole mangle si posso creare le rotte statiche:

/ip route
add dst-address=0.0.0.0/0 gateway=10.0.1.1 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.0.2.1 routing-mark=to_WAN2 check-gateway=ping

Concludiamo con il masquerade per permettere la navigazione:

/ip firewall nat
add chain=srcnat out-interface=eth1 action=masquerade
add chain=srcnat out-interface=eth2 action=masquerade

Finito! Facendo uno speedtest da uno dei pc della rete interna vedremo il traffico aggregato delle due ADSL!

2 – Modalità basata sulle interfacce

Lo scenario è pressocchè identico a quello di sopra solo che questa volta non abbiamo gli IP statici per le connessioni WAN ma sarà la Mikrotik ad iniziare due connessioni PPPoE e il Load Balancing sarà fatto tra queste due. L’ip della LAN manterremo lo stesso.

/ip address
add address=172.18.1.0/24 network=172.18.1.0 broadcast=172.18.1.255 interface=eth5

Aggiungiamo le connessioni PPPoE:

/interface pppoe-client
add allow=pap,chap disabled=no interface=ether1 max-mru=1480 max-mtu=1480 mrru=1600 name=pppoe-wan1 password=password1 user=provider1
add allow=pap,chap disabled=no interface=ether2 max-mru=1480 max-mtu=1480 mrru=1600 name=pppoe-wan2 password=password2 user=provider2

Proseguiamo con le regole mangle:

/ip firewall mangle
add chain=input in-interface=pppoe-wan1 action=mark-connection new-connection-mark=WAN1_conn
add chain=input in-interface=pppoe-wan2 action=mark-connection new-connection-mark=WAN2_conn
add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1
add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2
add chain=prerouting dst-address-type=!local in-interface=eth5 per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=eth5 per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
add chain=prerouting connection-mark=WAN1_conn in-interface=eth5 action=mark-routing new-routing-mark=to_WAN1
add chain=prerouting connection-mark=WAN2_conn in-interface=eth5 action=mark-routing new-routing-mark=to_WAN2

Concludiamo con Routing e Masquerade:

/ip route
add dst-address=0.0.0.0/0 gateway=pppoe-wan1 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=pppoe-wan2 routing-mark=to_WAN2 check-gateway=ping
/ip firewall nat
add chain=srcnat out-interface=pppoe-wan1 action=masquerade
add chain=srcnat out-interface=pppoe-wan2 action=masquerade

 

Enjoy!

Info Paolo Daniele

Ingegnere delle Telecomunicazioni, appassionato di informatica fin da piccolo ho trasformato la passione in lavoro. Con il PHP faccio tutto (o quasi...) ma non disprezzo altri linguaggi all'occorrenza. Se vi piace il mio sito, o vi è utile, o vi sto simpatico, offritemi una birra!

Ti potrebbe interessare

Mikrotik VLAN e Switch

Ciao Ragazzi, ritorno a scrivere dopo qualche tempo per parlarvi della “nuova” gestione delle VLAN …

17 Commenti

  1. Ciao …

    ho effettuato l’implementazione secondo il modello 1 del tuo splendido articolo…

    Collaudato e funziona alla grandissima…

    Una domanda…

    La funzionalità di Load Balancing include automaticamente anche il FAILOVER di una delle due connessioni Internet ?

    In caso contrario è possibile implementare uno script per poterlo fare ?

    Grazie mille..

    • Paolo Daniele

      Ciao Paolo, si la funzionalità di Failover in questo caso è integrata nel Load Balancing 🙂

  2. Ciao, mi interessa molto questo articolo ma vorrei capire meglio se posso adattare la configurazione 1 alla mia configurazione utilizzando una RB960PGS al posto dell’attuale router dual WAN che mi gestisce solo il faillover.

    ti illustro la mia situazione

    LINKEM – IP LAN 192.168.20.254 con inoltro di tutto sull’ip DMZ 192.168.20.1
    ALTRO – IP LAN 192.168.10.254 con inoltro di tutto sull’ip DMZ 192.168.10.1

    Router TP-LINK Dual WAN configurato come NAT

    IP WAN1 192.168.20.1 con GW 192.168.20.254
    IP WAN2 192.168.10.1 con GW 192.168.10.254
    IP LAN 192.168.201.1 che poi utilizzo come GW su PC ecc..

    Grazie.

    • Paolo Daniele

      Ciao Ivano,
      scusami il ritardo nella risposta, devi provare! Purtroppo nessuno come sa cosa c’è dietro la tua rete.
      A livello teorico non c’è nessun problema, ma devi verificare che non ci siano problemi con il resto dei servizi.
      Se hai bisogno chiedi pure.

  3. Ciao Paolo,
    una domanda ma il load balance come viene effettuato?
    Nel senso i pacchetti relativi ad una stessa connessione TCP/UDP sono smistati sulle due interfacce WAN in modalità Round Robin, o i pacchetti di una singola connessione seguirannocomunque la stessa rotta?
    Grazie mille

  4. Ciao Paolo,
    bellissima guida e perfettamente funzionante con le 2 wan.
    Ho però un “piccolo” problema: utilizzo la eht3 come ponte fra 2 reti LAN (ho un ponte radio), e quando attivo la nuova configurazione, il punte non funziona più. Posso usare la eth3 (UPLINK) come fosse una terza “opzione” e rimodellare la config in modo che includa anche l’UPLINK (utilizzerei come classificatori 3/0, 3/1, 3/2) ?
    Spero di esser stato abbastanza chiaro 🙂
    Grazie mille e a presto!
    Marco

    • Paolo Daniele

      Ciao Marco,
      ma la eth3 come è configurata? Hai solo le 2 WAN e poi la eth3? perchè altrimenti dovrebbe andare senza problemi. E’ in qualche bridge particolare con una classe IP diversa?

  5. Ciao Paolo,
    puoi fornirmi uno spunto per adattare al meglio la configurazione ad una situazione in cui ho LAN1 (bridge1) WAN1 (PPPoE1) e LAN2 (bridge2) WAN2 (PPPoE2) distinte (quindi niente load-balancing)?
    Grazie!
    Walter

  6. Ottima guida, funziona perfettamente. Mi rimane un piccolo problema da risolvere il Port foerwarding verso un IP specifico interno. Puntando ad una sola wan(IP pubblico) non riesco a fare in maniera che questa macchina all’i terno risponda in maniera costante. Mi spiego meglio ogni tanto va ogni tanto no. Credo devo trovare il modo di escluderla dal pcc a livello IP. Come posso fare? Grazie in anticipo

    • Paolo Daniele

      Potresti provare con una regola che forza l’ip sorgente ad uscire sempre dalla stessa connessione. Oppure con dei mangle.

  7. Ciao Bellissima guida! Vorrei esporti il mio problema:
    Ho una connessione 50M/3M WADSL di Micso che funziona bene solo se si aprono connessioni multiple verso i server esterni. Mi spiego meglio: se provo a scaricare una distro di ubuntu mediante un download accelerator aprendo una sola connessione la velocità massima che raggiunge la linea è intorno ai 15M, mentre se provo ad effettuare il download aprendo 4/8 connessioni la velocità arriva tranquillamente a 40/50M. Stessa cosa accade per tutto il traffico in entrata, tranne il traffico streaming che sembra già essere ottimizzato.

    Avendo io a disposizione un hAP Lite come posso (se posso) adattare la tua guida per splittare le connessioni verso il gateway (antenna) di Micso? Posso configurare le due WAN in modo che puntino allo stesso gateway?

    • Paolo Daniele

      Ciao Claudio, il problema in realtà è quello per cui sono nati i download accelerator ovvero lo split dei file in maniera da scaricare un pezzo qua e un pezzo là.
      Ovviamente non si può fare con tutto e non è qualcosa che dipende dalla connessione o dall’aggregazione. Se tu vuoi fare due WAN sulla stessa antenna non risolvi comunque per quando richiedi un file nella classica modalità client-server, questo non verrà splittato sulle connessioni come avviene con lo streaming!
      Spero di non essere stato troppo complicato!
      A presto

  8. ottimo e chiaro
    ma ti chiedo del caso si debba mettere la wan 2 come bk con connessione lte ques’ultima si puo attivare solo in caso di mancata connessione della wan 1? e puo generare un email per per segnalare il problema ? in oltre ( e qui andiamo sul complicato potrei fere un calendario dove la wan 2 si attiva per 2 giga solo in alcuni giorni del mese?

    • Paolo Daniele

      si può fare tutto ma per la seconda parte ti serve scrivere qualcosa su un web server esterno. Mi spiego meglio, per la prima parte non ci sono problemi, ma in realtà non aggreghi, vai in failover (se giri nel sito c’è la guida). Nel secondo caso, puoi fare in modo di utilizzare un webserver esterno, magari con php che si collega alla mikrotik e gli passa i comandi facendo i calcoli che ti servono.
      Usando le librerie php-mikrotik (anche se io preferisco le generiche SSH) puoi far fare alla mikrotik quello che vuoi, quando vuoi però ovviamente non puoi fare tutto da dentro la mikrotik!

  9. Ciao Paolo guida chiara e utilissima.
    Ho una domanda (non ho visto se hai trattato la cosa su un altro articolo ma sarebbe molto utile per molti): se volessi non avere il balancing ma semplicemente gestire il failower sulla wan2 come potrei fare?
    Quindi wan1 + wan2 ma il traffico viene dirottato alla wan2 solo in caso la wan1 non risponda.
    Ti ringrazio

    • Paolo Daniele

      Ciao Simone,
      puoi trovare la guida per il failover qua:
      https://www.paolodaniele.it/mikrotik-scripting-evitare-cadute-asterisk-causate-failover/

      E’ un po’ datata ma sostanzialmente fai un paio di script, che girano schedulati.
      Devi definire una rotta statica specificando un ip a tua scelta e forzandolo ad uscire dalla connessione primaria. Il primo script fa un check ping verso l’ip indicato, se perde pacchetti vuol dire che manca internet e disattiva la rotta primaria per permettere la secondaria. Il secondo script fa un silent check sulla rotta primaria, quando ritorna up, cambia la metrica distance e quindi la rimette come primaria. A presto!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *