Skip to content

Option to fallback to next Forwarder on NXDOMAIN response (Ignore NXDOMAIN) #1573

@SKProCH

Description

@SKProCH

I am facing a complex Split-Horizon DNS scenario where I have multiple VPN connections and network interfaces.
I have a specific setup in <root> with:

  1. General Internet Forwarder (e.g., Router/ISP) with Priority: 100.
  2. Private VPN Forwarders (e.g., Corporate DNS) with Priority: 110, 120, etc.

Currently, when I query a private domain (e.g., internal.corp), Technitium sends the request to the General Forwarder (Priority 100). The General Forwarder does not know about this domain and returns NXDOMAIN.
Technitium accepts this NXDOMAIN as the final answer and stops processing, so the Private Forwarders (Priority 110+) are never queried.

Describe the solution you'd like
I would like to request an option (a checkbox in the FWD record settings or a global "Forwarding Strategy" setting) to ignore NXDOMAIN responses and continue trying the next forwarder in the priority list.

Logic flow:

  1. Query sent to Forwarder A (Priority 100).
  2. Forwarder A returns NXDOMAIN.
  3. If "Ignore NXDOMAIN" is enabled: The server disregards the response and tries Forwarder B (Priority 110).
  4. Forwarder B returns the A Record.
  5. Server returns the valid IP to the client.

Describe alternatives you've considered

  1. Conditional Forwarding Zones: This is the standard solution. However, I have a large number of dynamic internal domains across different VPNs. Creating and maintaining a separate Forwarder Zone for every single internal domain is difficult and inefficient in my environment.
  2. Changing Priorities: Making the Private DNS the primary forwarder (Priority 0) is not ideal because I do not want to send all my public internet traffic through the private VPN DNS for privacy and performance reasons.
  3. Probably I'm missing the right way to do it?

Additional context
This feature is similar to the "strict-order" logic combined with specific fallback behavior found in some other DNS forwarders (like dnsmasq with specific configurations). I understand this might technically violate standard DNS RFCs (where NXDOMAIN is authoritative), but it is extremely useful for client-side split-tunneling scenarios where we cannot easily enumerate all upstream zones.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions