Closed zonyitoo closed 1 month ago
对于smartdns,一个域名查询出cname后,其cname递归查询时也是遵循主域名规则的。这里没有问题。
你说的情况发生在smartdns下级不是终端用户而是另一个dns服务器的情形。根据rfc规范,dns服务器会发起两次查询。第一次查询A记录。若上游返回CNAME和A记录,第二次应使用CNAME再次查询AAAA记录。 但终端用户查询时会查询A+AAAA记录,便不会出现第二次使用CNAME查询的情形。
对于上述问题有几个解决方案。一是将CNAME对应的域名也写入域名规则。二是smartdns直接对终端用户使用,中间不要有其他dns服务器做转发。三是配置 force-no-CNAME yes 使smartdns在应答时不返回cname(这不符合规范,参考#1648)
force-no-CNAME yes
应该是比较好的选择
dnsmasq
,那么 .lan
域名的解析就有问题,目前对这些域名有依赖dnsmasq
设置为无缓存,相当于直接透传,应该问题不大
- 如果不直接连
dnsmasq
,那么.lan
域名的解析就有问题,目前对这些域名有依赖
配个上游组单独给.lan
我自己是用第二种方法,感觉也就是那几组分布式加速服务器,fastly,akamai之类的
实际上在OpenWRT的使用场景,dnsmasq -> smartdns 可以视为一个整体,不往上传递 CNAME ,对应用来讲没有问题。一个个加白不够一劳永逸,把fastly整个都加了又太过暴力
需求应用场景
api.pinterest.com
被劫持了,于是使用domain-rule
来让它使用海外可信DNS来解析:但是
api.pinterest.com
有部分海外 DNS 解析时会返回 CNAME ,CNAME 的域名没有在domain-rules
中导致还是被劫持。以下是前置的
dnsmasq
的日志,实际域名由smartdns
解析api.pinterest.com
是没有AAAA
Records 的,从上面日志可以看出是那几个fastly.net
的域名返回了AAAA
Records ,被劫持。建议的方案
若主查询的域名有
domain-rules
,CNAME 的域名应同样应用其domain-rules
设备信息
设备信息(CPU,厂家) R4S
固件信息 OpenWRT 18.06