Measuring DNS quality of experience from public resolvers.
Many smaller ISPs, end users, and small businesses leverage public resolvers for DNS recursion. While this will likely work without issue, there are several reasons that this can prove to be problematic. First, it surrenders private, personally identifiable information (PII) to an external, unrelated entity. Second, the use of a 3rd party resolver outside of your first hop provider introduces the likelihood of unnecessaary and uncontrollable issues with the upstream path. This can, under the right circumstances, affect performance and perception of quality.
This project in no way aims at discouraging the use of third party resolvers. Instead, it aims to track their DNS resolution RTT using very basic, off the shelf tools like smokeping and dig in order to measure the recursion time from many locations around the global internet.
Why not use RIPE ATLAS? Well, I have roughly 2 million credits and wanted to leverage them. Unfortunately, the limits of what can be done to a single DNS resolver are fairly limiting, and when that is multipled by 16, the credits go pretty fast. If there is a smarter way to accomplish this really specific task, I'm happy to hear about it.
You probably came here for the graphs.
Basic install instructions for Ubuntu 18
apt update
apt install -y smokeping pwgen
vi /etc/default/smokeping
MODE=slave
MASTER_URL=https://dns.qosbox.com/cgi-bin/smokeping.cgi
SHARED_SECRET=/etc/smokeping/slavesecrets.conf
SLAVE_NAME=
cd /etc/smokeping/
sudo touch slavesecrets.conf
echo `pwgen 16` | sudo tee slavesecrets.conf
cat slavesecrets.conf ## Write this strong down - it is your unique secret
sudo chmod 0400 slavesecrets.conf
sudo chown smokeping:root slavesecrets.conf
vi /etc/smokeping/config.d/pathnames
Comment out Sendmail
#sendmail = /usr/sbin/sendmail
vi /etc/init.d/smokeping
Change the following variables (comment out the first two, paste in the second two)
#MODE=master
#DAEMON_ARGS="--config=$CONFIG"
MODE=slave
DAEMON_ARGS="--master-url=https://dns.qosbox.com/smokeping.cgi"
Restart the daemon
systemctl daemon-reload
service smokeping restart
If you have a network that is not represented here and would like to participate, Email SLAVE_NAME= and the secret from slavesecrets.conf to Email Me.