TechnitiumSoftware/DnsServer · error · DnsServerException

{protocolName} is supported only on Windows 11 (build 22000

Error message

{protocolName} is supported only on Windows 11 (build 22000 and later), Windows Server 2022 (and later), and Linux. On Linux, you must install 'libmsquic' manually.

What it means

Thrown by ValidateQuicSupport when QuicConnection.IsSupported is false and IPv6 IS supported. QuicConnection.IsSupported requires a runtime/OS combination that ships System.Net.Quic: Windows 11 build 22000+, Windows Server 2022+, or Linux with libmsquic installed.

Source

Thrown at DnsServerCore/Dns/DnsServer.cs:6623

                    return Environment.OSVersion.Version.Major >= 10; //unix sockets are supported on Windows Server 2019 (oct update 1809), Windows 10 (Insider Build 17063), or later

                default:
                    return false;
            }
        }

        #endregion

        #region quic

        internal static void ValidateQuicSupport(string protocolName = "DNS-over-QUIC")
        {
            if (!QuicConnection.IsSupported)
            {
                if (!Socket.OSSupportsIPv6)
                    throw new DnsServerException(protocolName + " requires IPv6 support on the system to work.");

                throw new DnsServerException(protocolName + " is supported only on Windows 11 (build 22000 and later), Windows Server 2022 (and later), and Linux. On Linux, you must install 'libmsquic' manually.");
            }
        }

        #endregion

        #region public

        public async Task StartAsync(bool throwIfBindFails = false)
        {
            if (_disposed)
                ObjectDisposedException.ThrowIf(_disposed, this);

            if (_state != ServiceState.Stopped)
                throw new InvalidOperationException("DNS Server is already running.");

            _state = ServiceState.Starting;

            //bind on all local end points

View on GitHub (pinned to d0484b6c1e)

Solutions

  1. On Linux, install libmsquic matching your distro/arch (apt install libmsquic or the Microsoft package).
  2. Upgrade the .NET runtime to 7.0+ (preferably the LTS the server targets).
  3. On Windows, run Windows 11 (22000+) or Windows Server 2022+.
  4. If you cannot satisfy the requirement, disable DoQ and DoH3 listeners.

Example fix

# before: libmsquic missing on Ubuntu
# (server throws on StartAsync with DoQ enabled)

# after
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
# add repo, then:
sudo apt-get update && sudo apt-get install -y libmsquic
Defensive patterns

Strategy: validation

Validate before calling

bool QuicAvailable => System.Net.Quic.QuicConnection.IsSupported;
// gate DoQ/DoH3 enablement on QuicAvailable

Type guard

static bool IsQuicSupportedOnRuntime() => System.Net.Quic.QuicConnection.IsSupported;

Try / catch

try { server.ValidateQuicSupport("DNS-over-QUIC"); server.EnableDoQ = true; }
catch (DnsServerException ex) when (ex.Message.Contains("libmsquic")) { log.Warn("Install libmsquic or upgrade .NET/runtime; disabling QUIC"); server.EnableDoQ = false; }

Prevention

When it happens

Trigger: Running an older .NET runtime without built-in QUIC; running on Windows 10/Server 2019; Linux without the libmsquic native dependency installed.

Common situations: Stock Ubuntu/Debian missing libmsquic.so; .NET 6 or earlier runtime (QUIC is .NET 7+); Alpine without musl libmsquic; container built on a minimal base lacking the native library.

Related errors


AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13). Data as JSON: /api/errors/3092f865314dbb77. Report an issue: GitHub.