PfSense to Cisco ASA
- 
 I am trying to get a site to site VPN going between a pfSense firewall and a Cisco ASA. It seems that phase 1 works, but phase 2 fails. Here is my error log from pfSense: Nov 8 15:11:00 racoon: ERROR: failed to pre-process packet. 
 Nov 8 15:11:00 racoon: ERROR: failed to get sainfo.
 Nov 8 15:11:00 racoon: ERROR: failed to get sainfo.
 Nov 8 15:11:00 racoon: WARNING: ignore INITIAL-CONTACT notification, because it is only accepted after phase1.
 Nov 8 15:11:00 racoon: []: INFO: respond new phase 2 negotiation: xxx.xxx.xxx.xxx[0]<=>yyy.yyy.yyy.yyy[0]Here is my error log from Cisco: 4 Nov 08 2007 10:06:17 113019 Group = xxx.xxx.xxx.xxx, Username = xxx.xxx.xxx.xxx, IP = xxx.xxx.xxx.xxx, Session disconnected. Session Type: IKE, Duration: 0h:00m:32s, Bytes xmt: 0, Bytes rcv: 0, Reason: Phase 2 Error 
 3 Nov 08 2007 10:06:17 713902 Group = xxx.xxx.xxx.xxx, IP = xxx.xxx.xxx.xxx, Removing peer from correlator table failed, no match!
 1 Nov 08 2007 10:06:17 713900 Group = xxx.xxx.xxx.xxx, IP = xxx.xxx.xxx.xxx, construct_ipsec_delete(): No SPI to identify Phase 2 SA!
 3 Nov 08 2007 10:06:17 713902 Group = xxx.xxx.xxx.xxx, IP = xxx.xxx.xxx.xxx, QM FSM error (P2 struct &0xd5b62858, mess id 0x9ddc5616)!Here is my pfSense config: - <ipsec><preferredoldsa>- <tunnel><interface>wan</interface>
- <local-subnet><address>192.168.13.0/24</address></local-subnet>
 <remote-subnet>192.168.0.0/24</remote-subnet>
 <remote-gateway>yyy.yyy.yyy.yyy</remote-gateway>
- <p1><mode>aggressive</mode>
- <myident><myaddress></myaddress></myident>
 <encryption-algorithm>3des</encryption-algorithm>
 <hash-algorithm>sha1</hash-algorithm>
 <dhgroup>2</dhgroup>
 <lifetime>28800</lifetime>
 <pre-shared-key>KEY</pre-shared-key>
 <private-key><cert><peercert><authentication_method>pre_shared_key</authentication_method></peercert></cert></private-key></p1>
