IPsec ESP packet drop: STATUS_IPSEC_AUTH_FIREWALL_DROP fix
Windows drops ESP packets when IPsec policy mismatches or firewall blocks authenticated IPsec traffic. Here's why and how to fix it.
Quick answer
Disable IPsec authenticated firewall mode or fix the IPsec policy mismatch by running netsh ipsec static set policy name="YourPolicy" assign=yes and verifying firewall rules allow ESP (IP protocol 50) traffic.
What's actually happening here
Error 0XC0360008 means Windows dropped an incoming ESP (Encapsulating Security Payload) packet because the IPsec driver detected a mismatch between the packet's security association (SA) and the firewall's IPsec policy rules. This usually happens on Windows Server 2016/2019/2022 or Windows 10/11 when you have IPsec policies configured but the firewall is set to 'authenticate' IPsec traffic — which requires a valid SA for every ESP packet. The packet arrives, the firewall checks its IPsec policy, doesn't find a matching permit rule, and drops it. You'll see this in netsh trace logs or Windows Event Viewer under System with source 'IPsec'. Triggers include: rebooting after changing IPsec policies, applying GPO updates, or connecting from a client whose IPsec policy doesn't match the server's.
Fix steps
- Identify the active IPsec policy
Runnetsh ipsec static show policy allin an elevated command prompt. Look for a policy with 'Assigned=Yes'. If none, you have no policy assigned and the drop is likely firewall-rule related. - Check the firewall rule that permits ESP
Runnetsh advfirewall firewall show rule name="all" dir=inand filter for anything with 'ipsec' in the name. You're looking for a rule that allows ESP traffic (protocol 50) and has 'auth1' or 'authenticate' enabled. If no such rule exists, create one:
This permits ESP packets without IPsec authentication — which works if you don't need IPsec security for ESP.netsh advfirewall firewall add rule name="Allow ESP" dir=in action=allow protocol=50 localport=any remoteport=any profile=any - Fix IPsec policy mismatch
If a policy exists, verify it matches what the remote end sends. For example, if you require 'Negotiate auth' but the client sends 'Transport mode with ESP', the server drops it. Edit the policy:
Then check filter actions:netsh ipsec static set policy name="YourPolicy" assign=yesnetsh ipsec static show filteraction all. Make sure the filter action for ESP packets has 'Permit' (not 'Block' or 'Negotiate'). - Restart IPsec services
Runnet stop PolicyAgent && net start PolicyAgent && net stop IKEEXT && net start IKEEXT. This resets the SA database and re-reads policies. After this, test the connection.
Alternative fixes if the main one fails
- Disable IPsec authenticated firewall mode
If you don't need IPsec auth, turn it off:netsh advfirewall set allprofiles settings inboundusenexthop no. This tells the firewall to not require IPsec for inbound traffic. Not recommended if you rely on IPsec for security, but it stops the drops instantly. - Check for GPO conflicts
If your machine is domain-joined, rungpresult /h gpo.htmland look for any 'IP Security Policies' or 'Windows Firewall with Advanced Security' GPOs. They might override local settings. Unlink or modify the GPO to match your needs. - Update network driver
Rare, but some NICs (Realtek, Intel I219) mishandle ESP packets. Update the driver from the OEM's site, not Windows Update.
Prevention tip
Before applying any IPsec policy, test it in a lab with both endpoints running netsh ipsec dynamic set policy name="TestPolicy" assign=yes and monitor drops via netsh ipsec dynamic show drops. This catches mismatches before they hit production.
Was this solution helpful?