dnstap ¡ (brief ¡intro ¡and ¡update) ¡ Merike ¡Kaeo ¡ merike@interne6den6ty.com ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
dnstap ¡– ¡What ¡is ¡it? ¡ • High ¡speed ¡DNS ¡logging ¡without ¡packet ¡capture ¡ ¡ – Encoding ¡uses ¡Protocol ¡Buffers ¡ ¡ • Binary ¡clean ¡ • Efficient ¡encoding ¡ • Extendable ¡ • Implementa6ons ¡available ¡for ¡many ¡programming ¡languages ¡ • Schema ¡file: ¡ – hVps://github.com/dnstap/dnstab.pb/blob/master/ dnstap.proto ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
Why ¡create ¡dnstap? ¡ • Frustra6on ¡with ¡certain ¡limita6ons ¡in ¡packet ¡ capture ¡approach ¡to ¡passive ¡DNS ¡replica6on ¡ • Issues ¡found ¡in ¡DNS-‑intensive ¡analysis ¡of ¡pcap ¡ data ¡ – Bailiwick ¡reconstruc6on ¡ ¡ – UDP ¡fragment ¡reassembly ¡ – UDP ¡checksums ¡ – TCP ¡stream ¡reassembly ¡ – DNS ¡query/response ¡matching ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
Two ¡specific ¡use ¡cases ¡ • Query ¡Logging ¡ – Make ¡it ¡faster ¡by ¡elimina6ng ¡boVlenecks ¡like ¡text ¡ forma^ng ¡and ¡synchronous ¡I/O ¡ • Passive ¡DNS ¡replica6on ¡ – Avoid ¡complicated ¡state ¡reconstruc6on ¡issues ¡by ¡ capturing ¡messages ¡instead ¡of ¡packets ¡ • Able ¡to ¡support ¡both ¡use ¡cases ¡with ¡the ¡same ¡ generic ¡mechanism ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
dnstap ¡– ¡Some ¡of ¡the ¡how ¡ • Add ¡a ¡lightweight ¡message ¡duplica6on ¡facility ¡ directly ¡into ¡the ¡DNS ¡server ¡ – Verba6m ¡wire-‑format ¡DNS ¡messages ¡with ¡context ¡ • Use ¡a ¡fast ¡logging ¡implementa6on ¡that ¡ doesn’t ¡degrade ¡performance ¡ – Circular ¡queues ¡ – Asynchronous, ¡buffered ¡I/O ¡ – Prefer ¡to ¡ drop ¡log ¡payloads ¡instead ¡of ¡ blocking ¡ the ¡server ¡under ¡load ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
dnstap ¡– ¡Message ¡Types ¡ • Present ¡ • Prospec6ve ¡ – Stub ¡{Q,R} ¡ – RRL ¡bucket ¡{Start,End} ¡ – Authorita6ve ¡{Q,R} ¡ – Zone ¡Transfer ¡in ¡{S,E} ¡ – Resolver ¡{Q,R} ¡ – Zone ¡Transfer ¡out ¡{S,E} ¡ – Client ¡{Q,R} ¡ – Cache ¡Purge ¡(LRU) ¡ – Forwarder ¡{Q,R} ¡ – Cache ¡Expiry ¡(TTL) ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
dnstap-‑enabled ¡DNS ¡server ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
dnstap ¡Components ¡ • Flexible, ¡structured ¡log ¡format ¡for ¡DNS ¡ sofware ¡ • Helper ¡libraries ¡for ¡adding ¡support ¡to ¡DNS ¡ sofware ¡ • Patch ¡sets ¡that ¡integrate ¡dnstap ¡support ¡into ¡ exis6ng ¡DNS ¡sofware ¡ • Capture ¡tools ¡for ¡receiving ¡dnstap ¡messages ¡ from ¡dnstap-‑enabled ¡sofware ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
Advantages ¡of ¡dnstap ¡ ¡ ¡ • Extensible ¡and ¡can ¡offer ¡mechanism ¡into ¡more ¡ detailed ¡nameserver ¡instrumenta6on ¡ ¡ – A ¡way ¡to ¡easily ¡audit ¡the ¡records ¡that ¡have ¡been ¡ received ¡ and ¡accepted ¡ by ¡a ¡recursive ¡DNS ¡server ¡into ¡ its ¡cache ¡ – Visibility ¡into ¡a ¡new ¡NS ¡RRset ¡overwri6ng ¡an ¡already ¡ exis6ng ¡NS ¡RRset ¡for ¡the ¡same ¡name ¡ • Vendor ¡Neutral ¡ – Implemen6ng ¡dnstap ¡support ¡in ¡mul6ple ¡pieces ¡of ¡ DNS ¡sofware ¡at ¡once ¡to ¡make ¡sure ¡the ¡same ¡dnstap ¡ message ¡means ¡the ¡same ¡thing ¡regardless ¡of ¡which ¡ sofware ¡generated ¡it. ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
Con6nued ¡Outreach ¡ • Speaking ¡with ¡varying ¡DNS ¡vendors ¡to ¡gauge ¡ recep6veness ¡to ¡integrate ¡dnstap ¡support ¡into ¡ their ¡sofware ¡ • Ini6al ¡proof ¡of ¡concept ¡with ¡Unbound ¡ • CZ.NIC ¡has ¡already ¡implemented ¡dnstap ¡ support ¡in ¡the ¡knot ¡development ¡tree ¡ – hVps://gitlab.labs.nic.cz/labs/knot ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
Feedback ¡Wanted ¡ • DNS ¡operators ¡interested ¡in ¡running ¡their ¡DNS ¡ servers ¡with ¡dnstap ¡features ¡enabled ¡ • DNS ¡implementors ¡interested ¡in ¡adding ¡ dnstap ¡features ¡to ¡their ¡implementa6ons ¡ • DNS ¡researchers ¡interested ¡in ¡consuming ¡ dnstap-‑formaVed ¡data ¡ • All ¡feedback ¡will ¡be ¡used ¡to ¡help ¡set ¡ development ¡priori6es….. ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
Addi6onal ¡Informa6on ¡ • hVp://dnstap.info ¡[defini6ve ¡source] ¡ – dnstap.info/slides/dnstap_nanog60.pdf ¡ – dnstap.info/slides/dnstap_oarc2014_warsaw.pdf ¡ • Robert ¡Edmonds ¡(edmonds@fsi.io) ¡ NANOG61 ¡-‑ ¡DNS ¡Track ¡
Recommend
More recommend