Dear MK,

There is a problem with the IPSec implementation on Vista and W2K8. Microsoft seems to have a patch. Please, see these articles:
* http://support.microsoft.com/kb/957624/en-us
* http://support.microsoft.com/kb/946887/en-us
* http://technet.microsoft.com/en-us/library/bb878090.aspx

If you try to connect to your VPN using XP or W2K clients it works fine.

King regards,
Marcello Cruz

----- Original Message ----- From: "MK" <pub...@kubikcz.net>
To: <misc@openbsd.org>
Sent: Thursday, April 23, 2009 12:49 PM
Subject: IPsec Windows Vista client - OpenBSD, NAT-T problem


Hello,

I'm trying to learn how to setup IPsec connection, therefore I stared with quite simple settings. I'd like to allow clients from outside to connect my OpenBSD server through encrypted channel, however I came across some difficulties I'm not able to solve.

scheme of my environment is following:

client (Windows Vista) ----- NAT (mikrotik) ------- internet ------- (public IP) OpenBSD

I decided to use PSK to simplify my settings:


my ipsec.conf file contains:

ike passive from any to any \
main auth hmac-sha1 enc aes group modp1024 \
quick auth hmac-sha1 enc aes psk my_key

From my understanding this should allow all clients to connect my server via encrypted channel. I started isakmpd and setup a client for Windows Vista - for beginning I used TheGreenBow IPSec VPN Client.

After a few minutes I had working environment so I deiced to use native Windows Vista IPsec client and here is my problem:

Vista client is not able to communicate with my OpenBSD server for some reason I do not see. I was checking settings of the client and did not find any problem, then I just tried to shutdown isakmpd and to start it again with -T flag
without NAT-T support.

Immediately after this change, Vista client successfully connected to OpenBSD and communication was encrypted and working. If I start isakmpd again with NAT-T support then Vista can not negotiate IPsec with OpenBSD.

I think NAT-T is important for me, because if I understand it well, it should allow IPsec communication for more clients behind same NAT simultaneously, however from some reason if I allow NAT-T support in OpenBSD, Vista can not reach the server anymore. TheGreenBow IPSec VPN Client works just fine even with NAT-T.

I'm out of ideas and I'd like to kindly ask you for any help.
I started isakmpd with -L switch to provide some additional information for both clients (working GreenBow and Vista client)

Best regards MK

Vista- NAT-T not working:

0:25:01.013804 84.42.224.147.500 > 217.197.149.135.500: [udp sum ok] isakmp v1.0 exchange ID_PROT
       cookie: c8434925c7d015f1->0000000000000000 msgid: 00000000 len: 232
       payload: SA len: 60 DOI: 1(IPSEC) situation: IDENTITY_ONLY
payload: PROPOSAL len: 48 proposal: 1 proto: ISAKMP spisz: 0 xforms: 1
               payload: TRANSFORM len: 40
                   transform: 1 ID: ISAKMP
                       attribute ENCRYPTION_ALGORITHM = AES_CBC
                       attribute KEY_LENGTH = 128
                       attribute HASH_ALGORITHM = SHA
                       attribute GROUP_DESCRIPTION = MODP_1024
                       attribute AUTHENTICATION_METHOD = PRE_SHARED
                       attribute LIFE_TYPE = SECONDS
                       attribute LIFE_DURATION = 00000e10
       payload: VENDOR len: 24
       payload: VENDOR len: 20 (supports NAT-T, RFC 3947)
payload: VENDOR len: 20 (supports v2 NAT-T, draft-ietf-ipsec-nat-t-ike-02)
       payload: VENDOR len: 20
       payload: VENDOR len: 20
       payload: VENDOR len: 20
       payload: VENDOR len: 20 [ttl 0] (id 1, len 260)
00:25:01.014657 217.197.149.135.500 > 84.42.224.147.500: [udp sum ok] isakmp v1.0 exchange ID_PROT
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 00000000 len: 188
       payload: SA len: 60 DOI: 1(IPSEC) situation: IDENTITY_ONLY
payload: PROPOSAL len: 48 proposal: 1 proto: ISAKMP spisz: 0 xforms: 1
               payload: TRANSFORM len: 40
                   transform: 1 ID: ISAKMP
                       attribute ENCRYPTION_ALGORITHM = AES_CBC
                       attribute KEY_LENGTH = 128
                       attribute HASH_ALGORITHM = SHA
                       attribute GROUP_DESCRIPTION = MODP_1024
                       attribute AUTHENTICATION_METHOD = PRE_SHARED
                       attribute LIFE_TYPE = SECONDS
                       attribute LIFE_DURATION = 00000e10
       payload: VENDOR len: 20 (supports OpenBSD-4.0)
payload: VENDOR len: 20 (supports v2 NAT-T, draft-ietf-ipsec-nat-t-ike-02) payload: VENDOR len: 20 (supports v3 NAT-T, draft-ietf-ipsec-nat-t-ike-03)
       payload: VENDOR len: 20 (supports NAT-T, RFC 3947)
       payload: VENDOR len: 20 (supports DPD v1.0) [ttl 0] (id 1, len 216)
00:25:01.078015 84.42.224.147.500 > 217.197.149.135.500: [udp sum ok] isakmp v1.0 exchange ID_PROT
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 00000000 len: 260
       payload: KEY_EXCH len: 132
       payload: NONCE len: 52
       payload: NAT-D len: 24
       payload: NAT-D len: 24 [ttl 0] (id 1, len 288)
00:25:01.113648 217.197.149.135.4500 > 84.42.224.147.4500: [udp sum ok] udpencap: isakmp v1.0 exchange ID_PROT
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 00000000 len: 260
       payload: KEY_EXCH len: 132
       payload: NONCE len: 52
       payload: NAT-D len: 24
       payload: NAT-D len: 24 [ttl 0] (id 1, len 292)
00:25:01.175077 84.42.224.147.4500 > 217.197.149.135.4500: [bad udp cksum 9a88!] udpencap: isakmp v1.0 exchange ID_PROT
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 00000000 len: 76
       payload: ID len: 12 type: IPV4_ADDR = 10.0.0.100
       payload: HASH len: 24 [ttl 0] (id 1, len 108)
00:25:01.175460 217.197.149.135.4500 > 84.42.224.147.4500: [bad udp cksum 6873!] udpencap: isakmp v1.0 exchange ID_PROT
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 00000000 len: 92
       payload: ID len: 12 type: IPV4_ADDR = 217.197.149.135
       payload: HASH len: 24
       payload: NOTIFICATION len: 28
notification: INITIAL CONTACT (c8434925c7d015f1->fbb7ca86fb1f0a6b) [ttl 0] (id 1, len 124) 00:25:01.263543 84.42.224.147.4500 > 217.197.149.135.500: [bad udp cksum 23a5!] udpencap: isakmp v1.0 exchange QUICK_MODE
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 00000001 len: 204
       payload: HASH len: 24
       payload: SA len: 68 DOI: 1(IPSEC) situation: IDENTITY_ONLY
payload: PROPOSAL len: 56 proposal: 1 proto: IPSEC_ESP spisz: 4 xforms: 1 SPI: 0xc939133d
               payload: TRANSFORM len: 44
                   transform: 1 ID: AES
                       attribute ENCAPSULATION_MODE = UDP_ENCAP_TUNNEL
                       attribute KEY_LENGTH = 128
                       attribute AUTHENTICATION_ALGORITHM = HMAC_SHA
                       attribute LIFE_TYPE = SECONDS
                       attribute LIFE_DURATION = 00000e10
                       attribute LIFE_TYPE = KILOBYTES
                       attribute LIFE_DURATION = 000186a0
       payload: NONCE len: 52
       payload: ID len: 12 type: IPV4_ADDR = 10.0.0.100
payload: ID len: 12 type: IPV4_ADDR = 217.197.149.135 [ttl 0] (id 1, len 236) 00:25:01.264699 217.197.149.135.4500 > 84.42.224.147.4500: [udp sum ok] udpencap: isakmp v1.0 exchange QUICK_MODE
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 00000001 len: 196
       payload: HASH len: 24
       payload: SA len: 68 DOI: 1(IPSEC) situation: IDENTITY_ONLY
payload: PROPOSAL len: 56 proposal: 1 proto: IPSEC_ESP spisz: 4 xforms: 1 SPI: 0xd6023c8a
               payload: TRANSFORM len: 44
                   transform: 1 ID: AES
                       attribute ENCAPSULATION_MODE = UDP_ENCAP_TUNNEL
                       attribute KEY_LENGTH = 128
                       attribute AUTHENTICATION_ALGORITHM = HMAC_SHA
                       attribute LIFE_TYPE = SECONDS
                       attribute LIFE_DURATION = 00000e10
                       attribute LIFE_TYPE = KILOBYTES
                       attribute LIFE_DURATION = 000186a0
       payload: NONCE len: 52
       payload: ID len: 12 type: IPV4_ADDR = 10.0.0.100
payload: ID len: 12 type: IPV4_ADDR = 217.197.149.135 [ttl 0] (id 1, len 228) 00:25:08.430581 84.42.224.147.4500 > 217.197.149.135.500: [bad udp cksum 2c00!] udpencap: isakmp v1.0 exchange INFO
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 2f212253 len: 76
       payload: HASH len: 24
       payload: NOTIFICATION len: 16
           notification: INVALID PAYLOAD TYPE [ttl 0] (id 1, len 108)
