# DNS leak

A DNS leak is a security flaw that allows DNS requests to be revealed to ISP DNS servers, despite the use of a VPN service to attempt to conceal them. Although primarily of concern to VPN users, it is also possible to prevent it for proxy and direct internet users.

## Process

The vulnerability allows an ISP, as well as any on-path eavesdroppers, to see what websites a user may be visiting. This is possible because the browser's DNS requests are sent to the ISP DNS server directly, and not sent through the VPN.
This only occurs with certain types of VPNs, e.g. "split-tunnel" VPNs, where traffic can still be sent over the local network interface even when the VPN is active.
Starting with Windows 8, Microsoft has introduced the "Smart Multi-Homed Named Resolution". This altered the way Windows 8 handled DNS requests, by ensuring that a DNS request could travel across all available network interfaces on the computer. While there is general consensus that this new method of domain name resolution accelerated the time required for a DNS look-up to be completed, it also exposed VPN users to DNS leaks when connected to a VPN endpoint, because the computer would no longer use only the DNS servers assigned by the VPN service. Instead, the DNS request would be sent through all available interfaces, thus the DNS traffic would travel out of the VPN tunnel and expose the user's default DNS servers.

## Prevention

Websites exist to allow testing to determine whether a DNS leak is occurring. Regular DNS leak testing is crucial for VPN users to ensure their privacy, as DNS leaks can expose browsing activity to ISPs and other third parties, even when a VPN is active. DNS leaks can be addressed in a number of ways:
* Encrypting DNS requests with DNS over HTTPS or DNS over TLS, which prevents the requests from being seen by on-path eavesdroppers.
* Using a VPN client which sends DNS requests over the VPN. Not all VPN apps will successfully plug DNS leaks, as it was found in a study by the Commonwealth Scientific and Industrial Research Organisation in 2016 when they carried an in-depth research called "An Analysis of the Privacy and Security Risks of Android VPN Permission-enabled Apps" and found that 84% of the 283 VPN applications on Google Play Store that they tested did leak DNS requests.
* Changing DNS servers on local computer for whole network adapters, or setting them to different ones. 3rd party apps are available for this such as NirSoft quicksetdns.
* Using a firewall to disable DNS on whole device (usually outgoing connections UDP and less commonly TCP port 53), or setting DNS servers to non-existing ones like local 127.0.0.1 or 0.0.0.0 (via command line or 3rd party app if not possible via OS GUI interface). This requires alternate ways of resolving domains like the above-mentioned ones, or using in apps with configured proxy, or using proxy helper apps like Proxifier or ProxyCap, which allows resolving domains over proxy. Many apps allow setting manual proxy or using proxy already used by system.
* Using completely anonymous web browsers such as Tor Browser which not only makes user anonymous, but also doesn't require any dns to be set up on the operating system.
* Using proxy or vpn, system wide, via 3rd party app helpers like Proxifier, or in form of web browser extension. However most extensions in Chrome or Firefox will report false positive working condition even if they did not connect, so 3rd party website for ip and dns leak check is recommended. This false working state usually happens when two proxy or vpn extensions are tried to be used at the same time (e.g. Windscribe VPN and FoxyProxy extensions).