Windows 10 Creators Update changed the way DNS works. It used to resolve DNS 
address using all available adapters and IP addresses in parallel, now it still 
resolves addresses using all available adapters but in sequence, beginning with 
random adapter.
This interfere with how --block-outside-dns currently work. Sometimes OS 
chooses VPN TAP adapter and things work as intended, sometimes the other 
adapter and user have to wait until DNS request times out and DNS resolution 
goes via VPN.
This behaviour introduces significant lag for web browsing.

Another thing is that Windows always prefers IPv6, just as any other OS. Some 
home routers give IPv6 Unique local address with DNS server to the computers 
using DHCPv6, even if there's no IPv6 connectivity from the provider.

More importantly, DisableSmartNameResolution switch, which didn't work in 
previous Windows 10 versions, now works correctly (see below).

*Workaround #1*, If VPN infrastructure is IPv6-enabled and pushes IPv6 address 
and DNS and route to the client:

 1. Apply DisableSmartNameResolution registry patch.



*Workaround #2*, if VPN infrastructure is not IPv6-enabled:

 1. Apply DisableSmartNameResolution registry patch.
 2. If there's IPv6 DNS from the router, set static IPv6 DNS to ::2 
(alternative to 127.0.0.2 in IPv4) or just disable IPv6 completely on internet 
interface.



*Workaround #3*, if VPN infrastructure is not IPv6-enabled and client's 
infrastructure is not IPv6-enabled:

 1. Apply DisableSmartNameResolution registry patch.
 2. Push IPv6 Unique local address and DNS server to the client, but do not 
push any routes. Client would use DNS over IPv6 but would not route anything 
else.

    *Note*: it would route IPv6 traffic over internet interface (not via VPN) 
if client's ISP is IPv6-enabled.



*Question*: Fixing registry with --block-outside-dns is simple, but what should 
we do with IPv6 in OpenVPN? Should we introduce an option to disable IPv6 DNS 
on other interfaces if there's no IPv6 DNS pushed from the VPN?


=== DisableSmartNameResolution.reg ===

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient]
"DisableSmartNameResolution"=dword:00000001


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to