00:25:16.283492 217.197.149.135.4500 > 84.42.224.147.4500: [udp sum ok] udpencap: isakmp v1.0 exchange INFO
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: bc67da6b len: 68
       payload: HASH len: 24
       payload: DELETE len: 16 DOI: 1(IPSEC) proto: IPSEC_ESP nspis: 1
           SPI: 0xd6023c8a [ttl 0] (id 1, len 100)
00:25:16.284082 217.197.149.135.4500 > 84.42.224.147.4500: [bad udp cksum c01!] udpencap: isakmp v1.0 exchange INFO
       cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b msgid: 5a579ab7 len: 80
       payload: HASH len: 24
       payload: DELETE len: 28 DOI: 1(IPSEC) proto: ISAKMP nspis: 1
cookie: c8434925c7d015f1->fbb7ca86fb1f0a6b [ttl 0] (id 1, len 112)

and in log I can find this message:

isakmpd[18719]: transport_send_messages: giving up on exchange <unnamed>, no response from peer 84.42.224.147:4500



GreenBow  NAT-T working:

23:58:16.702380 84.42.224.147.500 > 217.197.149.135.500: [udp sum ok] isakmp v1.0 exchange ID_PROT
       cookie: 7902ee2af82aa6b9->0000000000000000 msgid: 00000000 len: 184
       payload: SA len: 56 DOI: 1(IPSEC) situation: IDENTITY_ONLY
payload: PROPOSAL len: 44 proposal: 1 proto: ISAKMP spisz: 0 xforms: 1
               payload: TRANSFORM len: 36
                   transform: 0 ID: ISAKMP
                       attribute ENCRYPTION_ALGORITHM = AES_CBC
                       attribute HASH_ALGORITHM = SHA
                       attribute AUTHENTICATION_METHOD = PRE_SHARED
                       attribute GROUP_DESCRIPTION = MODP_1024
                       attribute LIFE_TYPE = SECONDS
                       attribute LIFE_DURATION = 3600
                       attribute KEY_LENGTH = 128
payload: VENDOR len: 20 (supports v1 NAT-T, draft-ietf-ipsec-nat-t-ike-00) payload: VENDOR len: 20 (supports v2 NAT-T, draft-ietf-ipsec-nat-t-ike-02) payload: VENDOR len: 20 (supports v3 NAT-T, draft-ietf-ipsec-nat-t-ike-03)
       payload: VENDOR len: 20 (supports NAT-T, RFC 3947)
       payload: VENDOR len: 20 (supports DPD v1.0) [ttl 0] (id 1, len 212)
23:58:16.703197 217.197.149.135.500 > 84.42.224.147.500: [udp sum ok] isakmp v1.0 exchange ID_PROT
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 00000000 len: 184
       payload: SA len: 56 DOI: 1(IPSEC) situation: IDENTITY_ONLY
payload: PROPOSAL len: 44 proposal: 1 proto: ISAKMP spisz: 0 xforms: 1
               payload: TRANSFORM len: 36
                   transform: 0 ID: ISAKMP
                       attribute ENCRYPTION_ALGORITHM = AES_CBC
                       attribute HASH_ALGORITHM = SHA
                       attribute AUTHENTICATION_METHOD = PRE_SHARED
                       attribute GROUP_DESCRIPTION = MODP_1024
                       attribute LIFE_TYPE = SECONDS
                       attribute LIFE_DURATION = 3600
                       attribute KEY_LENGTH = 128
       payload: VENDOR len: 20 (supports OpenBSD-4.0)
payload: VENDOR len: 20 (supports v2 NAT-T, draft-ietf-ipsec-nat-t-ike-02) payload: VENDOR len: 20 (supports v3 NAT-T, draft-ietf-ipsec-nat-t-ike-03)
       payload: VENDOR len: 20 (supports NAT-T, RFC 3947)
       payload: VENDOR len: 20 (supports DPD v1.0) [ttl 0] (id 1, len 212)
23:58:16.747280 84.42.224.147.500 > 217.197.149.135.500: [udp sum ok] isakmp v1.0 exchange ID_PROT
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 00000000 len: 228
       payload: KEY_EXCH len: 132
       payload: NONCE len: 20
       payload: NAT-D len: 24
       payload: NAT-D len: 24 [ttl 0] (id 1, len 256)
