0XC0020031

Fixing RPC_NT_UNKNOWN_AUTHN_LEVEL (0XC0020031) in Windows Server

Server & Cloud Intermediate 👁 1 views 📅 May 28, 2026

This happens when Windows can't negotiate an RPC authentication level with a remote machine. Usually a firewall or security policy blocks it.

What triggers this error

You're trying to run a remote WMI query, manage a server via Server Manager, or use a tool like winrm, and you get hit with 0XC0020031 - The authentication level is unknown. Last month I had a client whose backup software couldn't connect to their domain controller because of this. The error pops up when Windows can't settle on an authentication level for the RPC call — usually between a client machine and a server, or between two servers in different security zones.

Root cause in plain English

RPC authentication levels range from 0 (none) to 6 (packet privacy with encryption). Windows negotiates this automatically, but if something blocks the negotiation — like a firewall that drops certain RPC packets, or a Group Policy that forces a higher level than the remote machine supports — you get this error. The most common cause I've seen is a firewall rule that allows RPC endpoint mapper (port 135) but blocks the dynamic ports RPC uses afterwards. Another one: the remote machine's DCOM settings are locked down too tight.

The fix: step by step

Step 1: Check the firewall on both ends

Open an elevated command prompt on the machine that's failing. Run:

netsh advfirewall firewall show rule name=all | find /i "Remote"

Look for rules that block RPC. If you're on a domain, check wf.msc for any custom rules. The key is to allow RPC Endpoint Mapper (TCP 135) and Dynamic RPC ports (TCP 49152-65535 by default on modern Windows). I've seen admins block the dynamic range thinking it's safer — it's not, it breaks everything.

Step 2: Verify DCOM authentication level

On the remote machine, open dcomcnfg. Go to Component ServicesComputers → right-click My ComputerPropertiesCOM Security tab. Under Access Permissions, click Edit Default. Make sure the Everyone or Authenticated Users group has Remote Access allowed. Most people forget this and wonder why remote calls fail.

Step 3: Change authentication level in registry

This step forces a consistent level. On the machine making the call, open regedit and go to:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole

Find (or create) a DWORD value named DefaultAuthenticationLevel. Set it to 5 (Packet Integrity). This tells Windows to negotiate but not drop below packet integrity. Had a client whose antivirus was overriding this — check that too.

Step 4: Test with a direct RPC call

To confirm the fix, use PowerShell on the client:

Test-WSMan -ComputerName SERVER01 -Authentication Default

If you still get the error, the issue is likely on the server side. Repeat steps 1-3 there.

What to check if it still fails

If steps 1-4 don't work, look at Group Policy. Run rsop.msc on both machines and check Computer ConfigurationAdministrative TemplatesSystemRemote Procedure Call. Any setting like "RPC Endpoint Mapper Client Authentication" set to Enabled can cause this. Also check if the remote machine is Windows Server Core — it needs the RPC over HTTP Proxy role if you're using that. Finally, wireshark a quick capture on port 135. If you see a reset after the initial bind, the firewall is still the culprit.

Was this solution helpful?