Масштабируя dns / Артем Гавриченков (qrator labs)

78
Масштабируя DNS Артём Гавриченков <[email protected]>

Upload: ontico

Post on 21-Jan-2018

134 views

Category:

Engineering


8 download

TRANSCRIPT

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

Масштабируя DNSАртём Гавриченков<[email protected]>

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

DNSinanutshell

• 1983г.:(int32)*host_str;

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

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:

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

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing

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

DNSinanutshell

• 1983г.:(int32)*host_str;

• 1997-2017:• loadbalancing• geobalancing• ASNpolicies

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

DNSinanutshell

• 1983г.:(int32)*host_str;

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

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

DNSinanutshell

• 1983г.:(int32)*host_str;

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

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

DNSinanutshell

• 1983г.:(int32)*host_str;

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

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

DNSinanutshell

• 1983г.:(int32)*host_str;

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

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

DNSinanutshell

• 1983г.:(int32)*host_str;

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

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

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

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

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

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

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

DNSbenchmarks2013

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

DNSbenchmarks2013

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

DNSbenchmarks2013

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

DNSbenchmarks2013

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

DNSbenchmarks2013

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

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

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

•HTTP:Apache Nginx•DNS: BIND

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

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

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

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

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

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

DNSlookup

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

DNSlookup

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

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

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

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)

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

Однако.

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

Однако.

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

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

АнализбазыMaxMind

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

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

АнализбазыMaxMind

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

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

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

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

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

АнализбазыMaxMind

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

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

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

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

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

• FiltersarelikelittleprogramsthatruninlineforeveryDNSquery.• TheyareattacheddirectlytoRFC-compliantDNSrecords

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

Однако.

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

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

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

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

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

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

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

Однако.

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

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

Failover,TTL120s

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

Однако.

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

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

Однако.

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

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

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

Однако.

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

• DDoS-атаки

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

Однако.

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

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

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

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

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

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

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

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

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

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

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

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

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

SRTT:SmoothedRoundTripTime

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

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

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

SRTT

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

SRTT

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

SRTT

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

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

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

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

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

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

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

Минуткаболи

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

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

Минуткаболи

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

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

Минуткаболи

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

• GeoDNS?No,sorry,it’snotthatimportant!

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

Минуткаболи

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

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

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

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

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

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

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

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

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

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

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

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

CI/CDдляDNS

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

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

Итак

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

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

Итак

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

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

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

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

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

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

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

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

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

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

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

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

Internetmeasurement

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

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

Internetmeasurement

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

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

APNICexperiment

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

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

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

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

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

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

• Выдержкаизлога: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

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

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

Демоны

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

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

Демоны

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

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

Демоны

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

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

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

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

Спасибо!

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

Misc

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

]