23:58:16.782576 217.197.149.135.4500 > 84.42.224.147.4500: [udp sum ok] udpencap: isakmp v1.0 exchange ID_PROT
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 00000000 len: 228
       payload: KEY_EXCH len: 132
       payload: NONCE len: 20
       payload: NAT-D len: 24
       payload: NAT-D len: 24 [ttl 0] (id 1, len 260)
23:58:16.870392 84.42.224.147.4500 > 217.197.149.135.4500: [bad udp cksum 8b47!] udpencap: isakmp v1.0 exchange ID_PROT
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 00000000 len: 92
       payload: ID len: 12 type: IPV4_ADDR = 10.0.0.100
       payload: HASH len: 24
       payload: NOTIFICATION len: 28
notification: INITIAL CONTACT (7902ee2af82aa6b9->232e866dd0c048cb) [ttl 0] (id 1, len 124) 23:58:16.870824 217.197.149.135.4500 > 84.42.224.147.4500: [bad udp cksum 8b47!] udpencap: isakmp v1.0 exchange ID_PROT
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 00000000 len: 92
       payload: ID len: 12 type: IPV4_ADDR = 217.197.149.135
       payload: HASH len: 24
       payload: NOTIFICATION len: 28
notification: INITIAL CONTACT (7902ee2af82aa6b9->232e866dd0c048cb) [ttl 0] (id 1, len 124) 23:58:16.969405 84.42.224.147.4500 > 217.197.149.135.500: [bad udp cksum 9ffd!] udpencap: isakmp v1.0 exchange QUICK_MODE
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 16e666f8 len: 156
       payload: HASH len: 24
       payload: SA len: 52 DOI: 1(IPSEC) situation: IDENTITY_ONLY
payload: PROPOSAL len: 40 proposal: 1 proto: IPSEC_ESP spisz: 4 xforms: 1 SPI: 0x5f6d69b8
               payload: TRANSFORM len: 28
                   transform: 1 ID: AES
                       attribute LIFE_TYPE = SECONDS
                       attribute LIFE_DURATION = 3600
                       attribute ENCAPSULATION_MODE = UDP_ENCAP_TUNNEL
                       attribute AUTHENTICATION_ALGORITHM = HMAC_SHA
                       attribute KEY_LENGTH = 128
       payload: NONCE len: 20
       payload: ID len: 12 type: IPV4_ADDR = 10.0.0.100
payload: ID len: 12 type: IPV4_ADDR = 217.197.149.135 [ttl 0] (id 1, len 188) 23:58:16.970558 217.197.149.135.4500 > 84.42.224.147.4500: [udp sum ok] udpencap: isakmp v1.0 exchange QUICK_MODE
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 16e666f8 len: 148
       payload: HASH len: 24
       payload: SA len: 52 DOI: 1(IPSEC) situation: IDENTITY_ONLY
payload: PROPOSAL len: 40 proposal: 1 proto: IPSEC_ESP spisz: 4 xforms: 1 SPI: 0xa27bd23f
               payload: TRANSFORM len: 28
                   transform: 1 ID: AES
                       attribute LIFE_TYPE = SECONDS
                       attribute LIFE_DURATION = 3600
                       attribute ENCAPSULATION_MODE = UDP_ENCAP_TUNNEL
                       attribute AUTHENTICATION_ALGORITHM = HMAC_SHA
                       attribute KEY_LENGTH = 128
       payload: NONCE len: 20
       payload: ID len: 12 type: IPV4_ADDR = 10.0.0.100
payload: ID len: 12 type: IPV4_ADDR = 217.197.149.135 [ttl 0] (id 1, len 180) 23:58:17.066857 84.42.224.147.4500 > 217.197.149.135.4500: [bad udp cksum 100!] udpencap: isakmp v1.0 exchange QUICK_MODE
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 16e666f8 len: 60
       payload: HASH len: 24 [ttl 0] (id 1, len 92)
23:58:27.208035 217.197.149.135.4500 > 84.42.224.147.4500: [bad udp cksum 405!] udpencap: isakmp v1.0 exchange INFO
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: 99943d5c len: 68
       payload: HASH len: 24
       payload: DELETE len: 16 DOI: 1(IPSEC) proto: IPSEC_ESP nspis: 1
           SPI: 0xa27bd23f [ttl 0] (id 1, len 100)
23:58:27.209427 217.197.149.135.4500 > 84.42.224.147.4500: [bad udp cksum c01!] udpencap: isakmp v1.0 exchange INFO
       cookie: 7902ee2af82aa6b9->232e866dd0c048cb msgid: e6455359 len: 80
       payload: HASH len: 24
       payload: DELETE len: 28 DOI: 1(IPSEC) proto: ISAKMP nspis: 1
cookie: 7902ee2af82aa6b9->232e866dd0c048cb [ttl 0] (id 1, len 112)

Reply via email to