Getting the Packages
DNS TAPIR provides three packages for an Edge installation:
tapir-pop
, tapir-edm
and tapir-cli
. They are built using Fedora's
public Copr instance with the @dnstapir group.
Currently, packages are being built for EPEL 10, EPEL 9, Fedora 42 and
OpenSUSE Leap 15.6.
Packages in the @dnstapir/edge-testing repo are signed with this PGP key:
07FC 9787 0134 6ED4 522A 17E7 2C4D 4FAC 02CF 0AC2
Packaging code lives side-by-side with the source code in the respecive repos:
- https://github.com/dnstapir/pop/tree/main/rpm
- https://github.com/dnstapir/edm/tree/main/rpm
- https://github.com/dnstapir/cli/tree/main/rpm
Enable the repositories in your package manager:
dnf
dnf copr enable @dnstapir/edge-testing
yum
TODO
zypper
TODO
And install them:
dnf
TODO
sudo dnf install tapir-pop tapir-cli tapir-edm
yum
TODO
zypper
TODO
Managing permissions
Three system users, tapir-pop
, tapir-edm
and tapir-renew
,
and a group, dnstapir
, will have been created. Add your administrator
user to this group for easier bootstrapping and maintenance:
sudo usermod -a -G dnstapir <USERNAME>
Log out and back in and make sure the new group membership is in effect before proceeding.
Enrolling with the DNS TAPIR Node Manager
To connect with DNS TAPIR Core, an Edge node needs to be enrolled. You should have received enrollments credentials from a DNS TAPIR representative on a trusted out-of-band channel. They will look something like the following:
{
"name":"enroll-example.test.dnstapir.se",
"key":{
"kty":"OKP",
"kid":"123456789012345678901234",
"alg":"EdDSA",
"crv":"Ed25519",
"x":"ABCD_EFGHIJKLMNO_PQRSTUVW_XYZ123456789_12345",
"d":"abcdefghijklmno_pqrstuvwxyz_123456789012345"
},
"nodeman_url":"https://nodeman.test.dnstapir.se/"
}
Store the credentials in a file on the node that is to be enrolled. Then run:
sudo -g dnstapir tapir-cli --standalone enroll --enroll-credentials <PATH TO ENROLL CREDS>
The reason for running with sudo -g dnstapir
is that, apart from
exchanging cryptographic material with DNS TAPIR Core, the above
enrollment command also generates a number of config files under
/etc/dnstapir
(by default). They need to have dnstapir
as the
group owner so that they can be used by the three system users
mentioned before.
Edits to the Configuration Boilerplate
The configuration generated in the enrollment step contains sensible
defaults for most deployments. However, some final touches need to be
made before it can be properly integrated with a recursive resolver and
with DNS TAPIR Core. By default, these files will be generated under
/etc/dnstapir
. This guide uses the default.
pop-outputs.yaml
Edit this file where annotated (1 location) with the destination to which POP will be sending DNS NOTIFY messages about changes to the RPZ zone it has generated based on the observations from Core and on the local policies.
tapir-pop.yaml
Edit this file where annotated (1 location) with the interface on which POP will listen to incoming zone transfer requests for the RPZ zone it has generated.
tapir-edm.toml
Edit this file where annotated (2 locations) with a strong secret/password and a DNSTAP interface. The secret is used when pseudonymizing the recursive traffic with Crypto-PAn. The DNSTAP interface is the IP + port where EDM listens for DNSTAP traffic from the recursive resolver.
Edge services
In addition to a recursive resolver, an Edge installation consists of three services.
tapir-pop
The tapir-pop
service is provided by the tapir-pop
package. It
consists of a daemon process that communicates with a DNS TAPIR Core
instance over MQTT and with a recursive resolver using zone transfers.
It receives observations about domain names over MQTT and, based on a
locally configured policy, produces an RPZ zone which it transfers to
a recursive resolver.
tapir-renew
The tapir-renew
service is installed by the tapir-cli
package. It
automates the process of renewing mTLS certificates (used to secure the
MQTT connection) by issuing tapir-cli
commands on a systemd timer.
tapir-edm
The tapir-edm
service is installed by the tapir-edm
package. It
consists of a daemon process that communicates with a recursive
resolver using DNSTAP and a DNS TAPIR Core instance over MQTT and
HTTPS. It receives DNSTAP data from the resolver, which it anonymizes
and sends to the Core instance in aggregates using HTTPS. Certain
events, such as domain names being encountered for the first time, is
sent over MQTT to the same Core instance.
Start the services
sudo systemctl start tapir-pop
sudo systemctl start tapir-edm
sudo systemctl start tapir-renew
Enable the services
sudo systemctl enable tapir-pop
sudo systemctl enable tapir-edm
sudo systemctl enable tapir-renew
Verification
- Verify that TAPIR Core receives histograms from TAPIR EDM: ....
- Verify that TAPIR POP receives observations from TAPIR Core: ....