Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Масштабируя DNS / Артем Гавриченков (Qrator Labs)

765 views

Published on

HighLoad++ 2017

Зал «Калининград», 8 ноября, 16:00

Тезисы:
http://www.highload.ru/2017/abstracts/3032.html

Протокол DNS на семь лет старше, чем Всемирная паутина. Стандарты RFC 882 и 883, определяющие основную функциональность системы доменных имён, появились в конце 1983 года, а первая реализация последовала уже годом позже. Естественно, что у технологии столь старой и при этом по сей день активнейшим образом используемой просто не могли не накопиться особенности, неочевидные обыкновенным пользователям.
...

Published in: Engineering
  • Login to see the comments

  • Be the first to like this

Масштабируя DNS / Артем Гавриченков (Qrator Labs)

  1. 1. Масштабируя DNS Артём Гавриченков <ag@qrator.net>
  2. 2. DNS in a nutshell • 1983 г.: (int32)*host_str;
  3. 3. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017:
  4. 4. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017: • load balancing • geobalancing
  5. 5. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017: • load balancing • geobalancing • ASN policies
  6. 6. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017: • load balancing • geobalancing • ASN policies • AAAA
  7. 7. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017: • load balancing • geobalancing • ASN policies • AAAA • failover
  8. 8. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017: • load balancing • geobalancing • ASN policies • AAAA • failover • DNSSEC
  9. 9. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017: • load balancing • geobalancing • ASN policies • AAAA • failover • DNSSEC • EDNS0 • DANE
  10. 10. DNS in a nutshell • 1983 г.: (int32)*host_str; • 1997-2017: • load balancing • geobalancing • ASN policies • AAAA • failover • DNSSEC • EDNS0 • DANE
  11. 11. Варианты работы с DNS • Собственная инфраструктура • Managed-решение
  12. 12. Три причины не размещать DNS на своей инфраструктуре
  13. 13. DNS benchmarks 2013
  14. 14. DNS benchmarks 2013
  15. 15. DNS benchmarks 2013
  16. 16. DNS benchmarks 2013
  17. 17. DNS benchmarks 2013
  18. 18. DNS benchmarks: 4 года спустя 2017
  19. 19. •HTTP: Apache Nginx •DNS: BIND
  20. 20. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие industry adopted scalable-решения
  21. 21. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие industry adopted scalable-решения Насколько вообще важна scalability в DNS?
  22. 22. DNS lookup
  23. 23. DNS lookup
  24. 24. 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:~$
  25. 25. 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)
  26. 26. Однако.
  27. 27. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка
  28. 28. Анализ базы MaxMind RIPE Atlas: a platform for Internet measurement. https://atlas.ripe.net/
  29. 29. Анализ базы 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 результаты куда хуже
  30. 30. Анализ базы 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/
  31. 31. Анализ базы 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 результаты куда хуже • Самое главное: в Интернете нет географии, есть топология
  32. 32. Топологическое таргетирование https://ns1.com/solutions/technical-solutions/filter-chain • Filters are like little programs that run inline for every DNS query. • They are attached directly to RFC- compliant DNS records
  33. 33. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка
  34. 34. Динамическая конфигурация
  35. 35. Динамическая конфигурация Параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений: • Provisioning • Stats • Policy management
  36. 36. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover
  37. 37. Failover, TTL 120s
  38. 38. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover • Уязвимости и своевременные обновления
  39. 39. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover • Уязвимости и своевременные обновления => требуется поддерживаемое высокопроизводительное решение, своевременно реализующее требуемую функциональность
  40. 40. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover • Уязвимости и своевременные обновления • DDoS-атаки
  41. 41. Однако. • Вызовы DNS-инфраструктуры: • Latency tasks: геобалансировка, топологическая балансировка • Динамическая конфигурация: параметры DNS – это уже не статический конфиг, это API в т.ч. для систем управления конфигурациями и приложений • Failover • Уязвимости и своевременные обновления • DDoS-атаки • Требуется anycast • Требуется защита
  42. 42. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие industry adopted scalable-решения 2. Строить самостоятельное решение сложно
  43. 43. Как выбрать внешнего поставщика?
  44. 44. Как выбрать внешнего поставщика? Даже с anycast’ом – тысячи их! • Dyn • NS1 • Route 53 • Name.com • Azure DNS • Google Cloud DNS • Qrator • Cloudflare
  45. 45. Как выбрать внешнего поставщика? Диверсификация!
  46. 46. SRTT: Smoothed Round Trip Time
  47. 47. “Ящик с усами”
  48. 48. SRTT
  49. 49. SRTT
  50. 50. SRTT
  51. 51. Как выбрать внешнего поставщика? • Диверсификация!
  52. 52. Как выбрать внешнего поставщика? • Диверсификация! • API!
  53. 53. Минутка боли • IETF: организация, занимающаяся утверждением стандартов протоколов (RFC) • Рабочая группа dnsop (DNS operations): 14 активных черновиков RFC
  54. 54. Минутка боли • IETF: организация, занимающаяся утверждением стандартов протоколов (RFC) • Рабочая группа dnsop (DNS operations): 14 активных черновиков RFC • IPv6 • Special use domain names and TLDs • Packet capture and wire formats • Terminology and security considerations
  55. 55. Минутка боли • 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!
  56. 56. Минутка боли • IETF: организация, занимающаяся утверждением стандартов протоколов (RFC) • GeoDNS? No, sorry, it’s not that important! => GeoDNS реализуется костылями через API managed DNS- сервисов (ну да, и в bind тоже есть)
  57. 57. Варианты автоматизации • Zone transfer via AXFR/NOTIFY: стандартный механизм, без Geo и прочих плюшек. Неудобный, поддерживается не всеми провайдерами • Reverse proxy: механизм, стандартный для HTTP, но не для DNS, удобный, вообще почти никем не поддерживается
  58. 58. Варианты автоматизации • Zone transfer via AXFR/NOTIFY: стандартный механизм, без Geo и прочих плюшек. Неудобный, поддерживается не всеми провайдерами • Reverse proxy: механизм, стандартный для HTTP, но не для DNS, удобный, вообще почти никем не поддерживается • API managed-сервисов: современные, удобные, у каждого сервиса свои особенные
  59. 59. Варианты автоматизации Here comes https://github.com/StackExchange/dnscontrol • Поддерживает целый ряд провайдеров «из коробки» через API • Активно развивается и поддерживается StackExchange
  60. 60. CI/CD для DNS Here comes https://github.com/StackExchange/dnscontrol • Поддерживает целый ряд провайдеров «из коробки» через API • Активно развивается и поддерживается StackExchange • Позволяет версионирование конфигурации через Git • Используйте вашу CI-систему для: • выкатывания изменений в DNS • отката • отслеживания истории • unit-тестирования DNS-конфигурации!
  61. 61. Итак • Множество надёжных, защищённых, распределённых managed- сервисов с полезными фичами • Оптимизации задержек в резолверах при использовании нескольких managed-сервисов • Средства автоматизации
  62. 62. Итак • Множество надёжных, защищённых, распределённых managed- сервисов с полезными фичами • Оптимизации задержек в резолверах при использовании нескольких managed-сервисов • Средства автоматизации Вдобавок, можно сосредоточить свои усилия на чём-то более полезном, чем попытки построить свой Route 53.
  63. 63. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие industry adopted scalable-решения 2. Использование нескольких managed-сервисов одновременно – несложно и снижает задержки
  64. 64. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие industry adopted scalable-решения 2. Использование нескольких managed-сервисов одновременно – несложно и снижает задержки 3.
  65. 65. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие industry adopted scalable-решения 2. Использование нескольких managed-сервисов одновременно – несложно и снижает задержки 3. Демоны.
  66. 66. Internet measurement • Мы уже встречались с этим термином ранее, когда говорили про RIPE Atlas • https://www.ripe.net/analyse/internet-measurements
  67. 67. Internet measurement • APNIC – один из 5 RIR, отвечающий за Азиатско-Тихоокеанский регион • APNIC DNS measurements
  68. 68. APNIC experiment • Пиксель 1x1: https://z.t1000.u953a6ea5.s1448087430.i5112.vxxxx.06ca0.z.dotnxdomain .net/pix.png • TTL: 1 s
  69. 69. 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 • Видно, что запрос шёл две секунды
  70. 70. 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
  71. 71. • Выдержка из лога: 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 Запрос шёл около месяца?!
  72. 72. Демоны • Запрос шёл около месяца? Нет, конечно! • Данные запросы – «зомби-запросы» – были дублями других, отработавших вовремя и успешно
  73. 73. Демоны • Запрос шёл около месяца? Нет, конечно! • Данные запросы – «зомби-запросы» – были дублями других, отработавших вовремя и успешно • IP-источники запросов – из сетей Amazon, Team Cymru, Blue Coat Systems • 16% запросов – «зомби»
  74. 74. Демоны • DNS – важная часть инфраструктуры Интернета и, по сути, отдельная индустрия. На этом уровне работает целая индустрия игроков, занимающихся анализом трафика и измерениями с одним только им известными целями • Уязвимость DNS к атакам, активность пользователей и особенности работы DNS-серверов не являются для них секретом • Хорошая идея – предоставить обслуживание DNS компаниям, которые зарабатывают на этом и в курсе актуальных угроз
  75. 75. Три причины не размещать DNS на своей инфраструктуре 1. Отсутствие industry adopted scalable-решения 2. Использование нескольких managed-сервисов одновременно – несложно и снижает задержки 3. Демоны! Спасибо!
  76. 76. 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 • Ещё можно рассказать, как строить резолвер для внутренних сервисов ]

×