sabato 6 ottobre 2012

Multi WAN con pfSense - Parte 3

Nei precedenti articoli abbiamo visto come configurare pfSense in versione multi wan, oggi vedremo come completare la nostra configurazione attivando il monitoring delle interfacce ed effettuando il tuning finale del firewall.
Abbiamo visto che il multi wan ha due principali funzionalità:
  1. Aumentare la larghezza di banda disponibile aggregando più connessioni;
  2. Migliorare la disponibilità della connessione ridondandola.
Nello scorso articolo abbiamo visto come realizzare il punto uno, ora vedremo come mettere in atto il punto due attivando il monitoring. Per poter gestire in modo corretto la fault tolerance, pfSense ha bisogno di un meccanismo per verificare se le connessioni wan sono attive e funzionanti. Il modo più semplice per indagare se una connessione è attiva, è effettuare un ping verso un host in internet che normalmente è raggiungibile e verificare l'esito del ping.
Per mettere in atto questo meccanismo occorre effettuare le seguenti operazioni:
  1. Trovare un host che ha un livello di uptime del 99,99%;
  2. Accertarsi di poter "pingare" l'host senza arrecare danni o disturbo al proprietario;
  3. Far in modo che il ping passi attraverso la connessione da monitorare.

La scelta del Monitor

Normalmente quando devo scegliere un host da pingare, la mia scelta è quasi sempre uno dei dns del provider oppure uno dei router del provider. Entrambi questi tipi di target devono garantire un elevato uptime e normalmente rispondono al ping.

Il targhet che proveremo ad utilizzare è il primo router dopo il nostro e per testarlo procediamo come segue:
  • Effettuiamo un tracert verso il dns del nostro provider: tracert dns.provider.it
  • Selezioniamo l'IP del primo router dopo il nostro e proviamo a verificare se risponde al ping: ping 8.7.6.5
  • Se il router non risponde possiamo passare al dnsdel provider, meglio scegliere il secondario, oppure un'altro router lungo il cammino dalla nostra rete al dns;
  • Se il router risponde possiamo procedere e determinare allo stesso modo il router della seconda connettività.
Identificati gli indirizzi IP dei nostri targhet dobbiamo procedere inserendoli nella nostra configurazione:
  • Accediamo a System > Routing;
  • Procediamo alla modifica del primo Gateway cliccando su Edit;
  • Nel campo Monitor IP inseriamo l'IP che abbiamo individuato;
  • Clicchiamo su Save;
  • Ripetiamo l'operazione per gli altri Gateways

Forzare il gateway attraverso cui raggiungere il monitor

Così come li abbiamo impostati, i nostri monitor non servono a molto perchè in caso di down di una delle connessioni, pfSense farebbe transitare il ping attraverso l'altro gateway ed il monitor verrebbe comunque raggiunto.
Per ovviare a questo problema dobbiamo necessariamente fare in modo che il nostro monitor sia raggiungibile solo ed esclusivamente dal gateway che volgiamo monitorare, per farlo è sufficiente aggiungere una regola di firewall sull'interfaccia LAN per ogni gateway da monitorare.

Clicchiamo su Firewall > Rules;
Aggiungiamo una nuova regola con le seguenti impostazioni

Action: Pass
Interface: Lan
Protocol: Any
Destination: IP Monitor
Gateway: GW_WAN

Ripetiamo l'operazione per tutti i gateway

A questo punto il nostro bilanciamento + fault tolerance è funzionante, per fare un test possiamo eseguire il comando ping www.pfsenseitaly.com -t e durante l'esecuzione provare a staccare alternativamente il cavo delle nostre connessioni wan. Il ping continuerà a funzionare modificando il percorso utilizzato per raggiungere la destinazione.

Tuning del sistema

Ora vedremo alcuni accorgimenti da adottare in questo tipo di configurazioni per non incappare in malfunzionamenti ed errori.

Come abbiamo visto, il meccanismo di ripartizione del traffico è round robin, questo fa si che pfSense possa decidere in modo indipendente da dove far transitare i nostri pacchetti. Sfortunatamente alcuni protocolli non gradiscono il continuo cambio di sorgente generando malfunzionamenti. Tipicamente tra i protocolli che non gradiscono il cambio di sorgente abbiamo: HTTPS, SMTPS, IMAPS, POP3S ecc...
Come avrete certamente notato sono tutti protocolli sicuri. Per ovviare a questo problema possiamo agire scegliendo a priori attraverso quale gateway vogliamo far passare un determinato protocollo ma facendo in modo che in caso di fault del gateway il protocollo venga veicolato attraverso l'altro gateway disponibile.
Accediamo al menù Firewall > Rules
Aggiungiamo una nuova regola con le seguenti impostazioni

Action: Pass
Interface: Lan
Protocol: Any
Destination: Any
Protocol: HTTPS
Gateway: WAN_FAULT

WAN_FAULT è il gruppo che avevamo creato nella parte 2 e che pone Wan come gateway primario e OPT1 come backup.

Alcuni provider consentono l'accesso ai propri server DNS, SMTP, IMAP, POP3 ecc... solo dalla propria rete, questo ci obbliga a creare delle regole di firewall che forzino il traffico diretto verso questi indirizzi attraverso il gateway della loro rete. Supponiamo che sulla Wan1 abbiamo collegato il Provider A che consente l'accesso ai server SMTP solo tramite la propria connettività, procediamo come segue:

Accediamo al menù Firewall > Rules
Aggiungiamo una nuova regola con le seguenti impostazioni

Action: Pass
Interface: Lan
Protocol: Any
Destination: Any
Protocol: SMTP
Gateway: GW_WAN

A questo punto la nostra configurazione è terminata, il nostro firewall ora può sfruttare a pieno più connessioni gestendo in autonomia il bilanciamento del carico ed eventuali guasti delle connessioni.
Posta un commento