Skip to content

DNS 是什么? ​

一句话:DNS 是上网的“通讯录”。

打电话时,你在通讯录里点“妈妈”,手机替你拨出一串号码。上网也一样:你输入的是 youtube.com 这样的网址,可电脑之间只认 IP 地址(一串数字)。把网址翻译成 IP 地址的,就是 DNS(Domain Name System,域名系统)。

一次访问发生了什么 ​

打开网页的三步:手机先问 DNS 服务器网址对应的地址,DNS 服务器回答一串 IP 地址,手机再按这个地址去连网站
  1. 问路:你打开一个网址,手机先去问 DNS 服务器“这个网址在哪?”;
  2. 回答:DNS 服务器回一个 IP 地址;
  3. 出发:手机按这个地址去连网站,网页才开始加载。

问过的答案会在手机里记一会儿,下次打开同一个网站就不用再问。整个过程通常只要几十毫秒,所以平时感觉不到。

DNS 服务器是谁提供的? ​

  • 默认:连上 Wi-Fi 或移动数据时,运营商会自动给你分配一个 DNS 服务器,大多数人用的就是它;
  • 公共 DNS:也可以手动改用公共 DNS,比如国内的 223.5.5.5(阿里)、119.29.29.29(腾讯),海外的 1.1.1.1(Cloudflare)、8.8.8.8(Google)。

DNS 出问题会怎样 ​

DNS 出问题时,最典型的症状是:网络明明连着,网页却打不开。

  • 查不到:DNS 服务器没响应或太慢,网页一直转圈,最后提示找不到服务器;
  • 查错了:拿到的是错误的地址,网站打不开,或者打开的不是原本的页面;
  • 被劫持:有的网络会把某些查询的答案换掉,比如跳到广告页。

微信能用、网页却打不开,就很可能是 DNS 的问题。

为什么用近处的 DNS 更快 ​

大网站会在全国各地放很多台服务器(CDN)。DNS 服务器会根据你从哪里来问,给你离你最近的那台。

所以访问国内网站,用国内的 DNS 解析,拿到的是就近的国内服务器,打开更快;用海外的 DNS 解析国内网站,可能被分配到远处的服务器,反而变慢。

DNS 和隐私 ​

普通的 DNS 查询是明文的:你查了哪个网址,经过的网络都看得到。就算网站本身是 HTTPS 加密的,“你访问了哪个网站”这件事也可能从 DNS 查询里看出来。

所以现在有了加密的 DNS,比如安卓的 私人 DNS(DoT)和浏览器里的 安全 DNS(DoH),它们把查询过程也加密了。

连上加速器后,如果查询没跟着走加密隧道,而是仍从本地网络发出,就叫 DNS 泄漏,见什么是 DNS 泄漏。

连接 GeckoHop 时 DNS 怎么走 ​

选 智能模式 时,GeckoHop 按网站分开处理:

国内网站海外网站
谁来解析国内公共 DNS经节点交给海外的公共 DNS
好处拿到就近的国内服务器,国内网站照样快查询不经过本地网络,拿到正确的海外地址

选 全局模式 时,所有 DNS 查询都经节点发出。服务器不记录 DNS 查询,也不记录你访问的网站、内容和连接日志,见隐私政策。

手机开了指定主机名的 私人 DNS,或浏览器开了 安全 DNS 时,GeckoHop 看不到这些查询,「智能模式」里的自定义域名规则可能不生效,处理方法见常见问题。

遇到 DNS 问题怎么办 ​

  1. 换个网络:Wi-Fi 和移动数据互换一下,很多 DNS 问题出在当前网络上;
  2. 改回自动:手动改过 DNS,或装过去广告、改 DNS 的 App,先把 DNS 改回自动;
  3. 所有节点都连不上时,多半是当前网络的 DNS 查不到节点地址,按常见问题里的步骤处理。