知识百科
DNS 是什么:域名解析在代理环境下的流程、DNS 污染与泄漏、客户端怎么处理
从代理用户角度解释 DNS:把域名翻译成 IP 的过程。说明正常解析流程、DNS 污染是怎么回事、为什么开了代理还要管 DNS、DNS 泄漏的含义、客户端 fake-ip 与 redir-host 模式的原理,以及 DoH 的作用。
DNS 是访问网站的第一步,也是代理环境下最容易被忽略的一步。很多「开了代理某些网站还是打不开」的问题根源在这里。
正常的解析流程
- 你输入 example.com。
- 系统向 DNS 服务器(通常是运营商的)询问这个域名的 IP。
- 得到 IP 后连接服务器。
代理环境下的问题
DNS 污染
向本地 DNS 询问某些国外域名时,返回的是错误的 IP。你连的是错误服务器,表现为打不开或证书错误。代理只负责转发到你指定的 IP,如果 IP 本身是错的,代理也无能为力。
DNS 泄漏
即使流量走了代理,域名解析请求仍然发给了本地 DNS,本地 DNS 知道你想访问什么。对隐私敏感的场景需要避免。
客户端的解决方案
fake-ip 模式
客户端拦截解析请求:国外域名不真正解析,直接返回一个虚拟 IP(198.18.x.x 段),程序连这个虚拟 IP,客户端识别后把原始域名发给节点,由节点在海外完成解析。本地 DNS 完全不参与,不会被污染也不会泄漏。
代价:部分对 IP 有特殊要求的程序(局域网工具、某些游戏)不兼容,需要在 fake-ip-filter 中排除。
redir-host 模式
客户端在本地解析,但解析请求通过 DoH(加密)并走代理发出,得到真实 IP 后再转发。兼容性好,但依赖 DoH 配置正确。
DoH / DoT
DNS over HTTPS / TLS,把解析请求加密。配合代理使用时,解析请求也经过节点,不会被本地干扰。
分流
国内域名用国内 DNS(快、准确),国外域名走代理解析(不被污染)。客户端的 nameserver 与 fallback 配置就是做这个分流。全部走国外 DNS 会让国内网站变慢。
TUN 模式下
TUN 接管流量后,系统 DNS 请求也要进入客户端才能应用上述逻辑,需要开启 DNS 劫持。见 TUN 是什么。
配置与排错
常见问题
- DNS 是什么?
- 域名系统,把 example.com 这样的域名翻译成服务器 IP 地址的服务。每次访问网站都先经过它。
- 什么是 DNS 污染?
- 本地 DNS 查询被返回错误的 IP,导致连到错误服务器或连不上。国外域名在本地解析时常见。
- 开了代理为什么还要设置 DNS?
- 代理只转发流量,如果域名解析仍在本地完成并被污染,代理拿到的就是错误 IP。让解析走代理或在节点侧完成才能避免。