mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-03 18:53:13 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			146 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" Generated by Mmark Markdown Processer - mmark.miek.nl
 | 
						|
.TH "COREDNS-DNSTAP" 7 "December 2019" "CoreDNS" "CoreDNS Plugins"
 | 
						|
 | 
						|
.SH "NAME"
 | 
						|
.PP
 | 
						|
\fIdnstap\fP - enables logging to dnstap.
 | 
						|
 | 
						|
.SH "DESCRIPTION"
 | 
						|
.PP
 | 
						|
dnstap is a flexible, structured binary log format for DNS software; see http://dnstap.info
 | 
						|
\[la]http://dnstap.info\[ra]. With this
 | 
						|
plugin you make CoreDNS output dnstap logging.
 | 
						|
 | 
						|
.PP
 | 
						|
Note that there is an internal buffer, so expect at least 13 requests before the server sends its
 | 
						|
dnstap messages to the socket.
 | 
						|
 | 
						|
.SH "SYNTAX"
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
 | 
						|
.nf
 | 
						|
dnstap SOCKET [full]
 | 
						|
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
 | 
						|
.IP \(bu 4
 | 
						|
\fBSOCKET\fP is the socket path supplied to the dnstap command line tool.
 | 
						|
.IP \(bu 4
 | 
						|
\fB\fCfull\fR to include the wire-format DNS message.
 | 
						|
 | 
						|
 | 
						|
.SH "EXAMPLES"
 | 
						|
.PP
 | 
						|
Log information about client requests and responses to \fI/tmp/dnstap.sock\fP.
 | 
						|
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
 | 
						|
.nf
 | 
						|
dnstap /tmp/dnstap.sock
 | 
						|
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
 | 
						|
.PP
 | 
						|
Log information including the wire-format DNS message about client requests and responses to \fI/tmp/dnstap.sock\fP.
 | 
						|
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
 | 
						|
.nf
 | 
						|
dnstap unix:///tmp/dnstap.sock full
 | 
						|
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
 | 
						|
.PP
 | 
						|
Log to a remote endpoint.
 | 
						|
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
 | 
						|
.nf
 | 
						|
dnstap tcp://127.0.0.1:6000 full
 | 
						|
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
 | 
						|
.SH "COMMAND LINE TOOL"
 | 
						|
.PP
 | 
						|
Dnstap 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
 | 
						|
\[la]https://github.com/dnstap/golang-dnstap\[ra]. It's written in Go.
 | 
						|
 | 
						|
.PP
 | 
						|
The following command listens on the given socket and decodes messages to stdout.
 | 
						|
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
 | 
						|
.nf
 | 
						|
$ dnstap \-u /tmp/dnstap.sock
 | 
						|
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
 | 
						|
.PP
 | 
						|
The following command listens on the given socket and saves message payloads to a binary dnstap-format log file.
 | 
						|
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
 | 
						|
.nf
 | 
						|
$ dnstap \-u /tmp/dnstap.sock \-w /tmp/test.dnstap
 | 
						|
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
 | 
						|
.PP
 | 
						|
Listen for dnstap messages on port 6000.
 | 
						|
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
 | 
						|
.nf
 | 
						|
$ dnstap \-l 127.0.0.1:6000
 | 
						|
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
 | 
						|
.SH "USING DNSTAP IN YOUR PLUGIN"
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
 | 
						|
.nf
 | 
						|
import (
 | 
						|
    "github.com/coredns/coredns/plugin/dnstap"
 | 
						|
    "github.com/coredns/coredns/plugin/dnstap/msg"
 | 
						|
)
 | 
						|
 | 
						|
func (h Dnstap) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
 | 
						|
    // log client query to Dnstap
 | 
						|
    if t := dnstap.TapperFromContext(ctx); t != nil {
 | 
						|
        b := msg.New().Time(time.Now()).Addr(w.RemoteAddr())
 | 
						|
        if t.Pack() {
 | 
						|
            b.Msg(r)
 | 
						|
        }
 | 
						|
        if m, err := b.ToClientQuery(); err == nil {
 | 
						|
            t.TapMessage(m)
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    // ...
 | 
						|
}
 | 
						|
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
 | 
						|
.SH "SEE ALSO"
 | 
						|
.PP
 | 
						|
dnstap.info
 | 
						|
\[la]http://dnstap.info\[ra].
 | 
						|
 |