Infohub‎ > ‎Articles‎ > ‎

Installare pfSense su Hyper-V - HowTo


24 Aprile 2014


Ci sono due cose che mi piacciono e che funzionano bene: Microsoft Hyper-V e pfSense. Se sei finito su questa pagina probabilmente sai già di cosa parlo in entrambi i casi. Molto spesso il problema è riuscire a far funzionare in maniera ottimale le cose, almeno in attesa che arrivi il supporto ufficiale tanto atteso e che consenta di installare pfSense su Hyper-V direttamente dalla ISO che viene distribuita, esattamente come succede quando lo si installa in una VM fatta con VMWare ESX. La buona notizia è che si può farlo, la cattiva notizia è che ci vuole un po' di smanettamento. Siccome tutta la documentazione che ho trovato è in inglese, ho pensato di scrivere un howto che spieghi passo passo come fare funzionare il tutto.

Molte grazie all'utente zootie per il suo lavoro e le istruzioni base in inglese (https://forum.pfsense.org/index.php?topic=73258.0)

Gli ingredienti:

-1- una installazione di Hyper-V. Nel mio caso utilizzo Hyper-V Server 3.0.

-2- la ISO di installazione di pfSense a 64 Bit. Si prende qui selezionando AMD64 e Live CD W/installer.

-3- i drivers compilati da zootie che si trovano qui (Attenzione: devi essere loggato sul forum di pfSense per vedere i download).

-3.1- Piano B: se non riesci a scaricare i drivers dal forum, prova qui (è una copia al 6 maggio 2014 che potrebbe non essere aggiornata come quella del forum).

Innanzi tutto dobbiamo installare la macchina "base", generation 1, con due legacy network adapters. All'inizio sono necessari perchè almeno la rete venga vista. Se non avete esigenze particolari, 4Gb di disco e 384 Mb di ram sono sufficienti. Rimuoviamo il synthetic adapter aggiunto di default e togliamo la time synchronization negli integration services.


Procedete accettando i default ed eseguendo un Quick/Easy Install.

ed aspettate i due minuti necessari. Selezionate il kernel standard

e procedete ad un riavvio. Nel frattempo sganciate la ISO così che l'installer non riparta. Al riavvio diciamo che NON vogliamo configurare le VLAN ed assegnamo de0 alla WAN e de1 alla LAN. L'avvio richiederà un po' di tempo nel tentativo di configurare la WAN che non è connessa.
Se vi danno fastidio tutti i messaggi che indicano le schede di rete non connesse, è sufficiente creare un nuovo virtual switch "tappo" di tipo private e collegarci la/le schede.
oppure potete connetterle alle reti effettive (attenzione che pfSense ha preassegnato 192.168.1.1 come indirizzo ed il DHCP server è acceso). In ogni caso i legacy adapter andranno poi rimossi.

Adesso facciamo un reboot della macchina in single user mode, scegliendo [5] nel menu iniziale.

Premiamo invio quando ci viene chiesta la shell da usare (/bin/sh) e ci ritroviamo al prompt. Diamo un'occhiata al file /etc/fstab che dovrebbe essere come quello indicato:


Dobbiamo adesso cambiare il modo di montare i volumi, in modo che vengano riconosciuti indipendentemente dal disco dove sono collegati (cambierà rispetto alla situazione attuale).
Se non avete cambiato nulla rispetto ai default, digitate i seguenti comandi
/sbin/glabel label rootfs /dev/ad0s1a
/sbin/glabel label swap /dev/ad0s1b
Daremo delle atichette ai dischi così che verranno riconosciuti per nome (rootfs) e non per posizione (ad0s1a).
Quindi per modificare l'fstab riavviamo la macchina con /sbin/reboot, entrare in una shell (opzione 8) ed editare il file /etc/fstab digitando
ee /etc/fstab
Effettuare le modifiche evidenziate sotto, sostituendo il nome del disco con la label.
ed uscire salvando (ESC-a-a).
Adesso dobbiamo copiare i files scaricati al punto -3- sulla macchina. Se, come probabile, l'IP che abbiamo configurato sulla scheda LAN non pinga, è necessario resettare l'interfaccia facendo
ifconfig de1 down
ifconfig de1 up
se chiaramente abbiamo usato de1 per la LAN come scritto sopra.
Per copiare i files possiamo usare WinSCP o qualsiasi altro tool equivalente. Per farlo prima è necessario abilitare l'SSH su pfSense nel menu System->Advanced
 e premere Save. Ricordatevi di fare login usando root e non admin, con la password di default (pfsense).

Quello che dobbiamo fare è copiare i moduli del kernel, ovvero i files .ko dalla directory kernel_modules_ko contenuta nello zip (punto -3-) in /boot/modules.
 (click per ingrandire).
Ora dobbiamo rendere eseguibili quei files digitando:
chmod +x /boot/modules/hv_*.ko
Controlliamo che tutto sia a posto con ls -la /boot/modules.

Adesso andiamo ad abilitare il loro caricamento con ee /boot/loader.conf
Aggiungiamo le righe

hv_vmbus_load="YES"
hv_utils_load="YES"
hv_netvsc_load="YES"
hv_storvsc_load="YES"
hv_ata_pci_disengage_load="YES"

in fondo al file 
 e usciamo salvando (ESC-a-a).

Ci siamo! Ora spegnamo la VM con uno shutdown -p now.
Togliamo i legacy adapters ed aggiungiamone 2 sintetici, che si chiamano semplicemente "Network Adapter".

All'avvio pfSense non trova più le vecchie interfacce e ci chiede ri riconfigurarle. Rispondiamo No alle VLAN e assegnamo hn0 alla WAN e hn1 alla LAN. Già i nomi ci indicano che i moduli caricati hanno fatto il loro dovere!
 rispondiamo n
e quindi
 rispondiamo y.

Tutto finito, alla fine era semplice no?

Come vediamo in Hyper-V console le schede vengono viste correttamente, seppur con una versione del driver non del tutto aggiornata (io uso Hyper-V 3.0).
e anche l'heartbeat è presente

Adesso possiamo toglierci la soddisfazione di spegnere la macchina usando la funzione di Shutdown di Hyper-V

Al momento non esiste la possibilità di distribuire una VM già pronta per questioni legali. Leggete il thread linkato all'inizio per rendervi conto delle difficoltà che ha trovato chi ci ha provato...

Spero che la guida sia stata utile. Per qualsiasi commento, usate la contact form.
Alla prossima