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

Scalable DNS

Scalable DNS

Artyom "Töma" Gavrichenkov

November 08, 2017
Tweet

More Decks by Artyom "Töma" Gavrichenkov

Other Decks in Technology

Transcript

  1. Масштабируя
    DNS
    Артём Гавриченков

    View Slide

  2. DNS in a nutshell
    • 1983 г.:
    (int32)*host_str;

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. Варианты работы с DNS
    • Собственная инфраструктура
    • Managed-решение

    View Slide

  12. Три причины не размещать DNS
    на своей инфраструктуре

    View Slide

  13. DNS benchmarks
    2013

    View Slide

  14. DNS benchmarks
    2013

    View Slide

  15. DNS benchmarks
    2013

    View Slide

  16. DNS benchmarks
    2013

    View Slide

  17. DNS benchmarks
    2013

    View Slide

  18. DNS benchmarks: 4 года спустя
    2017

    View Slide

  19. View Slide

  20. View Slide

  21. •HTTP: Apache Nginx
    •DNS: BIND

    View Slide

  22. Три причины не размещать DNS
    на своей инфраструктуре
    1. Отсутствие industry adopted scalable-решения

    View Slide

  23. Три причины не размещать DNS
    на своей инфраструктуре
    1. Отсутствие industry adopted scalable-решения
    Насколько вообще важна scalability в DNS?

    View Slide

  24. DNS lookup

    View Slide

  25. DNS lookup

    View Slide

  26. 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:~$

    View Slide

  27. 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)

    View Slide

  28. Однако.

    View Slide

  29. Однако.
    • Вызовы DNS-инфраструктуры:
    • Latency tasks: геобалансировка

    View Slide

  30. Анализ базы MaxMind
    RIPE Atlas: a platform for Internet measurement.
    https://atlas.ripe.net/

    View Slide

  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 результаты куда хуже

    View Slide

  32. Анализ базы 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/

    View Slide

  33. Анализ базы 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 результаты куда хуже
    • Самое главное: в Интернете нет географии, есть топология

    View Slide

  34. Топологическое таргетирование
    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

    View Slide

  35. Однако.
    • Вызовы DNS-инфраструктуры:
    • Latency tasks: геобалансировка, топологическая балансировка

    View Slide

  36. Динамическая конфигурация

    View Slide

  37. Динамическая конфигурация
    Параметры DNS – это уже не статический конфиг, это API в т.ч. для
    систем управления конфигурациями и приложений:
    • Provisioning
    • Stats
    • Policy management

    View Slide

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

    View Slide

  39. Failover, TTL 120s

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  45. Как выбрать внешнего поставщика?

    View Slide

  46. Как выбрать внешнего поставщика?
    Даже с anycast’ом – тысячи их!
    • Dyn
    • NS1
    • Route 53
    • Name.com
    • Azure DNS
    • Google Cloud DNS
    • Qrator
    • Cloudflare

    View Slide

  47. Как выбрать внешнего поставщика?
    Диверсификация!

    View Slide

  48. SRTT: Smoothed Round Trip Time

    View Slide

  49. “Ящик с усами”

    View Slide

  50. SRTT

    View Slide

  51. SRTT

    View Slide

  52. SRTT

    View Slide

  53. Как выбрать внешнего поставщика?
    • Диверсификация!

    View Slide

  54. Как выбрать внешнего поставщика?
    • Диверсификация!
    • API!

    View Slide

  55. Минутка боли
    • IETF: организация, занимающаяся утверждением стандартов
    протоколов (RFC)
    • Рабочая группа dnsop (DNS operations):
    14 активных черновиков RFC

    View Slide

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

    View Slide

  57. Минутка боли
    • 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!

    View Slide

  58. Минутка боли
    • IETF: организация, занимающаяся утверждением стандартов
    протоколов (RFC)
    • GeoDNS? No, sorry, it’s not that important!
    => GeoDNS реализуется костылями через API managed DNS-
    сервисов
    (ну да, и в bind тоже есть)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  62. CI/CD для DNS
    Here comes https://github.com/StackExchange/dnscontrol
    • Поддерживает целый ряд провайдеров «из коробки» через API
    • Активно развивается и поддерживается StackExchange
    • Позволяет версионирование конфигурации через Git
    • Используйте вашу CI-систему для:
    • выкатывания изменений в DNS
    • отката
    • отслеживания истории
    • unit-тестирования DNS-конфигурации!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  68. Internet measurement
    • Мы уже встречались с этим термином ранее, когда говорили про
    RIPE Atlas
    • https://www.ripe.net/analyse/internet-measurements

    View Slide

  69. Internet measurement
    • APNIC – один из 5 RIR, отвечающий за Азиатско-Тихоокеанский
    регион
    • APNIC DNS measurements

    View Slide

  70. APNIC experiment
    • Пиксель 1x1:
    https://z.t1000.u953a6ea5.s1448087430.i5112.vxxxx.06ca0.z.dotnxdomain
    .net/pix.png
    • TTL: 1 s

    View Slide

  71. 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
    • Видно, что запрос шёл две секунды

    View Slide

  72. 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

    View Slide

  73. • Выдержка из лога:
    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
    Запрос шёл около месяца?!

    View Slide

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

    View Slide

  75. Демоны
    • Запрос шёл около месяца? Нет, конечно!
    • Данные запросы – «зомби-запросы» – были дублями других,
    отработавших вовремя и успешно
    • IP-источники запросов – из сетей Amazon, Team Cymru, Blue Coat
    Systems
    • 16% запросов – «зомби»

    View Slide

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

    View Slide

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

    View Slide

  78. 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
    • Ещё можно рассказать, как строить резолвер для внутренних
    сервисов
    ]

    View Slide