Поддержка IPv6 на DNS-серверах
14.06.2011 Недавно мы тестировали поддержку IPv6 на крупнейших почтовых серверах, ситуация плачевная. Сегодня займёмся DNS-серверами. TLD-серверы поддерживают IPv6 уже достаточно давно, в этом поверьте на слово или проверьте сами , а мы копнём следующий уровень.Методика тестирования
Взяли наш тестовый домен ac.org.ru, прописали для него в РуЦентре IPv6GlueRecords (РуЦентр поддерживает IPv6 с 13.01.2011):Онлайн-тестирование DNS-сервера по IPv6 прошло успешно (см. страницу IPv6GlueRecords), но при делегировании домена на IPv6 галочку "тестировать" надо снять, иначе домен навечно зависает в ситуации "тестирование" (техподдержка РуЦентра объяснила это тем, что тестирующий софт поддерживает только IPv4 — значит онлайновый тест и "настоящий" тест выполняют у них разные роботы).
Делегирование прошло менее чем за час (как и обещали) — проверяем nslookup'ом.
> set type=ns
> org.ru.
org.ru nameserver = ns3-com.nic.ru
org.ru nameserver = ns4-com.nic.ru
org.ru nameserver = ns8-com.nic.ru
> server ns3-com.nic.ru.
Default Server: ns3-com.nic.ru
Address: 193.232.146.170
> ac.org.ru.
Server: ns3-com.nic.ru
Address: 193.232.146.170
ac.org.ru nameserver = ns1.ac.org.ru
ac.org.ru nameserver = ns2.ac.org.ru
ns1.ac.org.ru AAAA IPv6 address = 2001:470:1f14:1620::2
ns2.ac.org.ru AAAA IPv6 address = 2001:470:1f15:1620::1
> server 2001:470:1f14:1620::2
> www.ac.org.ru.
Server: [2001:470:1f14:1620::2]
Address: 2001:470:1f14:1620::2
> set type=aaaa
> www.ac.org.ru.
Server: [2001:470:1f14:1620::2]
Address: 2001:470:1f14:1620::2
Name: www.ac.org.ru
Address: 2001:470:1f14:1620::2
Теперь любой сервер, если он поддерживает резолвинг по IPv6, должен возвращать нам "2001:470:1f14:1620::2" при запросе AAAA-записи "www.ac.org.ru". Это и проверим (старые IPv4 DNS-серверы домена на всякий случай не отключаем, чтобы оставить запасной достойный выход для "сильно кэширующих" DNS-серверов).
Google 8.8.8.8
Проверим самый распиаренный и активно навязываемый Google Public DNS.> server 8.8.8.8
Default Server: google-public-dns-a.google.com
Address: 8.8.8.8
> set type=ns
> ac.org.ru.
Server: google-public-dns-a.google.com
Address: 8.8.8.8
*** google-public-dns-a.google.com can't find ac.org.ru.: Server failed
Хм. Уже NS-записи для домена он извлечь не смог, хотя извлекать он их должен был из ns*-com.nic.ru, как указано выше, который доступен по IPv4, т.е. тут дело не в протоколе доступа, а в типе возвращаемых данных — NS, ссылающиеся на IPv6, он вернуть не смог или не захотел. Чтобы убедиться — спрашиваем у него другой наш домен, с IPv4-DNS — forth.org.ru:
> forth.org.ru.
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Неофициальный ответ:
forth.org.ru nameserver = ns1.twisted4life.com
forth.org.ru nameserver = ns1.forth.org.ru
С NS-записями, ссылающимися на IPv4, всё нормально. Т.е. дело именно в типе glue records — IPv6 там Google не поддерживает. Собственные DNS-серверы Гугла для google.com (ns*.google.com) доступны только по IPv4. В общем, как и с Gmail'ом, поддержка IPv6 в Гугле ограничивается пока только AAAA-записями для веб-серверов. IPv6-only-клиенты с ними работать не смогут, т.к. до этих AAAA-записей не доберутся.
OpenDNS.com
Самый известный и "самый быстрорастущий" (по их собственным словам) публичный DNS-сервер с функцией фильтрации опасных доменов. Про IPv6 и "Всемирный день IPv6" они знают — http://blog.opendns.com/2011/06/07/opendns-world-ipv6-day/ и открыли доступ к своим серверам по IPv6 — http://www.opendns.com/ipv6/. Тестируем сначала IPv4-сервер:> server 208.67.222.222
Default Server: resolver1.opendns.com
Address: 208.67.222.222
> set type=ns
> ac.org.ru.
Server: resolver1.opendns.com
Address: 208.67.222.222
DNS request timed out.
timeout was 2 seconds.
*** Request to resolver1.opendns.com timed-out
> ac.org.ru.
Server: resolver1.opendns.com
Address: 208.67.222.222
Неофициальный ответ:
ac.org.ru nameserver = ns1.ac.org.ru
ac.org.ru nameserver = ns2.ac.org.ru
Хоть и с задержкой, но с NS справился, в отличие от Гугла.
> set timeout=10
> set type=aaaa
> www.ac.org.ru.
Server: resolver1.opendns.com
Address: 208.67.222.222
*** No IPv6 address (AAAA) records available for www.ac.org.ru.
Увы, AAAA-записи из DNS-сервера, доступного только по IPv6, он достать не смог (и в DNS-сервере нет обращений за этим доменом в этот момент). Проверим теперь OpenDNS IPv6 Sandbox:
> set timeout=10
> set type=aaaa
> www.ac.org.ru.
Server: [2620:0:ccc::2]
Address: 2620:0:ccc::2
*** [2620:0:ccc::2] can't find www.ac.org.ru.: Server failed
При этом в логе DNS-сервере видна успешная обработка запросов с IP 208.67.217.4, т.е. OpenDNS записи получил по IPv4, а не по IPv6. С какой стати он пошел по IPv4, может IPv6-адресов для NS не видит? Видит:
> set type=ns
> ac.org.ru.
Server: [2620:0:ccc::2]
Address: 2620:0:ccc::2
Неофициальный ответ:
ac.org.ru nameserver = ns1.ac.org.ru
ac.org.ru nameserver = ns2.ac.org.ru
> set type=aaaa
> ns1.ac.org.ru.
Server: [2620:0:ccc::2]
Address: 2620:0:ccc::2
Неофициальный ответ:
Name: ns1.ac.org.ru
Address: 2001:470:1f14:1620::2
> ns2.ac.org.ru.
Server: [2620:0:ccc::2]
Address: 2620:0:ccc::2
Неофициальный ответ:
Name: ns2.ac.org.ru
Address: 2001:470:1f15:1620::1
Ладно, может где-то действительно в кэше застряло IPv4, спросим у второго их сервера:
> server 2620:0:ccd::2
Default Server: [2620:0:ccd::2]
Address: 2620:0:ccd::2
> www.ac.org.ru.
Server: [2620:0:ccd::2]
Address: 2620:0:ccd::2
Неофициальный ответ:
Name: www.ac.org.ru
Address: 2001:470:1f15:1620::1
Работает! При этом запросы на DNS-сервер ns1.ac.org.ru поступают с IPv6-адреса [2620:0:cc9::11], т.е. из подсети OpenDNS, всё сходится. В общем будем считать, что поддержка IPv6 там уже реализована, осталось поработать над надежностью и скоростью.