Index: /trunk/src/VBox/Devices/Network/SrvIntNetR0.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/SrvIntNetR0.cpp	(revision 38935)
+++ /trunk/src/VBox/Devices/Network/SrvIntNetR0.cpp	(revision 38936)
@@ -1472,4 +1472,12 @@
                 pDstTab->aIfs[iIfDst].pIf            = pIf;
                 pDstTab->aIfs[iIfDst].fReplaceDstMac = fExact;
+                /*
+                 * We need to compare an updated destination address against host's address.
+                 * If we compare the address extracted from the packet it will match host's MAC
+                 * and will be passed up the stack which will cause duplicates if IP forwarding
+                 * is enabled on the host (see #5905).
+                 */
+                if (fExact)
+                    pDstMacAddr = &pIf->MacAddr;
                 intnetR0BusyIncIf(pIf);
             }
