Our DNSaaS service uses DNS-over-HTTPS (DoH) with token-based authentication for maximum privacy and security. This guide will help you configure your Ubuntu system to use this service for all DNS resolution system-wide.
Service
Endpoint
Authentication
Primary DNS
https://dns1.oss.co.za/xxxxx
Token in URL path
Protocol
DNS-over-HTTPS (DoH) • Port 443 • TLS 1.3
Proxy
https_dns_proxy listening on 127.0.0.1:53
Fallback
โ 1.1.1.1 • โ 8.8.8.8 (if service unreachable)
โ Verified Working
This configuration has been tested and confirmed working on Ubuntu 22.04 LTS and 24.04 LTS with https_dns_proxy.
โ Prerequisites
Ubuntu 22.04 LTS or 24.04 LTS
Your token:token_xxxxxxxxxx (provided by DNSaaS administrator)
Administrative (sudo) access
Internet connectivity
About 20 MB of free disk space
๐ก Token Format
Your token is provided by the DNSaaS administrator. It looks like: token_xxxxxxxxxx. Keep it secure!
๐ One-Click Install Recommended
The quickest way to get started. Copy and paste these commands to install and configure everything automatically.
โจ What This Does
Installs build dependencies and https_dns_proxy
Configures the proxy with your token
Sets up a systemd service for persistence
Configures system DNS to use the proxy
Tests the installation
# Download and run the installer from GitHub # Replace TOKEN with your actual token TOKEN="token_testclient123"# โ ๏ธ Change this!
# Clone and build
git clone https://github.com/aarond10/https_dns_proxy
cd https_dns_proxy
cmake .
make
sudo make install
3 Configure the Proxy
Create the configuration with your token. Replace token_testclient123 with your actual token.
# Create the service file
sudo tee /etc/systemd/system/https_dns_proxy.service << 'EOF'
[Unit]
Description=DNSaaS HTTPS DNS Proxy
After=network-online.target
Wants=network-online.target
Before=nss-lookup.target
[Service]
Type=simple # โ ๏ธ Replace token_testclient123 with YOUR token
ExecStart=/usr/local/bin/https_dns_proxy -a 127.0.0.1 -p 53 \
-r https://dns1.oss.co.za/testclient123 \
-b 1.1.1.1,8.8.8.8
Restart=always
RestartSec=10
User=root
Group=root
[Install]
WantedBy=multi-user.target
EOF
โ ๏ธ Important
Replace token_testclient123 with your actual token in the configuration above.
4 Start the Service
# Enable and start the service
sudo systemctl daemon-reload
sudo systemctl enable https_dns_proxy
sudo systemctl start https_dns_proxy
# Verify it's running
sudo systemctl status https_dns_proxy --no-pager
5 Configure System DNS
# Set system DNS to use the proxy
INTERFACE=$(ip route | grep default | awk '{print $5}' | head -1)
sudo resolvectl dns $INTERFACE 127.0.0.1
sudo resolvectl domain $INTERFACE ~.
Clean Install: Uninstall first, then install fresh
โ ๏ธ Important
Always use the raw URL (raw.githubusercontent.com) when downloading scripts, not the GitHub web interface URL (github.com/.../blob/...).
๐ฏ Summary
๐ง https_dns_proxy provides system-wide DoH with token authentication
โ Working endpoint: https://dns1.oss.co.za/xxxxx
๐ All DNS queries are encrypted via DoH (port 443) with TLS 1.3
โก The proxy listens on 127.0.0.1:53 for system DNS
๐ Easily toggle on/off with systemd commands
๐ก๏ธ Fallback to 1.1.1.1 and 8.8.8.8 if the service is unreachable