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

Post on 21-Jan-2018

133 views 8 download

transcript

Масштабируя DNSАртём Гавриченков<ag@qrator.net>

DNSinanutshell

• 1983г.:(int32)*host_str;

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing• ASNpolicies

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing• ASNpolicies• AAAA

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing• ASNpolicies• AAAA• failover

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing• ASNpolicies• AAAA• failover• DNSSEC

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing• ASNpolicies• AAAA• failover• DNSSEC• EDNS0• DANE• CAA

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing• ASNpolicies• AAAA• failover• DNSSEC• EDNS0• DANE• CAA

ВариантыработысDNS

• Собственнаяинфраструктура• Managed-решение

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

DNSbenchmarks2013

DNSbenchmarks2013

DNSbenchmarks2013

DNSbenchmarks2013

DNSbenchmarks2013

DNSbenchmarks:4годаспустя2017

•HTTP:Apache Nginx•DNS: BIND

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

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

НаскольковообщеважнаscalabilityвDNS?

DNSlookup

DNSlookup

DNSlookupximaera@nostromo:~$ sudo tcpdump -qni any tcp > /dev/nulltcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes^C792 packets captured794 packets received by filter0 packets dropped by kernelximaera@nostromo:~$ sudo tcpdump -qni any port 53 > /dev/nulltcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes^C104 packets captured156 packets received by filter0 packets dropped by kernelximaera@nostromo:~$

DNS10: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/0highload.ru. A 178.248.233.16(47)

Однако.

Однако.

• ВызовыDNS-инфраструктуры:• Latencytasks:геобалансировка

АнализбазыMaxMind

RIPEAtlas:aplatform forInternetmeasurement.https://atlas.ripe.net/

АнализбазыMaxMind

RIPEAtlas:aplatformforInternetmeasurement.• MaxMind Country DBaccuracyon7000Atlasprobes,June2017:99%• Свероятностью1/100MaxMind ошибаетсяприопределениистраны наточкахAtlas

• Нашеисследование:ошибкадостигает4,6%• ДляCityDB,LiteDB результатыкудахуже

АнализбазыMaxMind

RIPEAtlas:aplatformforInternetmeasurement.• MaxMind Country DBaccuracyon7000Atlasprobes,June2017:99%• Свероятностью1/100MaxMind ошибаетсяприопределениистраны наточках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/

АнализбазыMaxMind

RIPEAtlas:aplatformforInternetmeasurement.• MaxMind Country DBaccuracyon7000Atlasprobes,June2017:99%• Свероятностью1/100MaxMind ошибаетсяприопределениистраны наточкахAtlas

• Нашеисследование:ошибкадостигает4,6%• ДляCityDB,LiteDB результатыкудахуже• Самоеглавное:вИнтернетенетгеографии,естьтопология

Топологическоетаргетирование

https://ns1.com/solutions/technical-solutions/filter-chain

• FiltersarelikelittleprogramsthatruninlineforeveryDNSquery.• TheyareattacheddirectlytoRFC-compliantDNSrecords

Однако.

• ВызовыDNS-инфраструктуры:• Latencytasks:геобалансировка,топологическаябалансировка

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

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

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

Однако.

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

Failover,TTL120s

Однако.

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

Однако.

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

=>требуетсяподдерживаемоевысокопроизводительноерешение,своевременнореализующеетребуемуюфункциональность

Однако.

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

• DDoS-атаки

Однако.

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

• DDoS-атаки• Требуетсяanycast• Требуетсязащита

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

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

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

Дажесanycast’ом– тысячиих!• Dyn• NS1• Route53• Name.com• AzureDNS• GoogleCloudDNS• Qrator• Cloudflare

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

Диверсификация!

SRTT:SmoothedRoundTripTime

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

SRTT

SRTT

SRTT

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

• Диверсификация!

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

• Диверсификация!• API!

Минуткаболи

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

Минуткаболи

• IETF:организация,занимающаясяутверждениемстандартовпротоколов(RFC)• Рабочаягруппаdnsop (DNSoperations):14активныхчерновиковRFC• IPv6• SpecialusedomainnamesandTLDs• Packetcaptureandwireformats• Terminologyandsecurityconsiderations

Минуткаболи

• IETF:организация,занимающаясяутверждениемстандартовпротоколов(RFC)• Рабочаягруппаdnsop (DNSoperations):14активныхчерновиковRFC• IPv6• SpecialusedomainnamesandTLDs• Packetcaptureandwireformats• Terminologyandsecurityconsiderations

• GeoDNS?No,sorry,it’snotthatimportant!

Минуткаболи

• IETF:организация,занимающаясяутверждениемстандартовпротоколов(RFC)• GeoDNS?No,sorry,it’snotthatimportant!

=>GeoDNS реализуетсякостылямичерезAPImanagedDNS-сервисов(нуда,ивbindтожеесть)

Вариантыавтоматизации

• ZonetransferviaAXFR/NOTIFY:стандартныймеханизм,безGeoипрочихплюшек.Неудобный,поддерживаетсяневсемипровайдерами• Reverseproxy:механизм,стандартныйдляHTTP,нонедляDNS,удобный,вообщепочтиникемнеподдерживается

Вариантыавтоматизации

• ZonetransferviaAXFR/NOTIFY:стандартныймеханизм,безGeoипрочихплюшек.Неудобный,поддерживаетсяневсемипровайдерами• Reverseproxy:механизм,стандартныйдляHTTP,нонедляDNS,удобный,вообщепочтиникемнеподдерживается• APImanaged-сервисов:современные,удобные,укаждогосервисасвоиособенные

Вариантыавтоматизации

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

CI/CDдляDNS

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

Итак

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

Итак

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

Вдобавок,можнососредоточитьсвоиусилияначём-тоболееполезном,чемпопыткипостроитьсвойRoute53.

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

несложноиснижаетзадержки

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

несложноиснижаетзадержки3.

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

несложноиснижаетзадержки3. Демоны.

Internetmeasurement

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

Internetmeasurement

• APNIC– одиниз5RIR,отвечающийзаАзиатско-Тихоокеанскийрегион• APNICDNSmeasurements

APNICexperiment

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

APNICexperiment

• Пиксель1x1:https://z.t1000.u953a6ea5.s1448087430.i5112.vxxxx.06ca0.z.dotnxdomain.net/pix.png• TTL:1s• Примеризлога:1450151673.887 15-Dec-2015 query: z.t1000.u953a6ea5.s1450151671.i5112.vxxxx.06ca0.z.dotnxdomain.net A• Видно,чтозапросшёлдвесекунды

APNICexperiment

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

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

APNICexperiment

• FROM_UNIXTIME(1450151673)=>2015-12-15• FROM_UNIXTIME(1447703026)=>2015-11-16

Запросшёлоколомесяца?!

Демоны

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

Демоны

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

Демоны

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

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

несложноиснижаетзадержки3. Демоны!

Спасибо!

Misc

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

]