Fix it now
One failover partner sent a BINDING-ACK carrying a reject reason and the other logged receiving it. Where the reason is “Outdated binding information”, Microsoft states these events can be ignored: they do not indicate an error and do not affect leases or the partner update. Check the reject reason before changing anything.
Get-DhcpServerv4Failover
w32tm /query /status
- Open the event and read the reject reason in brackets. “Outdated binding information” is the benign case, and the usual cause is more than one relay agent forwarding the same client broadcast to both nodes within the same second.
- Confirm the relationship itself is healthy: both partners should report a normal state, and the last communication should be recent.
- Look for Event ID 20253 in the same log. That is the partner reporting it is out of time synchronisation, and it states the offset in seconds, so you do not have to infer skew from anywhere else.
- Only if state or scopes genuinely differ, push the configuration from the server you trust:
Invoke-DhcpServerv4FailoverReplication -ComputerName <server> -Force. Replication overwrites the partner, so run it on the server whose settings you want to keep.
These events live in Applications and Services Logs, Microsoft, Windows, DHCP-Server, under the Admin channel – not in the System log.
If the reject reason is the outdated-binding one and the relationship is in a normal state, you are done. The next section explains what the two servers are exchanging and which failures are real.
Why it happens
DHCP failover partners keep two independent lease databases in step by exchanging binding messages over a persistent TCP connection on port 647. When one server tells the other about a lease, the partner answers with a BINDING-ACK. If it cannot accept what it was told, that acknowledgement carries a reject reason, and both ends log it: 20291 on the server that sent the rejection, 20292 on the server that received it.
The most common reject reason is “Outdated binding information”, and Microsoft’s guidance on it is explicit. It does not indicate an error, it does not affect the address lease or the update of the partner server, and the usual cause is several relay agents forwarding the same client broadcast to both failover nodes. The relay copies arrive fractions of a second apart with different relay agent addresses; failover has a time granularity of seconds, so the second copy looks like stale news. Configuring a delay on one of the relay agents also helps.
That leaves the rejections that are real. Failover has a set of events for messages refused because the message digest failed to compare, was not configured, or was not present – one pair per message type, covering BINDING-UPDATE, BINDING-ACK, CONNECT, CONNECTACK, STATE, CONTACT and the update messages. Those are shared-secret problems, and they stop replication properly.
Duplicate client requests from multiple relay agents
You have this one if 20291 and 20292 arrive in volume, always with the reject reason “Outdated binding information”, and both servers otherwise report a normal state.
- Confirm the reject reason in the event text before doing anything else.
- Check how many relay agents forward for that subnet. Several relays forwarding the same broadcast to both nodes is the documented cause.
- Configure a delay on one of the relay agents, or reduce the number of relays forwarding the same subnet.
There is nothing to repair on the DHCP servers in this case. Resynchronising the relationship changes nothing, because nothing is out of step.
The two servers disagree about the time
You have this one if Event ID 20253 is logged, naming the partner and the number of seconds the clocks are apart.
- Read the offset out of the 20253 event rather than estimating it.
- Fix time on whichever partner is wrong:
w32tm /query /statusto see its source, thenw32tm /resync. - If the server is a virtual machine, disable the hypervisor’s time synchronisation integration for it so the host stops overriding the domain hierarchy.
The shared secret does not match
You have this one if Events in the 20256 to 20284 range: a failover protocol message was rejected because the message digest failed to compare, was not configured, or was not present.
- Note which message type is being rejected – BINDING-UPDATE, CONNECT, STATE and so on – because it tells you how far the handshake gets.
- Reset message authentication on the relationship and set the same shared secret on both partners.
- Watch for Event ID 20311, 20312 or 20313, which record the shared secret being changed, enabled or disabled.
Scope configuration has drifted between the partners
You have this one if A scope exists or behaves differently on one server, and 20252 or 20251 state-change events appear around the same period.
- Decide which server holds the settings you want. Replication overwrites the partner from the server you run it on.
- Replicate at the level you need:
Invoke-DhcpServerv4FailoverReplication -ComputerName <server> -Forcefor the server, or the relationship and scope equivalents. - Where the partners run different Windows Server versions, initiate replication from the newer one, as documented.
Full reference
The failover events worth knowing by number
| Event ID | What it records |
|---|---|
| 20291 | A BINDING-ACK with a reject reason was sent to the partner for a named address |
| 20292 | A BINDING-ACK with a reject reason was received from the partner |
| 20251 / 20252 | The failover state of a server in the relationship changed from one state to another |
| 20253 | The server detected it is out of time synchronisation with its partner, and states the offset in seconds |
| 20254 / 20255 | Contact with the failover partner was established, or lost |
| 20256 – 20284 | A failover protocol message was rejected because the message digest failed to compare, was not configured, or was not present |
| 20286 | A BINDING UPDATE could not be replicated because the internal binding update queue is full |
| 20311 – 20313 | The shared secret was changed, or message authentication was enabled or disabled |
Two channels, two kinds of entry
Under Applications and Services Logs, Microsoft, Windows, DHCP-Server there are two channels that matter here. The Admin channel carries state transitions and the operational health of the relationship. The Operational channel carries configuration auditing, such as a scope being added to or removed from a relationship. If you are asking “what changed”, read Operational; if you are asking “what is it doing now”, read Admin.
What failover requires
- Both partners must be running at least Windows Server 2016.
- TCP 647 must be open between the partners, in both directions, for the persistent connection.
- Failover supports DHCPv4 scopes only. DHCPv6 scopes cannot be failover-enabled.
- A failover relationship is always between exactly two servers, though one server can hold several relationships.
- Scope changes are not replicated automatically. If you edit a failover-enabled scope, you must replicate it yourself.
Hot standby, load balance, and the reserve
In hot standby mode one server serves the scope and the partner holds a reserve percentage of the addresses – five per cent by default – for the case where the active server stops answering. In load balance mode both serve, and the servers hash the client’s hardware address to decide which of them replies. That hashing is why, in a healthy load-balanced pair, one server logs an audit entry saying it deliberately did not answer a client: it is not a fault, it is the other half of the pair taking that client.
The maximum client lead time governs how long a partner may extend a lease on its own authority when it cannot reach the other server. It is why a standby server hands out short leases during an outage rather than full-length ones, and why lease durations look wrong for a while after a partner comes back.
Before you rebuild a relationship
- Read the reject reason. If it is “Outdated binding information”, nothing is broken.
- Check 20254 and 20255 to see whether contact has genuinely been lost, and when.
- Check 20253 for a time offset, and fix time first if there is one.
- Check the message digest events for a shared secret mismatch.
- Only then consider deleting and re-creating the relationship, and replicate from the server whose configuration you want to keep.
When a licence is the actual fix
Most of this is configuration and costs nothing – relay agents, clocks, a shared secret. There is one case where it is not. DHCP failover requires both partners to be running at least Windows Server 2016, so a partner on an older build cannot take part in the relationship at all, and no amount of resynchronising changes that. If one half of your pair is on Windows Server 2012 or 2012 R2, both of which are out of support, the honest answer is that the server needs replacing rather than repairing, and Arco supplies Windows Server 2025 Standard along with the client access licences that go with it. If both partners are already on a supported build, this is not a licensing problem and you should not buy anything.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
Event ID 20291 |
This server sent a BINDING-ACK carrying a reject reason to its failover partner, for a named address and relationship | Microsoft Learn |
Event ID 20292 |
This server received a BINDING-ACK carrying a reject reason from its partner. The receive side of the same exchange | Microsoft Learn |
Event ID 20252 |
The failover state of a server in the relationship changed from one state to another | Microsoft Learn |
Event ID 20253 |
The server detected that it is out of time synchronisation with its partner, and reports the offset in seconds | Microsoft Learn |
Confirm the fix worked
- The reject reason in the events is read and recorded, not assumed.
Get-DhcpServerv4Failoveron both partners reports the same relationship in a normal state.- No new 20253 events appear, and
w32tm /query /statuson both servers names a sensible source. - No message digest rejection events (20256 to 20284) are being written.
- A test client leases and renews, and the lease is visible on both partners.
Questions people ask about this
Do 20291 and 20292 mean my leases are at risk?
Not where the reject reason is “Outdated binding information”. Microsoft states these events can be ignored, do not indicate an actual error, and do not affect the address lease or the update of the partner server.
Why do they appear in the hundreds?
Because several relay agents are forwarding the same client broadcast to both failover nodes. The copies arrive with slightly different times and relay addresses, and failover works to a granularity of seconds, so the later copy is treated as outdated. Configuring a delay on one relay agent reduces it.
Can I run failover between a new server and an old one?
Both partners must be running at least Windows Server 2016. A partner older than that cannot join the relationship.
Which server should I replicate from?
The one whose configuration you want to keep, because replication overwrites the partner. Where the two run different Windows Server versions, Microsoft’s guidance is to initiate from the newer one.
How far apart can the clocks be?
Read Event ID 20253 rather than working to a rule of thumb: it names the partner and states how many seconds the two servers are apart, which is the number to bring down.
