打开电脑网络设置,DNS选项会显示自动获取,或是手动填写一串数字。登录路由器后台,地址一般是192.168.1.1,页面内同样带有DNS配置项。很多人分不清两处DNS设置到底是谁生效、谁优先。
记住一点,192.168.1.1一般是家庭路由器的局域网地址,同时也是电脑的默认网关。电脑上网产生的数据包,会先发送到这个地址,再由路由器转发到外网。DNS查询流程也是一样,无论电脑DNS填写什么,只要设备处于这个局域网,发出的DNS请求首先经过路由器中转。
电脑的DNS地址来源分两种情况。没有手动修改的前提下,大多是路由器通过DHCP协议自动分配。路由器会下发信息告知电脑:本机IP为192.168.1.100,网关192.168.1.1,DNS服务器地址192.168.1.1。很多家用路由器默认把自身充当DNS服务器。电脑把DNS查询请求发给192.168.1.1,路由器接收之后,再向真正的上游DNS发起查询,上游可以是运营商分配服务器或是手动填写的公共DNS。这个过程被称作DNS中继或者DNS代理。路由器还会缓存解析结果,再次查询同一个域名时,直接返回缓存内容,不用重复向外请求。

如果在电脑手动修改DNS为223.5.5.5,流程就发生改变。电脑不再向路由器发送DNS查询,直接向223.5.5.5发起请求。数据包依旧经过路由器转发,但路由器不再承担DNS解析服务,只负责网络层转发。这种情况下路由器后台配置的DNS,对这台电脑不再生效。反过来,在路由器后台把DNS修改成114.114.114.114,电脑保持自动获取,那么所有接入这台路由器的设备,手机、平板、电视全部会通过路由器访问114这个DNS,电脑本身不用额外调整。
两者关联的核心逻辑:路由器地址192.168.1.1同时承担网关和DNS服务器两种角色。电脑DNS自动获取时,获取到的通常就是192.168.1.1,查询路径是电脑→路由器→上游DNS。手动修改电脑DNS,相当于绕过路由器自带DNS代理,直接对接外部DNS。路由器层面修改DNS,只会影响所有开启自动获取的设备,手动单独设置过DNS的设备不受影响。
还有一个容易忽略的细节。部分路由器会把后台DNS设置和DHCP配置分开。修改WAN口DNS,但DHCP下发给设备的DNS依旧是192.168.1.1,电脑拿到的仍然是路由器地址。路由器会使用你设置好的上游DNS完成解析,这个过程电脑感知不到。想要确认电脑实际使用的DNS,Windows系统打开命令行执行ipconfig /all,查看DNS服务器一行;Mac系统进入网络设置,点击高级选项,切换到DNS标签页查看。显示192.168.1.1,代表走路由器代理解析;显示公共DNS地址,说明手动修改过,或是路由器直接下发公共DNS地址。
简单来讲,192.168.1.1就是局域网的数据中转站。DNS查询请求从电脑发出,第一站基本都是这个中转站。你可以让中转站代为转发解析请求,也可以直接绕过中转站连接外部DNS服务器。两条路径都能够正常使用,差别就在于解析控制权、缓存归属,以及谁能够看到你的域名查询记录。