Image Image Image Image Image Image Image Image Image Image

Ubuntu Server | April 9, 2020

Scroll to top

Top

7 Comments

Loadbalancer Mikrotik – 2 Wan in Modalità PCC

Loadbalancer Mikrotik – 2 Wan in Modalità PCC

Mikrotik ha diverse modalità di LoadBalancing, in questo guida utilizzeremo il famoso “matcher” PCC (Per Connection Classifier).
Questo potente “matcher” permette di identificare i pacchetti appartenenti ad una “connessione” e di marchiarli in maniera diversa in base ad uno “scheduler”.
In questo modo possiamo realizzare non tanto un bilanciamento di pacchetti ma un bilanciamento di connessioni.

Tra i vari scenari che ho affrontato in questi anni, uno ricorrente è quello di dover aggregare connessioni che hanno lo stesso gateway su subnet identiche.
E’ il tipico scenario WISP in cui vengono messe più CPE collegate allo stesso PPPoE server.
Infatti in questa guida mostrerò come effettuare il LoadBalancing basandomi sull’interfaccia (in questo caso PPPOE) e non come le numerose guide consultabili su internet che si basano sulle network delle Wan di destinazione.

### Configurazione Ip Lan ###
/ip address
add address=192.168.98.1/24 interface=ether5 network=192.168.98.0
 
### Creiamo le interfacce PPPOE ###
/interface pppoe-client
add allow=pap,chap disabled=no interface=ether1 max-mru=1480 max-mtu=1480 mrru=1600 name=pppoe-wan1 password=frank user=telecom1
add allow=pap,chap disabled=no interface=ether2 max-mru=1480 max-mtu=1480 mrru=1600 name=pppoe-wan2 password=frank user=fastweb1
 
### Masquerade Connessioni PPPOE ###
/ip firewall nat
add action=masquerade chain=srcnat out-interface=pppoe-wan1
add action=masquerade chain=srcnat out-interface=pppoe-wan2
 
### Mangle LoadBalancing ###
/ip firewall mangle
add action=mark-connection chain=prerouting connection-state=new in-interface=pppoe-wan1 new-connection-mark=pppoe-wan1_conn
add action=mark-connection chain=prerouting connection-state=new in-interface=pppoe-wan2 new-connection-mark=pppoe-wan2_conn
add action=mark-routing chain=output connection-mark=pppoe-wan1_conn new-routing-mark=to_pppoe-wan1
add action=mark-routing chain=output connection-mark=pppoe-wan2_conn new-routing-mark=to_pppoe-wan2
add action=mark-connection chain=prerouting connection-state=new dst-address-type=!local in-interface=ether5 new-connection-mark=pppoe-wan1_conn per-connection-classifier=both-addresses-and-ports:2/0
add action=mark-connection chain=prerouting connection-state=new dst-address-type=!local in-interface=ether5 new-connection-mark=pppoe-wan2_conn per-connection-classifier=both-addresses-and-ports:2/1
add action=mark-routing chain=prerouting connection-mark=pppoe-wan1_conn in-interface=ether5 new-routing-mark=to_pppoe-wan1
add action=mark-routing chain=prerouting connection-mark=pppoe-wan2_conn in-interface=ether5 new-routing-mark=to_pppoe-wan2
 
### Mangle PortForwarding ###
/ip firewall mangle
add action=mark-connection chain=forward connection-state=new disabled=no in-interface=pppoe-wan1 new-connection-mark=port_forward_wan1 passthrough=no
add action=mark-connection chain=forward connection-state=new disabled=no in-interface=pppoe-wan2 new-connection-mark=port_forward_wan2 passthrough=no
add action=mark-routing chain=prerouting connection-mark=port_forward_wan1 disabled=no new-routing-mark=to_pppoe-wan1 passthrough=no in-interface=ether5
add action=mark-routing chain=prerouting connection-mark=port_forward_wan2 disabled=no new-routing-mark=to_pppoe-wan2 passthrough=no in-interface=ether5
 
### Rotte Default Gateway e Rounting Mark ###
/ip route
add check-gateway=ping comment="PCC Wan1" distance=1 gateway=pppoe-wan1 routing-mark=to_pppoe-wan1
add check-gateway=ping comment="PCC Wan2" distance=1 gateway=pppoe-wan2 routing-mark=to_pppoe-wan2
add comment=Wan1 distance=1 gateway=pppoe-wan1
add comment=Wan2 distance=2 gateway=pppoe-wan2
 
### Forzare la porta 72 ad uscire dalla Wan2 ###
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Force outport TCP72 to Wan2" connection-mark=no-mark dst-address-type=!local dst-port=72 in-interface=ether5 new-routing-mark=to_pppoe-wan2 passthrough=no protocol=tcp place-before=2
 
### Forzare una network ad uscire alla Wan2 ###
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Force Network to Wan2" connection-mark=no-mark dst-address=91.233.252.0/22 dst-address-type=!local in-interface=ether5 new-routing-mark=to_pppoe-wan2 passthrough=no place-before=3
 
### Modifica Ipsec ###
/ip route rule
add comment="Force for IPSEC to Wan2" dst-address=185.19.140.141/32 table=to_pppoe-wan2
 