- <p2><protocol>esp</protocol>
 <encryption-algorithm-option>des</encryption-algorithm-option>
 <encryption-algorithm-option>3des</encryption-algorithm-option>
 <hash-algorithm-option>hmac_sha1</hash-algorithm-option>
 <hash-algorithm-option>hmac_md5</hash-algorithm-option>
 <pfsgroup>0</pfsgroup>
 <lifetime>86400</lifetime></p2>
 <descr><pinghost>10</pinghost></descr></tunnel>
 <enable></enable></preferredoldsa></ipsec>
 Here is my Cisco config: : Saved 
 :
 ASA Version 8.0(2)
 !
 hostname fw
 domain-name pixia.com
 enable password LTFd9GMmqnbHlQ9Q encrypted
 names! Defines outside interface. Security-level must be set to a number lower than the inside Interface 
 ! Security-level is higher the closer you get to the network that is being protected
 interface Ethernet0/0
 nameif outside
 security-level 10
 ip address yyy.yyy.yyy.yyy 255.255.255.224! Defines inside interface. Security-level is set to a number higher than the outside interface 
 interface Ethernet0/1
 nameif inside
 security-level 90
 ip address 192.168.0.1 255.255.255.0! 
 interface Ethernet0/2
 shutdown
 no nameif
 no security-level
 no ip address! 
 interface Ethernet0/3
 shutdown
 no nameif
 no security-level
 no ip address! Defines management network 
 interface Management0/0
 nameif management
 security-level 100
 ip address 192.168.1.1 255.255.255.0
 management-only! 
 passwd 2KFQnbNIdI.2KYOU encrypted
 ftp mode passive
 clock timezone EST -5
 clock summer-time EDT recurring
 dns server-group DefaultDNS
 domain-name pixia.com
 object-group protocol TCPUDP
 protocol-object udp
 protocol-object tcp! Traffic sourced from local LAN with destination of remote site local LAN 
 access-list REMOTE_SITE_100_VPN extended permit ip 192.168.0.0 255.255.255.0 192.168.13.0 255.255.255.0! All the traffic which will be encapsulated by IPsec VPNs (persistent, or demand-dial) 
 access-list NO_NAT extended permit ip 192.168.0.0 255.255.255.0 192.168.0.0 255.255.255.0
 access-list NO_NAT extended permit ip 192.168.0.0 255.255.255.0 192.168.13.0 255.255.255.0! L2TP uses UDP port 1701 to establish a connection. An access-group later in this config references this ACL for allowing inbound L2TP session connections. 
 access-list INBOUND extended permit udp any yyy.yyy.yyy.yyy eq 1701! Allows a TCP or UDP connection to port 80 on the outside interface 
 access-list INBOUND extended permit object-group TCPUDP any host yyy.yyy.yyy.yyy eq wwwpager lines 24 
 logging enable
 logging asdm informational
 mtu management 1500
 mtu inside 1500
 mtu outside 1500! Pool of IP addresses for demand-dial VPN Clients 
 ip local pool CLIENT_VPN_IP_POOL 192.168.0.20-192.168.0.29icmp unreachable rate-limit 1 burst-size 1 ! Allow the inside interface to respond to all icmp requests 
 icmp permit any insideasdm image disk0:/asdm-602.bin 
 no asdm history enable
 arp timeout 14400! Do port-address-translation (PAT) for all traffic with source IP of 192.168.0.0/24 with destination off-link 
 global (outside) 101 interface
 nat (management) 101 0.0.0.0 0.0.0.0
 nat (inside) 101 192.168.0.0 255.255.255.0! Don’t NAT IPsec traffic 
 nat (inside) 0 access-list NO_NAT! Create a hole in the firewall mapping a specific port from the outside interface to a computer on the inside network 
 static (inside,outside) tcp interface www 192.168.0.121 www netmask 255.255.255.255! Allow L2TP establishment to the outside interface of the PIX 
 access-group INBOUND in interface outside! Route traffic to the gateway 
 route outside 0.0.0.0 0.0.0.0 216.132.116.97 1timeout xlate 3:00:00 
 timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
 timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
 timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
 timeout uauth 0:05:00 absolute
 dynamic-access-policy-record DfltAccessPolicy
 aaa authentication enable console LOCAL
 aaa authentication http console LOCAL
 aaa authentication serial console LOCAL
 aaa authentication ssh console LOCAL
 aaa authentication telnet console LOCAL! Don’t make VPN traffic subject to ACL filtering 
 sysopt connection permit-vpn! enable server, enable server management on both the inside and management networks 
 http server enable
 http 192.168.0.0 255.255.255.0 inside
 http 192.168.1.0 255.255.255.0 managementno snmp-server location 
 no snmp-server contact
 snmp-server enable traps snmp authentication linkup linkdown coldstart! Transforms for supporting both demand-dial and persistent (transport-mode & tunnel-mode) IPsec VPNs 
 ! 3DES is the common cypher supported by both XP and Vista.
 crypto ipsec transform-set ESP-AES-256-MD5 esp-aes-256 esp-md5-hmac
 crypto ipsec transform-set ESP-DES-SHA esp-des esp-sha-hmac
 crypto ipsec transform-set ESP-DES-MD5 esp-des esp-md5-hmac
 crypto ipsec transform-set ESP-AES-192-MD5 esp-aes-192 esp-md5-hmac
 crypto ipsec transform-set ESP-3DES-MD5 esp-3des esp-md5-hmac
 crypto ipsec transform-set ESP-AES-256-SHA esp-aes-256 esp-sha-hmac
 crypto ipsec transform-set ESP-AES-128-SHA esp-aes esp-sha-hmac
 crypto ipsec transform-set ESP-AES-192-SHA esp-aes-192 esp-sha-hmac
 crypto ipsec transform-set ESP-AES-128-MD5 esp-aes esp-md5-hmac
 crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac
 crypto ipsec transform-set L2TP-IPSEC esp-3des esp-md5-hmac
 crypto ipsec transform-set L2TP-IPSEC mode transport
 crypto ipsec transform-set IPSEC-AES esp-aes-256 esp-sha-hmac! crypto dynamic-map for demand-dial vpn connections: L2TP, Cisco 
 ! L2TP demand-dial using IPsec transport-mode, while Cisco VPN software (and hardware clients) uses IPsec tunnel-mode, hence the dynamic map (which is used for all demand-dial VPN clients) must include both.
 crypto dynamic-map DYN_MAP 10 set transform-set L2TP-IPSEC IPSEC-AES ESP-3DES-SHA ESP-3DES-MD5 ESP-DES-SHA ESP-DES-MD5
 crypto dynamic-map DYN_MAP 10 set security-association lifetime seconds 86400! Only a single crypto map can be applied to an interface. 
 ! This shows how a single crypto map can handle multiple persistent and demand-dial VPNs concurrently.
 ! 10 is for persistent site-to-site tunnels
 ! 30 is for demand-dial connections
 ! Any number of persistent connection maps can be added here (e.g. site-to-site); however, only a single dynamic map can be applied to support demand-dial clients.
 crypto map outside_map 65535 ipsec-isakmp dynamic outside_dyn_map
 crypto map OUTSIDE_MAP 10 match address REMOTE_SITE_100_VPN
 crypto map OUTSIDE_MAP 10 set connection-type originate-only
 crypto map OUTSIDE_MAP 10 set peer xxx.xxx.xxx.xxxx
 crypto map OUTSIDE_MAP 10 set transform-set ESP-3DES-SHA ESP-3DES-MD5 ESP-DES-SHA ESP-DES-MD5
 crypto map OUTSIDE_MAP 10 set security-association lifetime seconds 86400
 crypto map OUTSIDE_MAP 10 set phase1-mode aggressive
 crypto map OUTSIDE_MAP 30 ipsec-isakmp dynamic DYN_MAP
 crypto map OUTSIDE_MAP interface outsidecrypto isakmp identity address 
 crypto isakmp enable outside
 crypto isakmp nat-transversal! The cypher/hash pair the initiating client requests has to match one of these pairs. Each will be tried in order until a match is found 
 crypto isakmp policy 5
 authentication pre-share
 encryption aes-256
 hash sha
 group 2
 lifetime 28800
 crypto isakmp policy 10
 authentication pre-share
 encryption 3des
 hash sha
 group 2
 lifetime 28800
 crypto isakmp policy 15
 authentication pre-share
 encryption 3des
 hash md5
 group 2
 lifetime 28800client-update enable 
 no vpn-addr-assign aaa
 no vpn-addr-assign dhcp
 telnet 192.168.0.0 255.255.255.0 inside
 telnet timeout 5
 ssh 192.168.0.0 255.255.255.0 inside
 ssh timeout 60
 ssh version 2
 console timeout 0
 dhcpd address 192.168.1.2-192.168.1.254 management
 dhcpd enable management
 !
 threat-detection basic-threat
 threat-detection statistics access-list
 !
 class-map inspection_default
 match default-inspection-traffic
 !
 !
 policy-map type inspect dns preset_dns_map
 parameters
 message-length maximum 512
 policy-map global_policy
 class inspection_default
 inspect dns preset_dns_map
 inspect ftp
 inspect h323 h225
 inspect h323 ras
 inspect rsh
 inspect rtsp
 inspect esmtp
 inspect sqlnet
 inspect skinny
 inspect sunrpc
 inspect xdmcp
 inspect sip
 inspect netbios
 inspect tftp
 !
 service-policy global_policy global
 ntp server 192.168.0.17 source inside prefer
 group-policy DfltGrpPolicy attributes
 dns-server value 192.168.0.2
 vpn-tunnel-protocol IPSec l2tp-ipsec
 default-domain value pixia.com
 address-pools value CLIENT_VPN_IP_POOL
 group-policy CISCO_CLIENT_VPN_POLICY internal
 group-policy CISCO_CLIENT_VPN_POLICY attributes
 dns-server value 192.168.0.2
 vpn-idle-timeout 30
 vpn-tunnel-protocol IPSec
 default-domain value pixia.com
 address-pools value CLIENT_VPN_IP_POOLusername pakulas password nx4VQfcMfAOEe5iQdGi8cQ== nt-encrypted privilege 15 
 username admin password VfjI1SIZacDuk19Y encrypted privilege 15
 username wangj password axeYWHYjyZ57TCR16KVVqw== nt-encrypted
 username user password V9WDqkbVcVAqrUu3rqCccA== nt-encrypted
 username thakkarr password RBdmPmK/OV4QMS0Qede1fA== nt-encrypted
 username courtneys password G9vyte4t9TOhggD8L/2h4Q== nt-encrypted privilege 15
 username soods password BI5t1P4KsWB6r/wIOyPq9w== nt-encrypted
 username jensenk password oYo1okpfD/2N1fmAwEadgA== nt-encrypted! Tunnel-group for servicing demand-dial L2TP clients 
 ! User-specified groups are not supported for L2TP, only DefaultRAGroup
 tunnel-group DefaultRAGroup general-attributes
 address-pool CLIENT_VPN_IP_POOL
 authorization-server-group LOCAL
 authorization-required
 tunnel-group DefaultRAGroup ipsec-attributes
 pre-shared-key *
 tunnel-group DefaultRAGroup ppp-attributes
 no authentication chap
 authentication ms-chap-v2
 tunnel-group DefaultWEBVPNGroup ppp-attributes
 no authentication chap
 no authentication ms-chap-v1! Tunnel-group for supporting Cisco client software and hardware VPN clients 
 tunnel-group CISCO_CLIENT_VPN_GROUP type remote-access
 tunnel-group CISCO_CLIENT_VPN_GROUP general-attributes
 address-pool CLIENT_VPN_IP_POOL
 default-group-policy CISCO_CLIENT_VPN_POLICY
 tunnel-group CISCO_CLIENT_VPN_GROUP ipsec-attributes
 pre-shared-key *
 tunnel-group CISCO_CLIENT_VPN_GROUP ppp-attributes
 authentication ms-chap-v2! For persistent connections, the tunnel-group name has to be the same as the peer IP address 
 tunnel-group xxx.xxx.xxx.xxxx type ipsec-l2l
 tunnel-group xxx.xxx.xxx.xxxx ipsec-attributes
 pre-shared-key *prompt hostname context 
 Cryptochecksum:7422f35c0785c96cc89efedd3ccede09
 : end
- 
 Let's try to narrow down a few things. What ASA Model and OS version are you running? I would suggest limiting the protocol/encryption/hash to ESP-3DES-MD5 and disable or disallow all the others. When phase 1 completes on the Cisco side and you try to ping through from the Cisco LAN to the pfSense LAN, does anything change (TTL?, RTT?)? I will lab this up with one of my work ASA's to my home pfSense to offer some additional assistance.