vpn, ipsec, racoon

Giulio Ferro auryn a zirakzigil.org
Lun 20 Set 2004 10:08:04 CEST


Ho il seguente scenario:
2 macchine fb 5.3beta4 compilate come firewall di rete privata 
(IPFIREWALL, IPFIREWALL_VERBOSE,  IPDIVERT) e come
potenziali nodi di vpn crittata (device gif, IPSEC, IPSEC_ESP).  Le due 
macchine hanno rispettivamente indirizzo pubblico I1, I2 e dietro
di esse ci sono due reti private /24 su un'altra scheda di rete. I loro 
indirizzi sulle reti private sono rispettivamente P1, P2.
L'intenzione è quella di far comunicare tra loro le due reti private, in 
modo che pingando P2 sulla macchina 1 risponda, e
viceversa sulla macchina 2.
Ho seguito quanto scritto sull'handbook, ho configurato l'interfaccia 
gif con gli indirizzi giusti, impostato le rotte statiche, e come
risultato funziona tutto, riesco cioè a fare comunicare le due sottoreti 
tramite pacchetti ip incapsulati scambiati tra le due macchine.

Il passo successivo è ovviamente quello di crittare questi pacchetti 
incapsulati, e qui ho dei problemi.

Ho installato racoon dai port, ho copiato i file psk.txt e racoon.conf 
dai rispettivi dist, ho messo in psk.txt solo la riga:
I2   chiave
sulla macchina 1 e
I1   chiave
sulla macchina 2.
Ho dato infine permesso 600 a questo file. Non ho toccato il racoon.conf.
Ho messo ipsec_enable="yes" e ipsec_file="/etc/ipsec.conf" in rc.conf e 
in /etc/ipsec.conf

spdadd I1/32 I2/32 ipencap -P out ipsec esp/tunnel/I1-I2/require;
spdadd I2/32 I1/32 ipencap -P in ipsec esp/tunnel/I2-I1/require;

sulla macchina 1 e

spdadd I2/32 I1/32 ipencap -P out ipsec esp/tunnel/I2-I1/require;
spdadd I1/32 I2/32 ipencap -P in ipsec esp/tunnel/I1-I1/require;

sulla macchina 2.

Per sicurezza imposto sui 2 firewalll un bel
allow all from any to any
così da eliminare una variabile del problema...

Faccio ripartire e provo sulla macchina 1 a pingare P2. Non funziona. 
Stessa cosa provando a pingare P1 dalla macchina 2.

Mi metto su una macchina router-firewall in mezzo (fa passare tutti i 
pacchetti tra le due macchine)e faccio un tcpdump
dei pacchetti tra le due macchine e trovo che, quando comincio
il ping, le due macchine si scambiano pacchett1 isakmp, prima di fase 1 
e poi di fase 2, ma poi tutto si interrompe.  E poi
ricomincia, fase1, fase 2 etc...

Imposto i log a debug in racoon.conf e vedo che, all'inizio del ping,  
cominciano tutta una serie di attività che sembrano andare a
buon fine, ma poi finisce con un "an undead schedule has been deleted".

Avete idea se ho sbagliato o dimenticato qualcosa?

Grazie e ciao.




Maggiori informazioni sulla lista esperti