Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scalable DNS

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Scalable DNS

Avatar for Artyom "Töma" Gavrichenkov

Artyom "Töma" Gavrichenkov

November 08, 2017
Tweet

More Decks by Artyom "Töma" Gavrichenkov

Other Decks in Technology

Transcript

  1. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017:

    • load balancing • geobalancing • ASN policies
  2. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017:

    • load balancing • geobalancing • ASN policies • AAAA
  3. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017:

    • load balancing • geobalancing • ASN policies • AAAA • failover
  4. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017:

    • load balancing • geobalancing • ASN policies • AAAA • failover • DNSSEC
  5. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017:

    • load balancing • geobalancing • ASN policies • AAAA • failover • DNSSEC • EDNS0 • DANE
  6. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017:

    • load balancing • geobalancing • ASN policies • AAAA • failover • DNSSEC • EDNS0 • DANE
  7. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие

    industry adopted scalable-решения Насколько вообще важна scalability в DNS?
  8. DNS lookup ximaera@nostromo:~$ sudo tcpdump -qni any tcp > /dev/null

    tcpdump: verbose output suppressed, use -v or -vv for full protocol listening on any, link-type LINUX_SLL (Linux cooked), capture size ^C 792 packets captured 794 packets received by filter 0 packets dropped by kernel ximaera@nostromo:~$ sudo tcpdump -qni any port 53 > /dev/null tcpdump: verbose output suppressed, use -v or -vv for full protocol listening on any, link-type LINUX_SLL (Linux cooked), capture size ^C 104 packets captured 156 packets received by filter 0 packets dropped by kernel ximaera@nostromo:~$
  9. DNS 10:00:34.510826 IP (proto UDP (17), length 56) 192.168.1.5.63097 >

    8.8.8.8.53: 9508+ A? highload.ru. (29) 10:00:34.588632 IP (proto UDP (17), length 72) 8.8.8.8.53 > 192.168.1.5.63097: 9508 1/0/0 highload.ru. A 178.248.233.16 (47)
  10. Анализ базы MaxMind RIPE Atlas: a platform for Internet measurement.

    • MaxMind Country DB accuracy on 7000 Atlas probes, June 2017: 99% • С вероятностью 1/100 MaxMind ошибается при определении страны на точках Atlas • Наше исследование: ошибка достигает 4,6% • Для CityDB, LiteDB результаты куда хуже
  11. Анализ базы MaxMind RIPE Atlas: a platform for Internet measurement.

    • MaxMind Country DB accuracy on 7000 Atlas probes, June 2017: 99% • С вероятностью 1/100 MaxMind ошибается при определении страны на точках Atlas • Наше исследование: ошибка достигает 4,6% • Для CityDB, LiteDB результаты куда хуже • https://stackoverflow.com/questions/22986794/continuously-decreasing- accuracy-of-maxmind-geolite-city • https://www.techdirt.com/articles/20160413/12012834171/how-bad-are- geolocation-tools-really-really-bad.shtml • https://geektimes.ru/post/274108/
  12. Анализ базы MaxMind RIPE Atlas: a platform for Internet measurement.

    • MaxMind Country DB accuracy on 7000 Atlas probes, June 2017: 99% • С вероятностью 1/100 MaxMind ошибается при определении страны на точках Atlas • Наше исследование: ошибка достигает 4,6% • Для CityDB, LiteDB результаты куда хуже • Самое главное: в Интернете нет географии, есть топология
  13. Динамическая конфигурация Параметры DNS – это уже не статический конфиг,

    это API в т.ч. для систем управления конфигурациями и приложений: • Provisioning • Stats • Policy management
  14. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка

    • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover
  15. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка

    • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover • Уязвимости и своевременные обновления
  16. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка

    • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover • Уязвимости и своевременные обновления => требуется поддерживаемое высокопроизводительное решение, своевременно реализующее требуемую функциональность
  17. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка

    • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover • Уязвимости и своевременные обновления • DDoS-атаки
  18. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка

    • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover • Уязвимости и своевременные обновления • DDoS-атаки • Требуется anycast • Требуется защита
  19. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие

    industry adopted scalable-решения 2. Строить самостоятельное решение сложно
  20. Как выбрать внешнего поставщика? Даже с anycast’ом – тысячи их!

    • Dyn • NS1 • Route 53 • Name.com • Azure DNS • Google Cloud DNS • Qrator • Cloudflare
  21. Минутка боли • IETF: организация, занимающаяся утверждением стандартов протоколов (RFC)

    • Рабочая группа dnsop (DNS operations): 14 активных черновиков RFC • IPv6 • Special use domain names and TLDs • Packet capture and wire formats • Terminology and security considerations
  22. Минутка боли • IETF: организация, занимающаяся утверждением стандартов протоколов (RFC)

    • Рабочая группа dnsop (DNS operations): 14 активных черновиков RFC • IPv6 • Special use domain names and TLDs • Packet capture and wire formats • Terminology and security considerations • GeoDNS? No, sorry, it’s not that important!
  23. Минутка боли • IETF: организация, занимающаяся утверждением стандартов протоколов (RFC)

    • GeoDNS? No, sorry, it’s not that important! => GeoDNS реализуется костылями через API managed DNS- сервисов (ну да, и в bind тоже есть)
  24. Варианты автоматизации • Zone transfer via AXFR/NOTIFY: стандартный механизм, без

    Geo и прочих плюшек. Неудобный, поддерживается не всеми провайдерами • Reverse proxy: механизм, стандартный для HTTP, но не для DNS, удобный, вообще почти никем не поддерживается
  25. Варианты автоматизации • Zone transfer via AXFR/NOTIFY: стандартный механизм, без

    Geo и прочих плюшек. Неудобный, поддерживается не всеми провайдерами • Reverse proxy: механизм, стандартный для HTTP, но не для DNS, удобный, вообще почти никем не поддерживается • API managed-сервисов: современные, удобные, у каждого сервиса свои особенные
  26. Варианты автоматизации Here comes https://github.com/StackExchange/dnscontrol • Поддерживает целый ряд провайдеров

    «из коробки» через API • Активно развивается и поддерживается StackExchange
  27. CI/CD для DNS Here comes https://github.com/StackExchange/dnscontrol • Поддерживает целый ряд

    провайдеров «из коробки» через API • Активно развивается и поддерживается StackExchange • Позволяет версионирование конфигурации через Git • Используйте вашу CI-систему для: • выкатывания изменений в DNS • отката • отслеживания истории • unit-тестирования DNS-конфигурации!
  28. Итак • Множество надёжных, защищённых, распределённых managed- сервисов с полезными

    фичами • Оптимизации задержек в резолверах при использовании нескольких managed-сервисов • Средства автоматизации
  29. Итак • Множество надёжных, защищённых, распределённых managed- сервисов с полезными

    фичами • Оптимизации задержек в резолверах при использовании нескольких managed-сервисов • Средства автоматизации Вдобавок, можно сосредоточить свои усилия на чём-то более полезном, чем попытки построить свой Route 53.
  30. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие

    industry adopted scalable-решения 2. Использование нескольких managed-сервисов одновременно – несложно и снижает задержки
  31. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие

    industry adopted scalable-решения 2. Использование нескольких managed-сервисов одновременно – несложно и снижает задержки 3.
  32. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие

    industry adopted scalable-решения 2. Использование нескольких managed-сервисов одновременно – несложно и снижает задержки 3. Демоны.
  33. Internet measurement • Мы уже встречались с этим термином ранее,

    когда говорили про RIPE Atlas • https://www.ripe.net/analyse/internet-measurements
  34. Internet measurement • APNIC – один из 5 RIR, отвечающий

    за Азиатско-Тихоокеанский регион • APNIC DNS measurements
  35. APNIC experiment • Пиксель 1x1: https://z.t1000.u953a6ea5.s1448087430.i5112.vxxxx.06ca0.z.dotnxdomain .net/pix.png • TTL: 1

    s • Пример из лога: 1450151673.887 15-Dec-2015 query: z.t1000.u953a6ea5.s1450151671.i5112.vxxxx.06ca0.z.dotnxdomain.net A • Видно, что запрос шёл две секунды
  36. APNIC experiment • Выдержка из лога: 1450151673.887 15-Dec-2015 query: z.t1000.u953a6ea5.s1448087430.i5112.vxxxx.06ca0.z.dotnxdomain.net

    A 1450151673.887 15-Dec-2015 query: z.t1000.uc86fd1d9.s1447672979.i5112.vxxxx.3b460.z.dotnxdomain.net A 1450151673.887 15-Dec-2015 query: z.t1000.ub46e3821.s1447703026.i5112.vxxxx.0c914.z.dotnxdomain.net A 1450151674.013 15-Dec-2015 query: z.t1000.u953a6ea5.s1448087430.i5112.vxxxx.06ca0.z.dotnxdomain.net A 1450151674.015 15-Dec-2015 query: z.t1000.ub46e3821.s1447703026.i5112.vxxxx.0c914.z.dotnxdomain.net A
  37. • Выдержка из лога: 1450151673.887 15-Dec-2015 query: z.t1000.u953a6ea5.s1448087430.i5112.vxxxx.06ca0.z.dotnxdomain.net A 1450151673.887

    15-Dec-2015 query: z.t1000.uc86fd1d9.s1447672979.i5112.vxxxx.3b460.z.dotnxdomain.net A 1450151673.887 15-Dec-2015 query: z.t1000.ub46e3821.s1447703026.i5112.vxxxx.0c914.z.dotnxdomain.net A 1450151674.013 15-Dec-2015 query: z.t1000.u953a6ea5.s1448087430.i5112.vxxxx.06ca0.z.dotnxdomain.net A 1450151674.015 15-Dec-2015 query: z.t1000.ub46e3821.s1447703026.i5112.vxxxx.0c914.z.dotnxdomain.net A APNIC experiment • FROM_UNIXTIME(1450151673) => 2015-12-15 • FROM_UNIXTIME(1447703026) => 2015-11-16 Запрос шёл около месяца?!
  38. Демоны • Запрос шёл около месяца? Нет, конечно! • Данные

    запросы – «зомби-запросы» – были дублями других, отработавших вовремя и успешно
  39. Демоны • Запрос шёл около месяца? Нет, конечно! • Данные

    запросы – «зомби-запросы» – были дублями других, отработавших вовремя и успешно • IP-источники запросов – из сетей Amazon, Team Cymru, Blue Coat Systems • 16% запросов – «зомби»
  40. Демоны • DNS – важная часть инфраструктуры Интернета и, по

    сути, отдельная индустрия. На этом уровне работает целая индустрия игроков, занимающихся анализом трафика и измерениями с одним только им известными целями • Уязвимость DNS к атакам, активность пользователей и особенности работы DNS-серверов не являются для них секретом • Хорошая идея – предоставить обслуживание DNS компаниям, которые зарабатывают на этом и в курсе актуальных угроз
  41. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие

    industry adopted scalable-решения 2. Использование нескольких managed-сервисов одновременно – несложно и снижает задержки 3. Демоны! Спасибо!
  42. Misc [ • можно добавить про CAA, Wikileaks, DNSSEC и

    выбор TLD, но нужно отталкиваться от времени • http://www.bortzmeyer.org/observations-wikileaks.html • https://www.eff.org/files/2017/08/02/domain_registry_whitepaper.p df • Ещё можно рассказать, как строить резолвер для внутренних сервисов ]