TechnitiumSoftware/DnsServer · error · ArgumentException
EDNS Client Subnet IPv6 Override must be an IPv6 network add
Error message
EDNS Client Subnet IPv6 Override must be an IPv6 network address.
What it means
Thrown by the EDnsClientSubnetIpv6Override property setter when the provided NetworkAddress has AddressFamily != InterNetworkV6 (i.e. it is not an IPv6 address). A valid IPv6 host address is automatically converted to a network address using the current IPv6 prefix length.
Source
Thrown at DnsServerCore/Dns/DnsServer.cs:7390
throw new ArgumentException("EDNS Client Subnet IPv4 Override must be an IPv4 network address.", nameof(EDnsClientSubnetIpv4Override));
if (value.IsHostAddress)
value = new NetworkAddress(value.Address, _eDnsClientSubnetIPv4PrefixLength);
}
_eDnsClientSubnetIpv4Override = value;
}
}
public NetworkAddress EDnsClientSubnetIpv6Override
{
get { return _eDnsClientSubnetIpv6Override; }
set
{
if (value is not null)
{
if (value.AddressFamily != AddressFamily.InterNetworkV6)
throw new ArgumentException("EDNS Client Subnet IPv6 Override must be an IPv6 network address.", nameof(EDnsClientSubnetIpv6Override));
if (value.IsHostAddress)
value = new NetworkAddress(value.Address, _eDnsClientSubnetIPv6PrefixLength);
}
_eDnsClientSubnetIpv6Override = value;
}
}
public IReadOnlyDictionary<int, (int, int)> QpmPrefixLimitsIPv4
{
get { return _qpmPrefixLimitsIPv4; }
set
{
if (value is null)
{
_qpmPrefixLimitsIPv4 = new Dictionary<int, (int, int)>();
}View on GitHub (pinned to d0484b6c1e)
Solutions
- Provide an IPv6 NetworkAddress (AddressFamily.InterNetworkV6).
- Use EDnsClientSubnetIpv4Override for IPv4 addresses.
- Check AddressFamily before assignment.
Example fix
// before
server.EDnsClientSubnetIpv6Override =
new NetworkAddress(IPAddress.Parse("203.0.113.5"), 56); // throws
// after
server.EDnsClientSubnetIpv6Override =
new NetworkAddress(IPAddress.Parse("2001:db8::1"), 56); Defensive patterns
Strategy: type-guard
Validate before calling
if (overrideAddr is not null && overrideAddr.AddressFamily != AddressFamily.InterNetworkV6)
throw new InvalidOperationException("IPv6 override must be an IPv6 address.");
server.EDnsClientSubnetIpv6Override = overrideAddr; Type guard
static bool IsIpv6NetworkAddress(NetworkAddress n) =>
n is null || n.AddressFamily == AddressFamily.InterNetworkV6; Try / catch
try { server.EDnsClientSubnetIpv6Override = addr; }
catch (ArgumentException) { addr = new NetworkAddress(IPAddress.IPv6Any, prefix); server.EDnsClientSubnetIpv6Override = addr; } Prevention
- Verify AddressFamily is InterNetworkV6 before assignment.
- Do not mix IPv4 and IPv6 override variables.
When it happens
Trigger: Setting server.EDnsClientSubnetIpv6Override to a NetworkAddress wrapping an IPv4 address (AddressFamily.InterNetwork).
Common situations: Passing an IPv4 address into the IPv6 override slot; reusing one variable for both; config file field mapping error.
Related errors
- EDNS Client Subnet IPv6 prefix length cannot be greater than
- EDNS Client Subnet IPv4 prefix length cannot be greater than
- EDNS Client Subnet IPv4 Override must be an IPv4 network add
- Invalid EDNS UDP payload size: valid range is 512-4096 bytes
- QPM Prefix Limits for IPv6 cannot have more than 255 entries
AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13).
Data as JSON: /api/errors/8418f40320c0f624.
Report an issue: GitHub.