### Escludere degli IP dal LoadBalancer Ex. La Web Management dei Router ADSL Bridge ###
/ip firewall address-list
add list=exempt-from-pcc address=192.168.1.1/32
add list=exempt-from-pcc address=192.168.2.1/32
/ip firewall mangle
add chain=prerouting dst-address-list=exempt-from-pcc action=accept place-before=1
 
### Failover su interfacce non PPPOE ###
8.8.8.8       Google-DNS  Wan1A
72.30.2.43    Yahoo       Wan1B
8.8.4.4       Google-DNS  Wan2A
199.59.148.82 Twitter     Wan2B
 
Creiamo un ip di destinazione "Virtuale" da utilizzare in ulteriori percorsi. 
Utilizziamo ad Ex. 172.16.1.1 e 172.16.2.2 come di seguito:
 
/ip route
add dst-address=172.16.1.1 gateway=8.8.4.4 scope=10 target-scope=10 check-gateway=ping
add dst-address=172.16.1.1 gateway=72.30.2.43 scope=10 target-scope=10 check-gateway=ping
add dst-address=172.16.2.2 gateway=8.8.8.8 scope=10 target-scope=10 check-gateway=ping
add dst-address=172.16.2.2 gateway=199.59.148.82 scope=10 target-scope=10 check-gateway=ping
 
Ed ora possiamo aggiungere i Default Gateway:
/ip route
add distance=1 gateway=172.16.1.1 routing-mark=to_pppoe-wan1
add distance=2 gateway=172.16.2.2 routing-mark=to_pppoe-wan1
add distance=1 gateway=172.16.2.2 routing-mark=to_pppoe-wan2
add distance=2 gateway=172.16.1.1 routing-mark=to_pppoe-wan2
 
### Un esempio di Script da Utilizzare in configurazioni dove vengono usate le interfacce dhcp-client ###
Nel dettaglio viene controllato il Gateway assegnato dal DHCP ed in caso lo cambia in maniera dinamica
 
:global newgw [/ip dhcp-client get [find interface="ether1" ] gateway ]
:global activegw [/ip route get [/ip route find comment="PCC Wan1"] gateway ]
:if ($newgw != $activegw) do={
/ip route set [find comment="PCC Wan1"] gateway=$newgw
/ip route set [find comment="PCC Wan1 routing gateway"] gateway=$newgw
}
:global newgw [/ip dhcp-client get [find interface="ether2" ] gateway ]
:global activegw [/ip route get [/ip route find comment="PCC Wan2"] gateway ]
:if ($newgw != $activegw) do={
/ip route set [find comment="PCC Wan2"] gateway=$newgw
/ip route set [find comment="PCC Wan2 routing gateway"] gateway=$newgw

Per concludere direi che ad oggi per aggregare due o più connessioni internet con MikroTik è davvero facile, ed è possibile avvalersi di potenti strumenti (firewall. policy routing) che RouterOS ci mette a disposizione.

Un Printscreen per dimostrare il funzionamento 😀

SpeedTest-Esempio1

Se vi sono stato di aiuto offritemi una birra 😀

Comments

  1. Carmine

    Ciao ,
    perchè sulle interfacce PPOE?
    io sto avendo problemi con la classica configurazione con le WAN per il traffico in entrata.
    Potresti darmi una mano?
    Grazie

    • Io uso il pppoe xche a me da fastidio il doppio nat, postami un tuo export config cosi vediamo cosa non va.

  2. massimo

    grazie ma perdona una domanda…
    sarebbe possibile usare al posto di connessioni pppoe con username+passw
    due connessioni a due router magari con stesso ip ?
    grazie

    • Certo si possono usare come Wan due ip quindi un doppio nat e se hai problemi ha cambiare uno dei due ip puoi anche usare lo stesso.

  3. Giuseppe

    Ciao,
    ti volevo chiedere se questo tipo di script tra i vari bilanciatori è il migliore a tuo avviso?
    il load balance di due o più linee va fatto su una routerboard/cloudrouter dedicato che faccia solo questo o può tranquillamente gestire anche clienti pppoe(es: MK RB3011UiAS-RM)?

    Grazie.

    • Esistono anche altre modalità supportate da Mikrotik, come ad esempio la NTH ma la versione PCC secondo me è la migliore.

  4. Ferruccio

    Ciao, ho trovato molto interessante e ben costruito questo bilanciamento.

    Avrei una domanda, se ho una pppoe 100 mbit e una xdsl 7 mbit quanti flussi sarebbero necessari per bilanciarla al meglio ?
    Nelle tue regole mi verrebbe buona la possibilità di veicolare l’accesso al server sulla linea xdsl che è l’unica con ip statico 2011UiAS

    Grazie

Submit a Comment

*

adidas yeezy 650 boost adidas yeezy boost 650 adidas yeezy 650 boost colorways adidas yeezy 650 350 2 0 boost yeezy boost 650 adidas yeezy boost 650 supreme x nike air uptempo release info adidas yeezy boost 650 v1 sample detailed look adidas yeezy boost 650 v1 sample adidas yeezy boost 650 v1 sample adidas yeezy boost 650 v1 adidas yeezy 650 boost adidas yeezy boost 650 adidas yeezy 650 boost colorways adidas yeezy 650 350 2 0 boost yeezy boost 650 adidas yeezy boost 650 supreme x nike air uptempo release info adidas yeezy boost 650 v1 sample detailed look adidas yeezy boost 650 v1 sample