Date post: | 21-Jan-2018 |
Category: |
Engineering |
Upload: | ontico |
View: | 133 times |
Download: | 8 times |
Масштабируя DNSАртём Гавриченков<[email protected]>
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• Ещёможнорассказать,какстроитьрезолвер длявнутреннихсервисов
]