# Remote DNS resolution

Remote DNS resolution means the proxy, not the client, translates the destination hostname into an IP address. With HTTP proxies this is automatic, since the client sends the hostname in the request or the CONNECT line; with SOCKS5 it depends on the client sending the name (socks5h) rather than a pre-resolved address (socks5). Resolving remotely keeps DNS queries in the exit's network and returns the answers a local user would get.


## Why it matters

- Privacy: a local lookup tells your own resolver which hosts you visit, even though the traffic goes through the proxy.
- Correctness: CDNs and geo-aware DNS return different addresses per region; resolving from the exit gets the local edge, like a local visitor.
- Split-horizon sites: some hostnames only resolve, or resolve differently, inside a country.


## How to enable it

| Client | Remote DNS |
| --- | --- |
| cURL | socks5h://user:pass@host:port |
| Python requests | proxies={"https": "socks5h://..."} (requests[socks]) |
| Chrome | --proxy-server=socks5://host:port --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE host" |
| HTTP proxies | always remote: the hostname is in the request |


## How it works at ProxShift

ProxShift resolves destination names at the exit for HTTP(S) and for SOCKS5 connections that send a hostname; use socks5h in tools that distinguish the two.

Source: https://proxshift.com/glossary/remote-dns
