DNSAgent
DNSAgent copied to clipboard
如果在rules里允许重载RecordType怎么样?
还是网卡被禁用ipv4/v6的问题, 我上次的Pull Request只处理了Address是已知静态IP的情况。但对更泛的情况来说:
- 一个电脑的最高优先级的网卡是 VPN 大于 一般网卡
- 由于各种原因,VPN禁掉了IPv6或v4其中一种
- 连上VPN后,电脑就只会用某一种没被禁掉的方式解析域名
- 那个域名在DNSAgent中没有配置,解析失败
- 域名指定的IP发生了变化,但管理员没有修改配置并重启服务器上的DNSAgent,解析还是失败
假设一个client的VPN的ipv6被禁了,而且已经预先知道“想要/允许”访问的IPv6域名范围有哪些,比如只有_.sixxs.org、_.byr.cn等少数。如果有个选项能:
- DNSAgent匹配到后,重载question的RecordType为Aaaa,然后照常往某个NameServer发请求查询,返回结果
这种方式适用范围更广,只是我不知道用处大不大。而且我试着改了改,发现如何利用缓存又是一个问题。所以就只能提个新issue了。
给A记录请求返回AAAA记录,显然不符合协议,所以未必所有应用程序的DNS解析器都能正确理解。不是很想打破协议来做。。
刚提交了一个 commit 把新增的“RequestOnARequest”选项改名成“ForceAAAA”,同时支持 Address 是域名的情况下强制 AAAA 解析。启用了 ForceAAAA 的规则,还是会继续缓存的(尽管缓存的是不符合协议的 DNS 消息)。
好的, 那我就Close了。
发现个新问题:有的时候,一个域名在IPv4和v6都能被解析,但这个域名有可能只能用IPv4的IP才能成功访问,这时候如果能把Aaaa请求强制返回IPv4会很有用,因为暂时没法指定返回空的解析结果。
我遇到的例子是zealdocs.org, 这个域名的内容其实是托管到了一个国外的云平台上,结果IPv6访问的时候那个平台报错了。后来我关掉IPv6(过会再开启IPv6)它自己就好了。。。也不知道具体是不是v6的解析出了问题