d4-goclient is a D4 project client (sensor) implementing the D4 encapsulation protocol.
The client can be used on different targets and architectures to collect network capture, logs, specific network monitoring and send it back to a D4 server.
For more information about the D4 project.
Fetch d4-goclient code and dependencies
go get github.com/D4-project/d4-goclient
See https://github.com/D4-project/d4-core/tree/master/server $IP_SRV being the d4-server’s address, $PORT its listening port
Part of the client configuration can be stored in folder containing the following files:
If source is set to d4server, then one also 2 additional files:
-c string configuration directory -cc Check TLS certificate against rootCA.crt -ce Set to True, true, TRUE, 1, or t to enable TLS on network destination (default true) -cka duration Keep Alive time human format, 0 to disable (default 30s) -ct duration Set timeout in human format -rl duration Rate limiter: time in human format before retry after EOF (default 200ms) -rt duration Time in human format before retry after connection failure, set to 0 to exit on failure (default 30s) -v Set to True, true, TRUE, 1, or t to enable verbose output on stdout
In the followin examples, destination is set to stdout.
cat /proc/cpuinfo | ./d4-goclient -c conf.sample/ | socat - OPENSSL-CONNECT:$IP_SRV:$PORT,verify=0
$IP being the monitoring computer ip
tcpdump not dst $IP and not src $IP -w - | ./d4-goclient -c conf.sample/ | socat - OPENSSL-CONNECT:$IP_SRV:$PORT,verify=0
Add two files to you configuration folder:
redis_d4contains the location of the source d4’s redis server database, for instance
redis_queuecontains the queue to forward to the other D4 server, for instance