Tunnel IPv6 con HE e pfSense

pfSenseHo 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):

Tunnel di HE

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

Allow ICMP

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:

Interfaccia GIF

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:

Interfaccia

Andare in System : Routing : Gateways e aggiungere il gateway IPv6 compilando i campi in questo modo:

  • Interface: l’interfaccia appena creata
  • Address Family: IPv6
  • Name: assegnare un nome
  • Gateway: il campo Server IPv6 address di HE
  • Default gateway: abilitato

Gateway

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 di Routed /64 fornito da HE e scegliere un indirizzo, in questo caso 2001: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.
Configurazione LAN

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:

Regola LAN

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.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

4 pensieri riguardo “Tunnel IPv6 con HE e pfSense”

  1. 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

Spazio per un commento