Назад | Перейти на главную страницу

djbdns / dbndns dnscache запрашивает серверы имен только для ipv6?

Я (пытался) настроить 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.

Теперь я могу загрузить aaaa и записи, используя 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.

У меня была такая же проблема, и я обнаружил, что она исправлена ​​обновлением с Fefe’s 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 отсутствуют фигурные скобки (о которых я сейчас сообщу Фефе), и вам также необходимо изменить 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