A DNS leak refers to 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 localnetwork 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. 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 Firewall to disable DNS on whole device, or setting dns servers to non-existing ones like local 127.0.0.1 or 0.0.0.0. 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.
Conclusion
It may not always be so easy to know whether the one is using set DNS, and whether there are any DNS leaks. The safest way to verify a DNS leak is using more than one online DNS leak tests. Sometimes ISP may already be using one of public DNS servers by default, and setting it to same public one may not show any difference because servers are same, but ISP may be collecting data too. In such case, it is safest to change to different DNS than test for DNS leaks. For example if ISP was using google public DNS and we are using the same, it may be wise to try cloudflare DNS, then to see if there are any leaks to Google DNS.