Fix 0XC0130016: Cluster network not internal
This error means a cluster network isn't marked for internal use. The quick fix is checking network roles in Failover Cluster Manager. The real fix is usually adjusting the network's cluster role.
30-Second Fix: Check network role in Failover Cluster Manager
Open Failover Cluster Manager, go to Networks in the left pane. Find the network throwing the error. Right-click it, select Properties. Under the General tab, look at the Allow cluster network communication on this network checkbox. Make sure it's checked. Also check the radio buttons below — Use this network for all cluster communication or Use this network for client communication only? If it's set to client only, that's your problem. Change it to All communication (internal + client) or Internal cluster communication only, depending on your setup. Click OK, then run a cluster validation test.
This fixes maybe 40% of cases. If you still see the error, move on.
5-Minute Fix: PowerShell to force the network role
When the GUI doesn't stick or you're dealing with multiple nodes, PowerShell is faster and more reliable. Open PowerShell as Administrator on a cluster node (not a domain controller).
Get-ClusterNetwork
Look at the output. You'll see each network with its Role column. The network causing 0XC0130016 likely shows a Role of 0 (which is "None") or 3 (which is "ClientOnly"). You need Role 1 (InternalClusterCommunicationOnly) or 2 (AllCommunications).
To fix it, identify the cluster network object name, then run:
Get-ClusterNetwork "YourNetworkName" | Set-ClusterNetworkRole -Role InternalClusterCommunicationOnly
Replace YourNetworkName with the actual name from the Get-ClusterNetwork output. If you want the network to also handle client traffic (like a heartbeat + LAN), use -Role AllCommunications instead. After running the command, verify with Get-ClusterNetwork again. The Role should show 1 or 2.
Run a cluster validation and check the error. This resolves another 30% of cases.
15+ Minute Fix: Deep dive — DNS, subnet mismatches, and node isolation
If the error still shows up, the problem isn't just the role setting. It's something deeper. Here's what I've seen cause this:
1. DNS registration issues
The cluster network relies on DNS for node discovery. If nodes can't resolve each other's IPs on that subnet, the cluster won't trust it for internal use. Check the cluster network's DNS settings in the adapter properties. Make sure each node's adapter on that subnet points to the same DNS servers. Run ipconfig /all on each node and compare. Mismatched DNS servers (especially one pointing to a different domain controller) can cause this.
2. Subnet mismatch
All nodes must have the same subnet configured for that network. I've seen a case where one node had a /24 subnet and another had a /16 — the cluster saw them as different networks. Check the subnet mask on each node's adapter. They must match exactly. Fix in Network and Sharing Center → Change adapter settings.
3. Firewall rules blocking cluster traffic
The cluster uses specific ports (UDP 3343, TCP 3343, UDP 1434, TCP 135, and ICMP for heartbeats). If Windows Firewall or a third-party firewall is blocking these on that network adapter, the cluster can't use it for internal communication. Temporarily disable the firewall on that adapter (not the other adapters) and see if the error clears. If it does, create firewall rules to allow cluster traffic. Use netsh advfirewall firewall add rule or Group Policy.
4. Node isolation due to routing
In multi-subnet clusters (stretched clusters or sites), the cluster network might span different physical subnets. If routing between those subnets isn't working correctly, the cluster can't establish internal communication. Run ping -n 4 between all nodes on that network's IPs. If any fail, check routing tables with route print. Add a persistent route if needed.
5. Cluster log analysis
Pull the cluster logs with:
Get-ClusterLog -Destination C:\ClusterLogs -TimeSpan 5
Open the resulting .log files in Notepad or a log viewer. Search for 0xC0130016 or NETWORK_NOT_INTERNAL. Look at the context around those lines. You'll often see a Node: X reference pointing to which node reported the issue. Also look for DNS or Heartbeat failures nearby. That tells you where to start.
6. Network adapter priority
The cluster chooses the network with the highest metric for internal communication. If you have multiple adapters, make sure the one you want for internal use has the lowest metric (highest priority). Use Get-ClusterNetwork and check the Metric column. Lower values are preferred. You can't change the metric directly in the GUI — use PowerShell:
Get-ClusterNetwork "YourNetworkName" | Set-ClusterNetwork -Metric 200
Set a lower metric (like 100) for the network you want as primary, and higher metrics (like 1000) for others.
When to rebuild the network configuration
If all else fails — and I mean all else — destroy and recreate the cluster network role. This is rare but sometimes the cluster database gets corrupted for that network. Here's the nuclear option:
Stop-ClusterNode -Name "Node1" -Force
Stop-ClusterNode -Name "Node2" -Force
Start-ClusterNode -Name "Node1"
Start-ClusterNode -Name "Node2"
Get-ClusterNetwork | Remove-ClusterNetwork
Then add the networks back via Add-ClusterNetwork. But honestly, this should be your last resort. Try the other steps first. Pro tip: Before nuking, check if the cluster network name has spaces or special characters. Rename it to something simple like Heartbeat or ClusterInternal in the GUI and re-run validation. That alone has fixed it for me twice.
One last thing — don't bother disabling IPv6 on the cluster adapters. It rarely helps and can actually break cluster functionality. Leave IPv6 enabled.
Was this solution helpful?