mirror of
https://github.com/albertito/dnss.git
synced 2026-04-26 18:05:57 +03:00
[GH-ISSUE #14] Document integration of dnss with systemd-resolvd #13
Labels
No labels
enhancement
enhancement
pull-request
question
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/dnss#13
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @klogg on GitHub (Feb 20, 2026).
Original GitHub issue: https://github.com/albertito/dnss/issues/14
Unified DNS architecture: integrating dnss with systemd-resolved
The Architecture Goal
In a default state, dnss (a DNS-over-HTTPS proxy) and systemd-resolved fight for control over the standard DNS port (53). When dnss wins, it breaks glibc's ability to resolve local, split-DNS domains via standard applications (ssh, ping).
This setup fundamentally re-architects the stack into a clean pipeline: application -> systemd-resolved -> dnss -> Internet
Step 1: Relocate the dnss Socket
By default, dnss uses Systemd Socket Activation to bind aggressively to the wildcard port *:53. We must move it to an alternate local port so systemd-resolved can reclaim the front-line position.
Action:
Configuration:
Step 2: Configure systemd-resolved as the Master Router
With port 53 free, systemd-resolved needs to be told to use your new dnss backend for all global internet queries, while gracefully handling security protocols.
Action:
Configuration:
Step 3: Enforce the Boot Order
Because systemd-resolved now relies entirely on dnss for global internet resolution, starting them out of order creates a race condition that breaks DNS on boot.
Action:
Configuration:
Step 4: Apply and Verify
To commit the new architecture to the kernel and systemd daemon:
Final Traffic Flow Check: