djbdns/dbndns dnscache запрос ipv6-only серверов имен?

Я (попытался) настроить dnscache на Ubuntu 14.04 (Trusty) для создания двойного стека для обслуживания запросов и запросов к авторитетным серверам имен.

Чтобы было ясно, я использую пакет dbndns, который имеет исправление IPv6 от fefe.

Я установил пакеты dbndns & dnscache-run. Я убедился, что /etc/service/dnscache/env/IP было 0.0.0.0 а также /etc/service/dnscache/env/IPSEND было 0.0.0.0,

Я также добавил наши диапазоны IP в /etc/service/dnscache/root/ip,

Теперь я могу загрузить AAA и записи, используя dig на другой машине через IPv4 и IPv6. Но у testipv6.com есть тест для загрузки записей только с авторитетного сервера имен IPv6. Чтобы проверить это, он загружает URL-адрес http://ds.v6ns.test-ipv6.com/ip/?callback=?. Если я копаю имя хоста для этого, ds.v6ns.test-ipv6.com с помощью 8.8.8.8 (DNS-сервер Google с поддержкой IPv6) я получаю запись AAAA. Но то же самое с моим кешем dbndns (через IPv4 и IPv6) не дает результата.

Нужно ли менять IPSEND? Если так, то что? Я не хочу ломать решающие проблемы только для IPv4-серверов с авторитетными именами.

2 ответа

У меня была такая же проблема, и я нашел, что она исправлена ​​путем обновления с 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;

В операторе if в строке 950 отсутствуют скобки (о которых я сейчас сообщу Fefe), и вам также нужно изменить dtype иначе, если у вас есть патчи безопасности из http://www.your.org/dnscache/ (что вам, вероятно, следует).

Я поддерживаю его слияние и индивидуальный подход (для поддержки IPv6 в стиле OpenBSD), но вот мой патч для query.c, который должен помочь вам объединить их.

IPSEND должно быть :: чтобы это работало, конечно. Ваш упомянутый тестовый хост 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

замещать 10.66.1.1 с вашим частным IPv4, и 198.51.100.1 с вашим публичным IPv4 и 2001:db8:10:30::1 с вашими (общедоступными) IPv6-адресами. Это тогда работает для меня:

# 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
Другие вопросы по тегам