|
本帖最后由 nakesa 于 2022-5-20 18:42 编辑
其实好早之前就试着使用smartdns配合不可描述,然而dns分流那块很明显没设置好,导致各种网络异常。
这段时间有空,就再次折腾了起来,顺便照着各大帖子看了下,少有讲解原理部分的。想着把自己的一些理解写出来,还望大佬们不吝赐教。
测试环境:smartdns+p@ssw@II
个人建议,先把dnsmasq的缓存设置成0,免得一些奇奇怪怪的问题。
如图所示的国内组设置
1.要注意下,tcp服务器在smartdns配置文件里面是bind-tcp,是绑定本地路由器的6053(图示,根据自己的来)端口,监听dns tcp请求。你向本地路由器请求dns解析,使用udp就可以了,关键是上游服务器设置!真担心污染的话,上游配置dot/doh,但别忘记添加个常规dns,不然doh域名无法解析。
2.ipv6服务器选项,个人理解是监听来自局域网ipv6客户端的dns请求
3.双栈IP优选,适合同时具有ipv4和ipv6网络的人。因为ipv6会抢答dns,但是ipv6的网络不一定有ipv4快,有时就会导致网络访问缓慢,设置这个可以对ipv4和ipv6的解析地址进行测速,选择最快的那个。
4.域名预加载,开启此功能会在TTL过期前3s刷新。
5.过期缓存服务,开启此功能后,如果有请求时尝试回应 TTL 为 0 的过期记录(我之前不太理解这里,后来反应过来,过期记录不代表是无效记录,大部分情况下依然可以使用,这样设置能避免查询等待)
6.重定向功能有个地方需要注意,当你设置--作为dnsmasq的上游服务器时,需要禁用dnsmasq的缓存(不禁用的话,比如ttl相关的设置就会延迟)
7.ttl最小值和最大值是一个筛选作用,ttl_max=>ttl>=ttl_min,筛选出的结果将其ttl重设为你设定的ttl值(如图,86400即一天)
8.最下方的ttl最大值是传递给客户端的,这个设置对于分流很有用!
我设置成10是为了保证每次切换服务器,都能解析到正确的地址。设置这么低是配合第二dns服务器
第二dns服务器设置
1.为什么跳过测速。
经过测试,关闭smartdns,直接到日本服务器上运行nslookup www.github.com,解析出来的是东京的ip。不关闭,解析出来是新加坡的ip。个人猜测,这个测速并不是测试的vps到解析ip的速度,而是路由器到解析ip的速度。这就导致最后返回给客户端的解析ip是离你最近,而不是离服务器最近,这也是导致部分网站打开速度特别慢的原因之一。我也测试了其他服务器,解析出来的ip千奇百怪。
也许有别的方法可以将测速放到服务器上面,但我没试出来。。。
2.跳过address规则、跳过Nameserver规则、跳过ipset规则、跳过address SOA(#)规则,这里主要是我没去设置这些东西,所以开启关闭对我是一样的。个人感觉这些功能另有用处,没去研究。
3.跳过双栈优选,这个也是为了防止ipv6抢答,但是你本地和节点都有ipv6的情况下,可以不跳过。(前提是规则做好)
4.跳过cache,这个是dns分流必须选的。缓存会保留你上一次请求的dns解析结果,但是!!!切换服务器,特别是切换到不同地区的,那这个缓存的解析结果就会导致你基本上失去大部分网站的访问(我感觉很多ip都设置了仅限本地区ip访问,其余的ip请求就直接drop了,可能是为了防止ddos?)
这个跳过cache,因为是第二dns服务器的设置,所以不影响国内。
之前在基本设置选项里面,将返回给客户端的TTL最大值设置为10,是因为我既想保留国内网站最快的解析结果,又不想科学网络的解析长期驻留(因为要切换不同地区的服务器)。这样组合出来的结果就是,国内dns解析,保存在路由器一天(86400秒),客户端不管什么结果都只保留10秒,时间一到就向路由器发送请求,命中了smartdns的缓存就返回给客户端,没命中就像上游dns服务器请求解析结果。而科学网络没有设置缓存,所以每次都会通过服务器去请求,这样得到的地址就正确了。
ps:踩过坑,我头铁把返回给客户端的TTL最大值设置为86400,结果就是。。。。
这样做要么一直不切换服务器线路,要么切换了,自己手动刷新电脑的dns。图省事就改成10,反正udp请求快的很,对路由器也没啥负载。smartdns不能针对第二dns服务器单独设置ttl,木的法子。
5.Force AAAA SOA,这个也是跟ipv6有关的。不过我没搞明白。作用是强制AAAA 地址返回SOA
AAAA记录: 将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录
SOA记录: SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器
自定义设置
这个可以按照官方文档来设置,我只改了测速模式,反正经过之前的设置,测速只对国内有效。
防火墙设置
注释掉53端口的规则就可以了,不然smartdns总提示重定向错误!
一个坑点!
由于我使用了p@ssw@II的icmp劫持,所以ping一些地址的延迟是低于1ms的。必须在第二dns上游服务器的额外的服务器参数里面设置-exclude-default-group,不然之前设置的测速模式里面就不能有ping这个,不然怎么巨特么容易解析到科学ip。
另一个坑点!
别忘了让第二dns组的dns服务器走科学隧道!!!虽然大部分插件都默认设置好了,但是保险起见,还是看下配置把。
还有个奇怪的BUG,我不能把重定向设置为---重定向53端口到smartdns,不然国内外都解析不出结果。因为固件本身没有集成,可能是插件冲突把,反正dnsmasq缓存设置成0,效果也一样。
细节注意哦,有些视频博主说要把第二dns服务器组设置成dot/doh,说是为了防国内dns污染,这是错误的,第二dns服务器组的请求都转发出去了,国内哪里污染的了,设置dot/doh是为了服务器自身dns请求不被篡改,跟国内没关系。
再一个是加速国外,记住第二dns服务器组是不进行ip测速的,所以逻辑上应该是谁最快给结果,服务器就返回谁的给路由器。我觉得这个加速效果更多体现在部分网页通过一个dns解析太慢,设置多个dns就能并发查询,减少等待过程的时间,而不是测出最快的ip给服务器。
这两天就光折腾smartdns,一些自己的理解分享出来。能帮助朋友们理解是最好的了,当然,可能有些介绍有错误,劳烦大家指正。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|