yay -S technitium-dns-server-binsystemctl disable --now systemd-resolved.servicesystemctl enable --now technitium-dns-server.serviceNote! These optional DNS Server protocol changes will be automatically applied and so you do not need to manually restart the main service. The TLS certificate too will be automatically reloaded when the certificate file’s date modified property on disk changes.
pacman -S acme.sh socatmkdir /etc/lairlan
mv ~/lairlan.internal.root.crt /etc/lairlan/cat >> /etc/systemd/system/acme_cert.service << EOF
# /etc/systemd/system/acme_cert.service
[Unit]
Description=Renew internal certificates using acme.sh
After=network-online.target
[Service]
Type=oneshot
Environment=CERT_PFX_PATH=/opt/technitium-dns-server/config/certs/techdns.lair.lan.pfx
ExecStart=/usr/bin/acme.sh --issue --standalone -d techdns.lair.lan,10.193.120.5 --server https://ca.lair.lan/acme/lairlan/directory --ca-bundle /etc/lairlan/lairlan.internal.root.crt --fullchain-file /opt/technitium-dns-server/config/certs/fullchain.pem --key-file /opt/technitium-dns-server/config/certs/key.pem --force
ExecStart=/usr/bin/acme.sh --issue -d techdns.lair.lan --to-pkcs12 --password "CHANGEME" --reloadcmd "/usr/bin/chown technitium:technitium /opt/technitium-dns-server/config/certs/techdns.lair.lan.pfx"
EOFcat >> /etc/systemd/system/acme_cert.timer << EOF
# /etc/systemd/system/acme_cert.timer
[Unit]
Description=Renew internal certificates using acme.sh
[Timer]
Persistent=true
OnBootSec=120
OnUnitActiveSec=7d
AccuracySec=1m
RandomizedDelaySec=1m
[Install]
WantedBy=timers.target
EOFsystemctl daemon-reload
systemctl enable --now acme_cert.timerFrom here on, it’s basic dns zones stuff and TSIGs etc
dig -x <IP>
dig somedomain.tld
dig somedomain.tld @8.8.8.8 # check somedomain.tld with googles dns serverhere is ads.google.com as an example that is blocked by
multiple lists
; <<>> DiG 9.20.11 <<>> +all ads.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28414
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 15 (Blocked): (source=block-list-zone; blockListUrl=https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts; domain=ads.google.com)
; EDE: 15 (Blocked): (source=block-list-zone; blockListUrl=https://adaway.org/hosts.txt; domain=ads.google.com)
; EDE: 15 (Blocked): (source=block-list-zone; blockListUrl=https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts; domain=ads.google.com)
; EDE: 15 (Blocked): (source=block-list-zone; blockListUrl=https://blocklistproject.github.io/Lists/ads.txt; domain=ads.google.com)
; EDE: 15 (Blocked): (source=block-list-zone; blockListUrl=https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-social/hosts; domain=ads.google.com)
;; QUESTION SECTION:
;ads.google.com. IN A
;; AUTHORITY SECTION:
google.com. 30 IN SOA techdns.lair.lan. hostadmin.techdns.lair.lan. 1 14400 3600 604800 30
;; Query time: 1 msec
;; SERVER: 10.193.120.5#53(10.193.120.5) (UDP)
;; WHEN: Mon Jul 21 23:02:54 CEST 2025
;; MSG SIZE rcvd: 730
Last modified: Wed Sep 16 15:59:26 2026