Tipicamente nell'ultimo periodo usiamo sempre KVM come ambiente di virtualizzazione, e come spesso capita installiamo il firewall (pfSense) come macchina virtuale. Purtroppo pfSense, o meglio FreeBSD in generale, ha problemi con la rete in ambienti virtualizzati.

La situazione tipica che si ha installando pfSense su XenServer è che:

  • la rete funziona perfettamente per tutti i client sulla LAN, incluse le connessioni locali verso le VM e dai client verso internet;
  • la macchina XenServer e le altre macchine virtuali riescono a fare ping verso l'esterno, ma praticamente tutte le connessioni TCP non funzionano, sia in ingresso che in uscita.

Essendo un bug conosciuto, e di lungo corso, negli ambienti KVM che usano i driver virtualizzati di pfSense è sufficiente selezionare la spunta Disable hardware checksum offload nelle impostazioni avanzate di rete di pfSense. 

Quindi  la soluzione è di disabilitare il checksum hardware, ma siccome in XenServer pfSense non usa i driver virtualizzati la modifica va fatta sulla configurazione dell'interfaccia di rete sull'host.

Colleghiamoci in ssh alla macchina XenServer, ed elenchiamo le interfacce di rete della VM di pfSense con questo comando (sostituendo VM_NAME con il nome della VM del firewall):

xe vm-vif-list vm=VM_NAME

Otterremo un output simile a questo:

uuid ( RO) : a59019a2-0278-fa51-982c-eb7cab437147
vm-name-label ( RO): pfSense
device ( RO): 0
MAC ( RO): ca:44:7f:6a:ad:6b
network-uuid ( RO): 84bbfaa4-1872-2595-0996-40fa61421daf
network-name-label ( RO): Pool-wide network associated with eth0

uuid ( RO) : 6f04ec4f-50fa-063e-ed7a-b45216fe8b61
vm-name-label ( RO): pfSense
device ( RO): 1
MAC ( RO): 9e:70:64:7e:46:1e
network-uuid ( RO): 7e08ae46-86ed-8c90-7e5c-54eb7a35b3cc
network-name-label ( RO): Pool-wide network associated with eth1

Identifichiamo l'interfaccia LAN di pfSense (tipicamente eth0) e ricordiamoci il campo uuid. Nell'esempio sopra è quello che inizia con a5901. A questo punto eseguiamo questi due comandi (sostituendo VIFUUID con l'uuid ottenuto sopra):

xe vif-param-set uuid=VIFUUID other-config:ethtool-tx="off"
xe vif-param-set uuid=VIFUUID other-config:ethtool-rx="off"

A questo punto occorre spegnere ed accendere la VM di pfSense. È importante fare questa procedura, perché un riavvio non è sufficiente!

Fatto! Ora la rete dovrebbe funzionare correttamente.

We use cookies to improve our website and your experience when using it. Cookies used for the essential operation of this site have already been set. To find out more about the cookies we use and how to delete them, see our privacy policy.

  I accept cookies from this site.
EU Cookie Directive Module Information