djbdns / dbndns dnscache查询仅ipv6名称服务器?

我已经(试图)在Ubuntu 14.04(Trusty)上设置dnscache来做双栈服务请求和查询权威名称服务器。

要清楚,我正在使用dbndns软件包,它具有fefe的IPv6补丁。

我安装了dbndns&dnscache-run软件包。 我确信/etc/service/dnscache/env/IP0.0.0.0/etc/service/dnscache/env/IPSEND0.0.0.0

我还在/etc/service/dnscache/root/ip添加了我们的IP范围。

我现在可以通过IPv4和IPv6在另一台机器上使用dig来加载aaaa和logging。 但是testipv6.com有一个从IPv6唯一权威名字服务器加载logging的testing。 为了testing这个,它加载URL http://ds.v6ns.test-ipv6.com/ip/?callback= ?。 如果我使用8.8.8.8 (谷歌的启用了IPv6的DNS服务器)挖掘主机名称ds.v6ns.test-ipv6.com ,我会得到一个AAAAlogging。 但是对我的dbndnscaching(通过IPv4和IPv6)也是一样,不会返回任何结果。

IPSEND是否需要更改? 如果是的话,该怎么办? 我不想打破解决只有IPv4权威名称服务器的东西。

我有同样的问题,我发现它从Fefe的test23升级到他的test27补丁修复; 具体来说,差异query.c修复这个问题。

这主要是这样的变化:

 -dtype = z->level ? DNS_T_A : z->type; +dtype = z->level ? (z->ipv6[z->level] ? DNS_T_AAAA : DNS_T_A) : z->type; 

在950行的if语句中有一个缺失的括号(现在我将向Fefe报告),而且如果您有来自http://www.your.org/dnscache/的安全修补程序,则还需要以不同的方式更改dtype应用(你可能应该)。

我正在维护一个严格合并和定制(支持OpenBSD风格的IPv6)的风格,但这里是我的补丁query.c应该帮助你合并这些。

IPSEND必须是::为了这个工作。 你提到的testing主机ds.v6ns.test-ipv6.com适用于我之后的改变,之前失败了,所以我很确定这是它。

不幸的是,即使dbndns补丁也不行。

您需要两个dnscache实例才能正常工作,一个具有特定的IPv4地址(如以前那样使用它),另一个具有特定的IPv6地址:

 root@fw0:/service# grep '' dnscache*/env/IP* dnscache/env/IP:10.66.1.1 dnscache/env/IPSEND:198.51.100.1 dnscache6/env/IP:2001:db8:10:30::1 dnscache6/env/IPSEND:0.0.0.0 

将您的私有IPv4replace为10.66.1.1 ,将您的公有IPv4和2001:db8:10:30::1replace为公有IPv4地址。 它然后为我工作:

 # dig aaaa ds.v6ns.test-ipv6.com @2001:db8:10:30::1 ; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> aaaa ds.v6ns.test-ipv6.com @2001:db8:10:30::1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32403 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;ds.v6ns.test-ipv6.com. IN AAAA ;; ANSWER SECTION: ds.v6ns.test-ipv6.com. 360 IN AAAA 2001:470:1:18::119