Skip to content

Connection Fails on Windows 10 Error 809 #305

@whitelje

Description

@whitelje

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?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions