TechnitiumSoftware/DnsServer · error · ArgumentOutOfRangeException
EDNS Client Subnet IPv6 prefix length cannot be greater than
Error message
EDNS Client Subnet IPv6 prefix length cannot be greater than 64.
What it means
Thrown by the EDnsClientSubnetIPv6PrefixLength property setter when the byte value exceeds 64. An IPv6 prefix length cannot exceed 128 in theory, but this server caps ECS IPv6 prefix at 64 to protect client privacy and limit response specificity.
Source
Thrown at DnsServerCore/Dns/DnsServer.cs:7358
public byte EDnsClientSubnetIPv4PrefixLength
{
get { return _eDnsClientSubnetIPv4PrefixLength; }
set
{
if (value > 32)
throw new ArgumentOutOfRangeException(nameof(EDnsClientSubnetIPv4PrefixLength), "EDNS Client Subnet IPv4 prefix length cannot be greater than 32.");
_eDnsClientSubnetIPv4PrefixLength = value;
}
}
public byte EDnsClientSubnetIPv6PrefixLength
{
get { return _eDnsClientSubnetIPv6PrefixLength; }
set
{
if (value > 64)
throw new ArgumentOutOfRangeException(nameof(EDnsClientSubnetIPv6PrefixLength), "EDNS Client Subnet IPv6 prefix length cannot be greater than 64.");
_eDnsClientSubnetIPv6PrefixLength = value;
}
}
public NetworkAddress EDnsClientSubnetIpv4Override
{
get { return _eDnsClientSubnetIpv4Override; }
set
{
if (value is not null)
{
if (value.AddressFamily != AddressFamily.InterNetwork)
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);
}View on GitHub (pinned to d0484b6c1e)
Solutions
- Set the value to 64 or less (commonly /56 for ECS).
- If a longer prefix is needed, note this server intentionally caps at 64 for privacy.
Example fix
// before server.EDnsClientSubnetIPv6PrefixLength = 128; // throws // after server.EDnsClientSubnetIPv6PrefixLength = 56;
Defensive patterns
Strategy: validation
Validate before calling
byte v6Prefix = (byte)Math.Min(value, 64); server.EDnsClientSubnetIPv6PrefixLength = v6Prefix;
Type guard
static bool IsValidV6Prefix(byte p) => p <= 64;
Try / catch
try { server.EDnsClientSubnetIPv6PrefixLength = value; }
catch (ArgumentOutOfRangeException) { server.EDnsClientSubnetIPv6PrefixLength = 56; } Prevention
- This server caps IPv6 ECS at 64, not 128 — do not assume standard CIDR maxima.
- Use /56 as a safe default for ECS privacy.
When it happens
Trigger: Setting server.EDnsClientSubnetIPv6PrefixLength to a byte > 64.
Common situations: Setting a long prefix like /128 for full client identity; loading config with an overly-specific IPv6 ECS value; assuming the max is 128 like standard CIDR.
Related errors
- EDNS Client Subnet IPv6 Override must be an IPv6 network add
- 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/dcb76dfe72753517.
Report an issue: GitHub.