Ubuntu 14.04(Trusty)でdnscacheをセットアップして、リクエストの処理と権威ネームサーバーへのクエリを行うためのデュアルスタックを実行しました。
明確にするために、私はfefeによるIPv6パッチを含むdbndnsパッケージを使用しています。
Dbndns&dnscache-runパッケージをインストールしました。 /etc/service/dnscache/env/IP
が0.0.0.0
であり、/etc/service/dnscache/env/IPSEND
が0.0.0.0
であることを確認しました。
また、/etc/service/dnscache/root/ip
にIP範囲を追加しました。
これで、IPv4とIPv6の両方を介して別のマシンにDig
を使用してaaaaとレコードをロードできます。ただし、testipv6.comには、IPv6のみの権威ネームサーバーからレコードをロードするためのテストがあります。これをテストするために、URL http://ds.v6ns.test-ipv6.com/ip/?callback= ?をロードします。そのホスト名ds.v6ns.test-ipv6.com
を8.8.8.8
(googleのIPv6対応DNSサーバー)を使用して掘ると、AAAAレコードが返されます。しかし、私のdbndnsキャッシュ(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:/)の場合は、dtype
を別の方法で変更する必要があります。 /www.your.org/dnscache/ 適用されます(おそらくそうすべきです)。
大幅にマージおよびカスタマイズされた(OpenBSDスタイルのIPv6をサポートするための)フレーバーを維持していますが、 query.cのパッチは次のとおりです これはそれらをマージするのに役立ちます。
もちろん、これが機能するには、IPSEND
が::
である必要があります。あなたが言及したテストホストds.v6ns.test-ipv6.com
は、変更後は機能し、変更前は失敗したので、これで間違いありません。