简单来说,你所访问的互联网,无论国内国外,无论有线无线,无论ipv4还是ipv6,在你发起访问时,都会最先在DNS上查询对应的服务器ip,然后网关再访问对应ip服务器上的内容,你访问一个网站,或者打开一个app,或者点播互联网电视,甚至喊一声小爱同学,在触发的刹那就需要至少一次访问DNS来查询服务器所在的ip,很多情况下你访问的内容又会被分散在多个服务器上,因为CDN的服务,每个URL都会有不同ip,每个ip可能又会对应多个域名,DNS会随着你的访问,频繁查询非常多次,一个家庭一分钟几万次DNS的查询很正常,所以DNS才是目前制约互联网访问速度的瓶颈。

以往宽带速度慢,20M以下,你完全无所谓DNS的那点查询的延时,因为查询后的内容回传都需要很长时间,但是都9102年了,现在200M的宽带已经很普遍了,民用千兆网也是小众的存在着。网速是以往的10倍,甚至50倍,内容的传输已经花不了太多时间了。DNS的查询时间变得更值得讨论了。

很多家庭升级了宽带带宽后发现速度还是不快,这明显是DNS制约了互联网的访问,很多家庭用的是宽带运营商推送的DNS,比如浙江湖州移动的官方DNS就是211.140.188.188和211.140.13.188,湖州移动的全体用户,用的都只是这两个DNS,千军万马都在这个独木桥上过,只要这两台服务器稍有问题,整个地区的互联网访问都会受影响。

看到这里有人会说,那你别用ISP的DNS了,可以选择使用公共DNS,比如位于杭州的阿里的223.5.5.5和223.6.6.6,我的观点是,就算再近的DNS,ping值都不会小于10吧?就算再强的算力,再快速的查询,数据在层层交换和路由下,都只会更慢。这就是你换了公共DNS,还是访问缓慢的原因。

铺垫到这里,相信很多人已经睡着了,下面是写给认真看完的朋友。

我是怎么处理这个问题的?我用的是湖州移动的200M光纤宽带,运营商赠送的华为千兆光猫HS8545M,pppoe拨号用的是双千兆的小米路由器3G,刷Pandavan固件,因为我住多层顶楼带阁楼,所以楼上也同样有线连了一台小米路由器3,楼上的3负责楼上的设备5GHZ入网和内网DNS服务,楼下的除了负责5GHZ的wifi覆盖同时也负责pppoe拨号和DHCP,这样,楼上和楼下的路由器共同支撑起了全屋智能家居,所有不带屏幕的设备走2.4GHZ,有屏幕的走5GHZ。ssid名称密码一致,频道一致,设置了自动剔除已连接的弱信号自动拒绝未连接的弱信号,这样拿着手机和平板在楼上楼下可以无缝漫游,不变换内网ip。除了楼上的有线路由(AP模式),我一楼厕所里还放了一台工作模式在无线接入点 (AP)的小米路由mini,wan口lan口都没有插任何设备,接通电源后纯粹用它的5GHZ频段来无线桥接主路由,拓展wifi覆盖,连接速度TRate日常保持在800M左右,200M的带宽无压力跑满。反而是楼上有线连接的小米路由3标配是双百兆,所以楼上极限带宽就是100M,而且早年墙内弱电布的五类线,也就100M到顶了,而且小米路由3的运存是128M,跑DNS后内存日常剩余30M左右,算是榨干了硬件性能。

为什么用楼上的路由3负责DNS解析,因为楼下的小米路由3G已经作为接入设备,需要有一定的内存冗余,内存日常剩余130M左右,可以保证宽带接入的稳定性,楼上的设备日常CPU空闲,不用它做DNS,天理不容。

那我是怎么办到的呢?我把两台小米路由都刷了Padavan。

具体方法:http://huanglei.site/?s=padavan

然后,用Padavan里的AdGuard Home插件,搭建私人去广告DNS服务。内网DNS访问的ping值小于1毫秒,而且独立CPU,解析快狠准。AdGuard Home的上游 DNS 服务器用的是ISP推荐和阿里DNS,第一次访问时会自动同时查询上游服务器,之后就会加速解析。

AdGuard Home这么有名,我这里就不多介绍了,用来在内网旁路由上免费部署,亲测非常好用。https://github.com/AdguardTeam/AdGuardHome

当然,如果你嫌刷路由麻烦,也可以部署到操作系统上,我在自己的MacBook Pro和MacMini上也都部署了独立的AdGuard Home Mac版,比用路由更快。

https://github.com/AdguardTeam/AdGuardHome/releases

部署方法在官网上有介绍,我这里也不多余介绍了。

https://adguard.com/zh_cn/adguard-home/overview.html

同时,为了隐藏桌面操作系统的网络访问请求,我把上游服务器地址设置成:tls://dns.adguard.com
tls://dns.quad9.net
tls://1.1.1.1

之所以将AdGuardHome部署在旁路由上是因为我需要家里有2台路由负责无线网的覆盖,你当然可以部署在家里唯一的路由器上,如果家里设备不多,小于50个ip,我想应该也是没有问题的。稳定性可以自测,AdGuardHome在路由器上占用的内存并不多,几十兆吧,小米路由器3G有256M的运存,完全可以胜任。

另外,对有能力实现Padavan的AdGuardHome用户,我想提醒一下:

作为旁路由可以把服务端口5353改为53,如果是主路由上实现的,还是保留在5353,因为服务启动时会在DNSMASQ里自动加入127.0.0.1#5353的语句。

另外,也建议更改AdGuardHome的后台端口和用户名密码,安全第一,万一有人能蹭你家wifi呢?

这里,分享一下我在用的AdGuardHome的过滤器和 Hosts 拦截清单:

https://raw.githubusercontent.com/user1121114685/koolproxyR_rule_list/master/kpr_our_rule.txt
https://easylist-downloads.adblockplus.org/yt_annoyances_full.txt
https://raw.githubusercontent.com/xinggsf/Adblock-Plus-Rule/master/ABP-FX.txt
https://easylist-downloads.adblockplus.org/easylistchina.txt
https://raw.githubusercontent.com/Zereao/AD_Rules/master/ChinaList%2BEasyList(%E4%BF%AE%E6%AD%A3).txt
https://raw.githubusercontent.com/hl2guide/All-in-One-Customized-Adblock-List/master/deanoman-adblocklist.txt
https://raw.githubusercontent.com/vokins/yhosts/master/hosts.txt
https://raw.githubusercontent.com/jdlingyu/ad-wars/master/hosts
https://hosts.nfz.moe/full/hosts

最后提醒一下刷Padavan的朋友,玩Padavan插件就需要部署opt,要外插U盘,而U盘需要事先用DM分区格式化成ext4文件系统,切记。

另外,截至2019年9月1日的AdGuard Home可以用的版本是v0.98.1,如果在opt里只下载了压缩包,可以手动解压,程序就可以运行了,当然,你也可以手动下载解压安装包:https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.98.1/AdGuardHome_linux_mips.tar.gz

最后的最后,如果你实在搞不定,或者不想花时间,那就老老实实用好DNSMASQ,效果也还不错。