|
NAMEdnstap - enables logging to dnstap.DESCRIPTIONdnstap is a flexible, structured binary log format for DNS software; see https://dnstap.info ⟨https://dnstap.info⟩. With this plugin you make CoreDNS output dnstap logging.Every message is sent to the socket as soon as it comes in, the dnstap plugin has a buffer of 10000 messages, above that number dnstap messages will be dropped (this is logged). SYNTAXdnstap SOCKET [full]
EXAMPLESLog information about client requests and responses to /tmp/dnstap.sock.dnstap /tmp/dnstap.sock Log information including the wire-format DNS message about client requests and responses to /tmp/dnstap.sock. dnstap unix:///tmp/dnstap.sock full Log to a remote endpoint. dnstap tcp://127.0.0.1:6000 full COMMAND LINE TOOLDnstap has a command line tool that can be used to inspect the logging. The tool can be found at Github: https://github.com/dnstap/golang-dnstap ⟨https://github.com/dnstap/golang-dnstap⟩. It's written in Go.The following command listens on the given socket and decodes messages to stdout. $ dnstap -u /tmp/dnstap.sock The following command listens on the given socket and saves message payloads to a binary dnstap-format log file. $ dnstap -u /tmp/dnstap.sock -w /tmp/test.dnstap Listen for dnstap messages on port 6000. $ dnstap -l 127.0.0.1:6000 USING DNSTAP IN YOUR PLUGINIn your setup function, check to see if the dnstap plugin is loaded:c.OnStartup(func() error { if taph := dnsserver.GetConfig(c).Handler("dnstap"); taph != nil { if tapPlugin, ok := taph.(dnstap.Dnstap); ok { f.tapPlugin = tapPlugin } } return nil }) And then in your plugin: func (x RandomPlugin) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { if tapPlugin != nil { q := new(msg.Msg) msg.SetQueryTime(q, time.Now()) msg.SetQueryAddress(q, w.RemoteAddr()) if tapPlugin.IncludeRawMessage { buf, _ := r.Pack() // r has been seen packed/unpacked before, this should not fail q.QueryMessage = buf } msg.SetType(q, tap.Message_CLIENT_QUERY) tapPlugin.TapMessage(q) } // ... } SEE ALSOThe website dnstap.info ⟨https://dnstap.info⟩ has info on the dnstap protocol. The forward plugin's dnstap.go uses dnstap to tap messages sent to an upstream.
Visit the GSP FreeBSD Man Page Interface. |