Setting Quad9 DNS on CachyOS — Using the Built-in DNS Changer
CachyOS ships with a built-in DNS configuration tool in CachyOS Hello (the welcome app). It’s one of those distro-specific quality-of-life features that makes Arch actually approachable for networking tasks.
Here’s what it does under the hood, and how to use it.
The Architecture
CachyOS Hello’s DNS changer uses three layers:
CachyOS Hello DNS Changer
↓
blocky (local DoH proxy, listens on 127.0.0.1:53000)
↓
systemd-resolved (system DNS resolver, stub on 127.0.0.53)
↓
NetworkManager (per-connection DNS config)
When you select a provider like Quad9 with DoH enabled:
- blocky starts as a local proxy — it receives DNS queries from systemd-resolved, wraps them in HTTPS (RFC 8484), and forwards to Quad9’s DoH endpoint
- systemd-resolved is configured to forward to blocky’s local address
- NetworkManager sets the per-connection DNS to point at systemd-resolved’s stub
This means all DNS traffic from your machine is encrypted end-to-end, bypassing your ISP’s resolvers entirely.
What Providers Are Available
CachyOS Hello includes 17 DNS providers out of the box:
| Provider | DoH/DoT | Jurisdiction |
|---|---|---|
| Quad9 | ✅ Both | Switzerland (zero-log, audited) |
| Cloudflare | ✅ Both | US (CLOUD Act) |
| ✅ Both | US (logs anonymised 48h) | |
| AdGuard | ✅ Both | EU (no-log) |
| Cisco Umbrella (OpenDNS) | ✅ Both | US |
| DNS.Watch | ❌ | EU (no-log) |
| GCore | ❌ | EU |
| FFMUC | ✅ Both | EU |
| Yandex (+ variants) | ✅ Both | RU |
| 阿里云 (AliDNS) | ✅ Both | CN |
| 腾讯云 DNSPod (Tencent) | ✅ Both | CN |
Plus custom server support (any IP or DoH URL).
How to Set Quad9 (GUI)
- Open CachyOS Hello from your application menu (or
run
cachyos-helloin terminal) - Click the DNS tab/section
- Select your connection — for Singtel Fibre users, this is
SINGTEL-11D4(your WiFi SSID) - Choose Quad9 from the provider list
- Check Enable DNS-over-HTTPS (DoH) for encrypted transport
- Click Apply
A polkit dialog will ask for your password (this is normal — system DNS changes need root).
The CLI Version
# List connections
cachyos-hello dns list-connections
# List available servers
cachyos-hello dns list-servers
# Set Quad9 with DoH on your WiFi
cachyos-hello dns set \
--connection "SINGTEL-11D4" \
--server quad9 \
--doh
The CLI version triggers the same polkit prompt. From a terminal inside a desktop session, it should work. From a remote SSH session or a non-graphical TTY, polkit can’t show the dialog and the command will time out.
Verification
# Check which resolver is active
resolvectl status
# Should show Quad9 as the current DNS server
# or 127.0.0.53 (systemd-resolved stub forwarding to blocky → Quad9)
# Query a domain to confirm resolution
resolvectl query google.com
# Check blocky is running (if DoH is enabled)
systemctl --user status blocky
What This Changes
| Before | After |
|---|---|
192.168.1.254 (Singtel ONT) → Singtel DNS |
9.9.9.9 via DoH |
| Unencrypted DNS visible to ISP | Encrypted DNS (DoH) |
| Query logs retained per IMDA | Quad9 zero-log policy |
| ~28ms average latency | ~8ms plain / ~35ms DoH |
The Singtel ONT no longer sees your DNS queries — it only sees encrypted HTTPS traffic to Quad9’s IPs. Your ISP loses the DNS-level map of your browsing.
Manually (if CachyOS Hello GUI also fails)
If the polkit dialog doesn’t appear even from the GUI, you can configure systemd-resolved directly:
sudo mkdir -p /etc/systemd/resolved.conf.d
printf '[Resolve]\nDNS=9.9.9.9 9.9.9.10\nDomains=~.\n' | \
sudo tee /etc/systemd/resolved.conf.d/quad9.conf
sudo systemctl restart systemd-resolved
Or use nmcli:
sudo nmcli connection modify "SINGTEL-11D4" ipv4.dns "9.9.9.9 9.9.9.10"
sudo nmcli connection up "SINGTEL-11D4"
Both require sudo, but they’re one-liners.
Verification — Real Output After Applying Quad9 (DoT)
After selecting Quad9 with DoT in CachyOS Hello → DNS, here’s the live system state:
$ resolvectl status
Global
Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: foreign
Fallback DNS Servers: 9.9.9.9#dns.quad9.net 2620:fe::9#dns.quad9.net
1.1.1.1#cloudflare-dns.com
...
Link 2 (wlan0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 mDNS/IPv4 mDNS/IPv6
Protocols: +DefaultRoute +LLMNR +mDNS +DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 9.9.9.9#dns.quad9.net
DNS Servers: 9.9.9.9#dns.quad9.net
149.112.112.112#dns.quad9.net
192.168.1.254 ← fallback to Singtel ONT
DNS Domain: ~.
Key indicators: -
Current DNS Server: 9.9.9.9#dns.quad9.net
— Quad9 is active - +DNSOverTLS — DoT
encryption is enabled on the link -
192.168.1.254 only as fallback (Singtel
ONT no longer primary)
$ resolvectl query google.com
google.com: 142.251.10.100 -- link: wlan0
142.251.10.113 -- link: wlan0
...
-- Information acquired via protocol DNS in 15.9ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: yes
-- Data from: network
encrypted transport: yes confirms DoT
is working. Query time dropped from 28ms (Singtel ONT) to 15.9ms (Quad9
via DoT).
To double-check, compare Quad9 against the old Singtel resolver directly:
$ dig +short @9.9.9.9 google.com
142.251.10.101
142.251.10.102
...
$ dig +short @192.168.1.254 google.com
142.250.4.100
142.250.4.138
...
Both resolve, but Quad9 is now the primary and your ISP no longer logs the domain names you visit.
Why Quad9 Over Cloudflare?
From my benchmarks on Singtel Fibre in Singapore:
| Metric | Quad9 | Cloudflare |
|---|---|---|
| Plain DNS latency | 8ms | 9ms |
| DoH latency | 35ms | 60ms |
| Jurisdiction | Switzerland | US (CLOUD Act) |
| Logging | Zero, independently audited | Deleted within 24h |
| Privacy law | Swiss FADP | US CLOUD Act / NSLs |
Plain DNS is a tie. DoH speed and jurisdiction are the differentiators — Quad9 wins on both.
Bottom Line
CachyOS’s DNS Changer is the cleanest way to configure system-wide
encrypted DNS on any distro I’ve used. One click in the GUI and you get
blocky-managed DoH, systemd-resolved caching, and NetworkManager
integration. No config files, no terminal gymnastics, no
/etc/resolv.conf fights.
Quad9 with DoH is the setting I’d recommend: best privacy jurisdiction, fastest DoH from Singapore, and full encryption against ISP snooping.
Benchmarks run on Singtel Fibre Broadband (AS9506, Ulu Bedok, Singapore). CachyOS Hello version shipping with April 2026 release. Kernel: Linux 6.14+.