Newsgroup: it.comp.os.linux.sys
Titolo: [CentOS 4.4] VPN debug (NETKEY + racoon) |D-I-S-P-E-R-A-T-O|

Ciao,
non riesco a far funzionare un tunnel ipsec verso un Cisco VPN 
Concentrator di un cliente, la configurazione dovrebbe essere corretta 
ma la fase 2 di IKE non va a buon fine, dall'altra parte il supporto è 
scarso e la persona che dovrebbe metterci mano in questi giorni non ci 
sarà (ovviamente non ho accesso alla macchina Cisco).
Non riesco a capire dove sia il problema e brancolo nel buio perchè il 
debug di racoon non funziona (direttiva log in racoon.conf), ho cercato 
anche di mettere -dddd come argomento di racoon in ifup-ipsec ma non 
funziona e con tcpdump non saprei cosa guardare esattamente :-(
Mi aiutate ?
Ho usato gli strumenti standard di RHEL/CentOS e quindi configurato 
un'interfaccia ifcfg-VPN-CLIENTE-1:
# VPN CLIENTE: rete 1
ONBOOT=no
TYPE=IPSEC
IKE_METHOD=PSK
SRCNET=
192.168.1.0/24
SRCGW=192.168.1.254
DSTNET=
10.1.1.0/24
DST=123.123.123.123
Con relativa chiave keys-VPN-CLIENTE-1:
# VPN CLIENTE: rete 1
IKE_PSK=secret
racoon.conf:
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
listen {
         isakmp 100.100.100.100 [500];
         isakmp_natt 100.100.100.100 [4500];
         #admin_sock disabled;
}
log debug2;
include "/etc/racoon/123.123.123.123.conf";
123.123.123.123.conf:
# IKE phase 1
remote 123.123.123.123{
         exchange_mode main;
         my_identifier address "100.100.100.100";
         verify_identifier on;
         lifetime time 8 hour;
         proposal_check obey;
         proposal {
                 encryption_algorithm 3des;
                 hash_algorithm md5;
                 authentication_method pre_shared_key;
                 dh_group 2;
         }
}
# IKE phase 2
sainfo address 
192.168.1.0/24
 any address 
10.1.1.0/24
 any{
         lifetime time 8 hour;
         encryption_algorithm 3des;
#        authentication_algorithm 3des,hmac_md5;
         authentication_algorithm hmac_md5;
         compression_algorithm deflate;
}
psk.txt
123.123.123.123  secret
Dopo un ifup VPN-CLIENTE-1:
[root@MIO_GW ~]# setkey -D
100.100.100.100 123.123.123.123
         esp mode=tunnel spi=0(0x00000000) reqid=0(0x00000000)
         seq=0x00000000 replay=0 flags=0x00000000 state=larval
         created: May  2 10:18:42 2007   current: May  2 10:18:56 2007
         diff: 14(s)     hard: 30(s)     soft: 0(s)
         last:                           hard: 0(s)      soft: 0(s)
         current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
         allocated: 0    hard: 0 soft: 0
         sadb_seq=2 pid=4067 refcnt=0
123.123.123.123 100.100.100.100
         ah mode=tunnel spi=123854854(0x0761e006) reqid=0(0x00000000)
         seq=0x00000000 replay=0 flags=0x00000000 state=larval
         created: May  2 10:18:43 2007   current: May  2 10:18:56 2007
         diff: 13(s)     hard: 30(s)     soft: 0(s)
         last:                           hard: 0(s)      soft: 0(s)
         current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
         allocated: 0    hard: 0 soft: 0
         sadb_seq=1 pid=4067 refcnt=0
123.123.123.123 100.100.100.100
         esp mode=tunnel spi=106244917(0x06552b35) reqid=0(0x00000000)
         seq=0x00000000 replay=0 flags=0x00000000 state=larval
         created: May  2 10:18:43 2007   current: May  2 10:18:56 2007
         diff: 13(s)     hard: 30(s)     soft: 0(s)
         last:                           hard: 0(s)      soft: 0(s)
         current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
         allocated: 0    hard: 0 soft: 0
         sadb_seq=0 pid=4067 refcnt=0
[root@MIO_GW ~]# setkey -DP
10.1.1.0/24[any]
 
192.168.1.0/24[any]
 any
         in ipsec
         esp/tunnel/123.123.123.123-100.100.100.100/require
         ah/tunnel/123.123.123.123-100.100.100.100/require
         created: May  2 10:15:34 2007  lastused:
         lifetime: 0(s) validtime: 0(s)
         spid=152 seq=6 pid=4068
         refcnt=1
192.168.1.0/24[any]
 
10.1.1.0/24[any]
 any
         out ipsec
         esp/tunnel/100.100.100.100-123.123.123.123/require
         ah/tunnel/100.100.100.100-123.123.123.123/require
         created: May  2 10:15:34 2007  lastused: May  2 10:19:14 2007
         lifetime: 0(s) validtime: 0(s)
         spid=145 seq=5 pid=4068
         refcnt=2
10.1.1.0/24[any]
 
192.168.1.0/24[any]
 any
         fwd ipsec
         esp/tunnel/123.123.123.123-100.100.100.100/require
         ah/tunnel/123.123.123.123-100.100.100.100/require
         created: May  2 10:15:34 2007  lastused:
         lifetime: 0(s) validtime: 0(s)
         spid=162 seq=4 pid=4068
         refcnt=1
0.0.0.0/0[any]
 
0.0.0.0/0[any]
 any
         in none
         created: May  2 10:15:35 2007  lastused: May  2 10:18:43 2007
         lifetime: 0(s) validtime: 0(s)
         spid=187 seq=3 pid=4068
         refcnt=1
0.0.0.0/0[any]
 
0.0.0.0/0[any]
 any
         in none
         created: May  2 10:15:35 2007  lastused:
         lifetime: 0(s) validtime: 0(s)
         spid=171 seq=2 pid=4068
         refcnt=1
0.0.0.0/0[any]
 
0.0.0.0/0[any]
 any
         out none
         created: May  2 10:15:35 2007  lastused: May  2 10:19:03 2007
         lifetime: 0(s) validtime: 0(s)
         spid=196 seq=1 pid=4068
         refcnt=1
0.0.0.0/0[any]
 
0.0.0.0/0[any]
 any
         out none
         created: May  2 10:15:35 2007  lastused:
         lifetime: 0(s) validtime: 0(s)
         spid=180 seq=0 pid=4068
         refcnt=1
/var/log/messages:
May  2 10:15:35 MIO_GW racoon: INFO: 100.100.100.100[4500] used as 
isakmp port (fd=8)
May  2 10:15:35 MIO_GW racoon: INFO: 100.100.100.100[4500] used for NAT-T
May  2 10:15:35 MIO_GW racoon: INFO: 100.100.100.100[500] used as isakmp 
port (fd=9)
May  2 10:15:40 MIO_GW racoon: INFO: IPsec-SA request for 
123.123.123.123 queued due to no phase1 found.
May  2 10:15:40 MIO_GW racoon: INFO: initiate new phase 1 negotiation: 
100.100.100.100[500]<=>123.123.123.123[500]
May  2 10:15:40 MIO_GW racoon: INFO: begin Identity Protection mode.
May  2 10:15:41 MIO_GW racoon: INFO: ISAKMP-SA established 
100.100.100.100[500]-123.123.123.123[500] 
spi:d618bf0909b415b2:16b93363c9e2d85c
May  2 10:15:42 MIO_GW racoon: INFO: initiate new phase 2 negotiation: 
100.100.100.100[0]<=>123.123.123.123[0]
May  2 10:15:42 MIO_GW racoon: INFO: purged ISAKMP-SA proto_id=ISAKMP 
spi=d618bf0909b415b2:16b93363c9e2d85c.
May  2 10:16:12 MIO_GW racoon: ERROR: 123.123.123.123 give up to get 
IPsec-SA due to time up to wait.
May  2 10:16:12 MIO_GW racoon: INFO: ISAKMP-SA deleted 
100.100.100.100[500]-123.123.123.123[500] 
spi:d618bf0909b415b2:16b93363c9e2d85c
May  2 10:16:12 MIO_GW racoon: INFO: IPsec-SA expired: AH/Tunnel 
123.123.123.123->100.100.100.100 spi=6116899(0x5d5623)
May  2 10:16:12 MIO_GW racoon: INFO: IPsec-SA expired: ESP/Tunnel 
123.123.123.123->100.100.100.100 spi=111888264(0x6ab4788)
May  2 10:16:41 MIO_GW racoon: INFO: IPsec-SA request for 
123.123.123.123 queued due to no phase1 found.
May  2 10:16:41 MIO_GW racoon: INFO: initiate new phase 1 negotiation: 
100.100.100.100[500]<=>123.123.123.123[500]
May  2 10:16:41 MIO_GW racoon: INFO: begin Identity Protection mode.
May  2 10:16:41 MIO_GW racoon: INFO: ISAKMP-SA established 
100.100.100.100[500]-123.123.123.123[500] 
spi:322b47d340e6ba8a:ca3a21f7fe08259b
May  2 10:16:42 MIO_GW racoon: INFO: initiate new phase 2 negotiation: 
100.100.100.100[0]<=>123.123.123.123[0]
May  2 10:16:42 MIO_GW racoon: INFO: purged ISAKMP-SA proto_id=ISAKMP 
spi=322b47d340e6ba8a:ca3a21f7fe08259b.
May  2 10:17:12 MIO_GW racoon: ERROR: 123.123.123.123 give up to get 
IPsec-SA due to time up to wait.
May  2 10:17:12 MIO_GW racoon: INFO: ISAKMP-SA deleted 
100.100.100.100[500]-123.123.123.123[500] 
spi:322b47d340e6ba8a:ca3a21f7fe08259b
May  2 10:17:12 MIO_GW racoon: INFO: IPsec-SA expired: AH/Tunnel 
123.123.123.123->100.100.100.100 spi=171721374(0xa3c429e)
May  2 10:17:12 MIO_GW racoon: INFO: IPsec-SA expired: ESP/Tunnel 
123.123.123.123->100.100.100.100 spi=30908634(0x1d7a0da)
Il routing sembra a posto ma è una cosa di cui eventualmente mi occuperò 
dopo aver fatto partire il tunnel.
Per fare una prova ho installato OpenSWAN e ha subito funzionato 
(peccato che non posso tassativamente installare software non compreso 
in RHEL/CentOS).
ipsec.conf:
config setup
         klipsdebug=none
         plutodebug=none
         uniqueids=yes
 
conn %default
         keyingtries=0
         disablearrivalcheck=no
         auth=esp
         authby=secret
         type=tunnel
         keyexchange=ike
         esp=3des-md5-96
         left=100.100.100.100
         leftsubnet=
192.168.1.0/24
         leftnexthop=100.100.100.101
         pfs=no
         ikelifetime=8h
 
# Disable OE
conn block
     auto=ignore
conn private
     auto=ignore
conn private-or-clear
     auto=ignore
conn clear-or-private
     auto=ignore
conn clear
     auto=ignore
conn packetdefault
     auto=ignore
conn VPN-CLIENTE-1
     auto=start
     right=123.123.123.123
     rightsubnet=
10.1.1.0/24

> Ho usato gli strumenti standard di RHEL/CentOS
Quello che hai fatto sembra tutto terribilmente giusto quindi, IMHO, gli 
script di governo per racoon/setkey sviluppati da RH sono assolutamente da 
evitare.
Lancia racoon da console (-f racoon.conf -F -ddd) e fai un bello script per 
settare correttamente le SP (le SA dovrebbe essere settate automaticamente 
da racoon) con setkey.
In questo modo avrai la possibilità di capire dove la fase 2 fallisce (non 
credo ci sia bisogno di arrivare a tcpdump).
Purtroppo dovrai sviluppare un tuo init-script per racoon perchè in RHEL 
viene lanciato da ifup-ipsec, purtroppo non hai pagato RHEL e non puoi 
chiedere assistenza a RH.
Questo non sembra però matchare con il vincolo di usare roba della distro, 
non saprei cosa dirti se non che è vergognoso che nel 2007 RHEL non abbia 
ancora una gestione delle VPN IPSec decente.
Ciao e buona fortuna.
 

 ancora una gestione delle VPN IPSec decente.
Uno script in più lo posso fare, devo documentare il tutto e cambiare il 
documento del progetto (è lavoro che faccio gratis in più, tutto qui).
Grazie