Source
The following code repositories are available. See the Examples page for example dnstap usage.
dnstap.pb
This is the Protocol Buffers schema defining the layout of dnstap payloads. Use this if you want to process dnstap payloads in a programming language with protobuf support, or if you want to extend the dnstap schema to support new event types. It is not needed otherwise.
$ git clone https://github.com/dnstap/dnstap.pb.git
$ cd dnstap.pb
$ protoc-c --c_out=. dnstap.proto
$ protoc --cpp_out=. dnstap.proto
$ protoc --python_out=. dnstap.proto
$ protoc --go_out=. dnstap.proto
fstrm
This is fstrm, a Frame Streams implementation in C. It is the transport used for dnstap software written in C.
$ git clone https://github.com/farsightsec/fstrm.git
$ cd fstrm && ./autogen.sh && ./configure && make && sudo make install
protobuf-c
This is protobuf-c, a Protocol Buffers implementation in C. It is the encoder used for dnstap software written in C. It requires that protobuf be installed first.
$ git clone https://github.com/protobuf-c/protobuf-c.git
$ cd protobuf-c && ./autogen.sh && ./configure && make && sudo make install
Unbound with dnstap support
NLnet Labs' Unbound recursive DNS server supports dnstap as of version 1.5.0, but it must be explicitly enabled at build time.
Building Unbound with dnstap support requires that the fstrm and protobuf-c libraries be installed first.
Two new ./configure arguments have been added: --enable-dnstap to build with dnstap support, and --with-dnstap-socket-path to set the default dnstap socket path.
$ wget https://www.unbound.net/downloads/unbound-latest.tar.gz
$ tar xf unbound-latest.tar.gz
$ cd unbound-1.*
$ ./configure --enable-dnstap && make && sudo make install
golang-dnstap
This is the Go language library for working with dnstap sockets, log files, and message payloads. It includes a command-line capture tool, dnstap.
$ go get -u -v github.com/dnstap/golang-dnstap
$ go get -u -v github.com/dnstap/golang-dnstap/dnstap
golang-framestream
This is the Go language library for working with Frame Streams. It is a dependency of golang-dnstap.
$ go get -u -v github.com/farsightsec/golang-framestream