TechnitiumSoftware/DnsServer · error · ArgumentOutOfRangeException
Port 53 cannot be used for DNS-over-TLS service. Please use
Error message
Port 53 cannot be used for DNS-over-TLS service. Please use a different port.
What it means
Thrown by the DnsOverTlsPort setter when value == 53, after the range check (312) passes. Port 53 is reserved for plain DNS; DNS-over-TLS must use a different port (853 by convention). The server enforces this separation explicitly.
Source
Thrown at DnsServerCore/Dns/DnsServer.cs:7774
set
{
if (string.IsNullOrWhiteSpace(value))
value = null;
_dnsOverHttpsUnixSocket = value;
}
}
public int DnsOverTlsPort
{
get { return _dnsOverTlsPort; }
set
{
if ((value < ushort.MinValue) || (value > ushort.MaxValue))
throw new ArgumentOutOfRangeException(nameof(DnsOverTlsPort), "Port number valid range is from 0 to 65535.");
if (value == 53)
throw new ArgumentOutOfRangeException(nameof(DnsOverTlsPort), "Port 53 cannot be used for DNS-over-TLS service. Please use a different port.");
_dnsOverTlsPort = value;
}
}
public int DnsOverHttpsPort
{
get { return _dnsOverHttpsPort; }
set
{
if ((value < ushort.MinValue) || (value > ushort.MaxValue))
throw new ArgumentOutOfRangeException(nameof(DnsOverHttpsPort), "Port number valid range is from 0 to 65535.");
if (value == 53)
throw new ArgumentOutOfRangeException(nameof(DnsOverHttpsPort), "Port 53 cannot be used for DNS-over-HTTPS service. Please use a different port.");
if (value == 853)
throw new ArgumentOutOfRangeException(nameof(DnsOverHttpsPort), "Port 853 is reserved for DNS-over-TLS service. Please use a different port for DNS-over-HTTPS service.");View on GitHub (pinned to d0484b6c1e)
Solutions
- Use the conventional DoT port 853 (or another non-53 port).
- Keep plain DNS on 53 and run DoT on a dedicated port.
- Pre-validate the DoT port is not 53 before assigning.
- Re-submit a corrected value via the settings API.
Example fix
// before _dnsServer.DnsOverTlsPort = 53; // throws: 53 reserved for plain DNS // after _dnsServer.DnsOverTlsPort = 853; // conventional DoT port
Defensive patterns
Strategy: validation
Validate before calling
if (parsed == 53) parsed = 853; // 53 reserved for plain DNS _dnsServer.DnsOverTlsPort = parsed;
Type guard
static bool IsAcceptableDoTPort(int value) => value != 53 && value >= 0 && value <= 65535;
Try / catch
try { _dnsServer.DnsOverTlsPort = parsed; }
catch (ArgumentOutOfRangeException ex) when (ex.ParamName == nameof(DnsServer.DnsOverTlsPort) && parsed == 53)
{ _dnsServer.DnsOverTlsPort = 853; } Prevention
- Never use 53 for DoT.
- Default migrated 53 values to 853.
- Reserve 53 for the plain DNS listener.
When it happens
Trigger: Assigning DnsServer.DnsOverTlsPort = 53 via the settings API or config restore. The range guard passes; this dedicated guard then fires.
Common situations: Assuming TLS DNS can run on 53 alongside plain DNS. Config migration that left the DoT port at 53. UI mix-up between the standard DNS port and the DoT port.
Understand the failure class
- SSL/TLS and certificate errors — how TLS handshakes and certificate validation fail.
Related errors
- Port 53 cannot be used for DNS-over-HTTP service. Please use
- Port 853 is reserved for DNS-over-TLS service. Please use a
- Port 53 cannot be used for DNS-over-HTTPS service. Please us
- Port 853 is reserved for DNS-over-TLS service. Please use a
- Port 53 cannot be used for DNS-over-QUIC service. Please use
AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13).
Data as JSON: /api/errors/fcc3138e5e5a0921.
Report an issue: GitHub.