Ho deciso di cambiare qualcosa nelle configurazione casalinga introducendo un po’ di virtualizzazione, un firewall standalone e un tunnel IPv6 (spero) finalmente stabile.
Seguendo le istruzioni di Fabrizio ho configurato il Linux casalingo di frontiera con KVM e una VM su cui gira la versione 2.1 di pfSense. Alla fine la configurazione è (per scelta di non complicarmi troppo la vita per ora) la più classica e semplice: WAN<->firewall<->LAN con i servizi pubblicati in LAN nattati (per IPv4) 1:1, senza DMZ, per ora.
Questo mi ha permesso di togliere i mezzo dal Linux host la gestione del tunnel e altri servizi legati alla rete (come il DHCP e radvd).
Quello che serve per lo scopo di questo articolo è un tunnel IPv6 gratuito con Hurricane Electric (un solo /64 è sufficiente), una connessione con IP fisso e un firewall pfSense. Negli esempi che seguono gli IP sono ovviamente inventati (per IPv4) o del blocco /32 utilizzabile per la documentazione (per IPv6).
Iniziamo con un tunnel di HE configurato in questo modo (click per ingrandire):
Queste sono le operazioni da compiere su pfSense.
Confermare che in System : Advanced : Networking
sia abilitato Allow IPv6
. Nelle nuove installazioni è abilitato per default, se il sistema è stato aggiornato da versioni precedenti potrebbe non essere abilitato.
Il tunnel richiede l’ICMP, in ingresso, quindi, se non è già abilitato, aggiungere una regola di questo tipo in Firewall : Rules
Creiamo quindi un’interfaccia GIF in Interfaces : (assign) : GIF
impostando i campi secondo queste corrispondenze tra i dati forniti da HE e i campi di pfSense:
- Server IPv4 address -> gif remote address
- Client IPv6 address -> gif tunnel local address
- Server IPv6 address -> gif tunnel remote address
La Parent Interface
è l’interfaccia verso Internet, verificare che l’ampiezza dell’indirizzo a fianco a gif tunnel remote address
sia 64, aggiungere una descrizione e salvare:
In Interfaces : (assign)
è possibile aggiungere un’interfaccia OPT
che sarà l’interfaccia GIF appena creata.
La nuova interfaccia deve essere configurata con queste corrispondenze:
- Client IPv6 address -> IPv6 address
- Server IPv6 address -> Gateway IPv6
Il gateway si aggiunge clickando su add a new one
, IPv6 configuration type
va impostato su Static IPv6
, verificare sempre che l’ampiezza di IPv6 address
sia 64 e salvare:
Andare in System : Routing : Gateways
e aggiungere il gateway IPv6 compilando i campi in questo modo:
Interface
: l’interfaccia appena creataAddress Family
:IPv6
Name
: assegnare un nomeGateway
: il campo ServerIPv6 address
di HEDefault gateway
: abilitato
Cliccando l’icona dell’ingranaggio con descrizione Status of items on this page
nella pagina dei gateway si può verificare se il gateway appena creato è online e procedere, quindi, con il resto della configurazione.
L’ultimo passo è assegnare un indirizzo IPv6 all’interfaccia LAN modificando la relativa pagina dell’interfaccia in questo modo:
IPv6 configuration type
:Static IPv6
IPv6 address
: prendere il valore diRouted /64
fornito da HE e scegliere un indirizzo, in questo caso2001:db8:beef:47:1
- Impostare come ampiezza
64
Non serve specificare il default gateway IPv6 perché viene preso quello impostato prima, che è stato flaggato come default.
A questo punto si può configurare un host della LAN con queste impostazioni IPv6:
- Indirizzo:
2001:db8:beef:47:2
- Default gateway:
2001:db8:beef:47:1
- DNS:
2001:470:20::2
(l’indirizzo anycast fornito da HE)
Per poter accedere a Internet da ogni IPv6 di 2001:db8:beef:47::/64
in Firewall : Rules : LAN
deve essere presente una regola come questa:
Per default le connessioni IPv6 in ingresso sono bloccate, quindi gli host della LAN non corrono il rischio di essere esposti a Internet sul loro indirizzo IPv6. Le regole che permettono ai pacchetti di entrare devono essere impostate in Firewall : Rules: HEV6
(o come avete chiamato l’interfaccia).
Una prova che si può fare è abilitare l’ICMP su IPv6 in ingresso e provare a pingare un host.
Dopo due giorni di operatività su un Athlon X2 4800+ con 8 Gb di RAM e disco SSD (senza disco partizionato LVM) una VM con pfSense da 1 Gb di RAM e 8 Gb di disco ha un impatto molto basso sul sistema; i dati sono confermati anche dai grafici del firewall. I vantaggi di una VM dedicata al firewall al posto del vecchio metodo con script IP[6]TABLES caricati sul Linux sono notevoli e ripagano ampiamente il lavoro di dover riconfigurare gli IP e i DNS.
Questa soluzione è di gran lunga più efficiente di quella proposta un anno fa.
Bentornati (o benvenuti) nella vera Internet in cui tutti gli host possono veramente parlare con tutti gli host perché ciascuno ha un indirizzo univoco.
4 risposte a “Tunnel IPv6 con HE e pfSense”
Confermo che pfSense è un gran bel pezzo di software… non solo per IPV6.
Ed è open-source.
Confermo pfSense è un bel software. Forse un po’ giovane sotto certi aspetti ma veramente potente. Lo uso oramai da 3 anni. Devo aggiornare alla 2.1 uscita da una quindicina di giorni dove hanno migliorato il supporto ad IPv6 e risolto un po’ di bug. http://blog.pfsense.org/?p=712
Per ora “in produzione” ce l’ho solo a casa. E’ veramente un prodotto notevole.
[…] Avevo installato OpenWRT Backfire tanto tempo fa, ma non avevo ancora avuto l’occasione di provarlo seriamente sul campo. Dopo alcuni disservizi della linea ADSL di casa ho riconfigurato la rete casalinga eliminando la VM con pfSense e semplificando un po’ la configurazione. Tuttavia questo mi aveva fatto perdere la possibilità di usare pfSense come gestore del tunnel IPv6. […]