When Using Proxy in Chrome, DNS Is Performed on Which Side?
When using proxy (e.g. SwitchyOmega) in Chrome, name resolution (DNS) is performed on client side or proxy side? Let’s explore how it works.
The test in this post is done by Chrome 107.0.5304.107, SwitchyOmega with HTTP proxy.
First, we should find an unvisited website, here we use example.com.
- Start Wireshark locally, apply filter
dnsto capture DNS traffic - Direct visit
example.com
Now, Wireshark captures DNS traffic locally:

Then, we clear local DNS cache by:
| |
- Start
tcpdumpon proxy server:$ tcpdump -i eth0 port 53 - Use proxy and visit
example.com
Now tcpdump captures DNS traffic on the proxy server:
| |
Conclusion: When using proxy in Chrome, name resolution is performed on proxy side.
Here are documents to explain this for SOCKSv5 proxy. It seems that the same mechanism is applied for HTTP proxy as well:
In Chrome when a proxy’s scheme is set to SOCKSv5, name resolution is always done proxy side (even though the protocol allows for client side as well). In Firefox client side vs proxy side name resolution can be configured with
network.proxy.socks_remote_dns; Chrome has no equivalent option and will always use proxy side resolution.