-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Connection Fails on Windows 10 Error 809 #305
Description
OS / Environment
Windows 10
Ansible version
2.2.1.0
Version of components from requirements.txt
Summary of the problem
Windows 10 fails to connect to the VPN. Message given is "The network connection between your computer and the VPN server could not be established because the remote server is not responding. This could be because one of the network devices between you and the remote server is not configured to allow VPN connections. This is Error 809.
Steps to reproduce the behavior
Install using normal steps. Make sure to say yes to windows 10 support.
The way of deployment (cloud or local)
Local
Expected behavior
Windows 10 connects.
Actual behavior
Windows 10 throws error 809.
Full log
No installation errors. I'm happy to provide the log if necessary, but it doesn't feel this way.
Debugging so far...
- I've added the fix for double NAT to my registry, but I don't think this is a double NAT situation.
- I've enabled logging for charon by disabling the apparmor rule.
- Logging on charon reveals that the IKE_SA_INIT packets are exchanged correctly. Windows makes a request and charon responds. This is confirmed by tcpdump and the Microsoft ripoff of Wireshark.
- Windows sends three response packets of type IKE_AUTH. These are the cert. They are fragmented at some point. I'm pretty sure this is at the Windows level. tcpdump receives these packets and warns that they have invalid lengths. Netstat shows that these packets fail to be reassembled. Port escalation also takes place during this step. The IKE_SA_INIT packets were sent at port 500. These are at port 4500. Charon is listening to this port.
root@algo:~# tcpdump -vv -i eth0 'port 4500'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:50:02.212130 IP (tos 0x0, ttl 116, id 31090, offset 0, flags [+], proto UDP (17), length 1500)
cpe-174-97-249-29.ma.res.rr.com.ipsec-nat-t > algo.local.ipsec-nat-t: NONESP-encap: isakmp 2.0 msgid 00000001 cookie ff19042cd25c8f5d->e383f9da91d60f23: child_sa ikev2_auth[I]: [|v2e] (len mismatch: isakmp 2528/ip 1468)
07:50:03.209949 IP (tos 0x0, ttl 116, id 31091, offset 0, flags [+], proto UDP (17), length 1500)
cpe-174-97-249-29.ma.res.rr.com.ipsec-nat-t > algo.local.ipsec-nat-t: NONESP-encap: isakmp 2.0 msgid 00000001 cookie ff19042cd25c8f5d->e383f9da91d60f23: child_sa ikev2_auth[I]: [|v2e] (len mismatch: isakmp 2528/ip 1468)
07:50:04.209639 IP (tos 0x0, ttl 116, id 31092, offset 0, flags [+], proto UDP (17), length 1500)
cpe-174-97-249-29.ma.res.rr.com.ipsec-nat-t > algo.local.ipsec-nat-t: NONESP-encap: isakmp 2.0 msgid 00000001 cookie ff19042cd25c8f5d->e383f9da91d60f23: child_sa ikev2_auth[I]: [|v2e] (len mismatch: isakmp 2528/ip 1468)
These three packets never make it to charon.
root@algo:~# netstat -s | grep reass
172 reassemblies required
172 packet reassembles failed
- I've played around with smaller MTU's. I've verified that my router is set for MTUs equal to those of Windows.
- Android sends packets of a maximum length of 1400. The VPN does work on Android.
root@algo:~# tcpdump -vv -i eth0 'port 4500'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:53:56.039006 IP (tos 0x0, ttl 52, id 54785, offset 0, flags [DF], proto UDP (17), length 1400)
cpe-174-97-249-29.ma.res.rr.com.49376 > algo.local.ipsec-nat-t: [udp sum ok] NONESP-encap: isakmp 2.0 msgid 00000001 cookie 9467c5635053f986->5520d8bef3f2d259: child_sa ikev2_auth[I]:
(#53) [|v2IDi]
07:53:56.048031 IP (tos 0x0, ttl 52, id 54787, offset 0, flags [DF], proto UDP (17), length 1400)
cpe-174-97-249-29.ma.res.rr.com.49376 > algo.local.ipsec-nat-t: [udp sum ok] NONESP-encap: isakmp 2.0 msgid 00000001 cookie 9467c5635053f986->5520d8bef3f2d259: child_sa ikev2_auth[I]:
(#53)
07:53:56.048103 IP (tos 0x0, ttl 52, id 54788, offset 0, flags [DF], proto UDP (17), length 913)
cpe-174-97-249-29.ma.res.rr.com.49376 > algo.local.ipsec-nat-t: [udp sum ok] NONESP-encap: isakmp 2.0 msgid 00000001 cookie 9467c5635053f986->5520d8bef3f2d259: child_sa ikev2_auth[I]:
(#53)
Ideas
This feels like an issue with how Windows is fragmenting the packets. But most of the time when I'm totally sure I've narrowed down where the bug is coming from I'm wrong.
Is it possible there's an issue with reassembling UDP packets alltogether? Either they're not making it to the host properly and can't be reassembled, or maybe there's like an iptables rule killing the packets?