diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
index f5fcd43..517c1ce 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
@@ -697,6 +697,24 @@
             }
             if (router.enableSnat() && !router.external().isEmpty() && router.peerRouter() != null) {
                 initGatewayNodeSnatForRouter(router, router.electedGateway(), true);
+
+                KubevirtNode gatewayNode = kubevirtNodeService.node(router.electedGateway());
+
+                router.internal()
+                        .stream()
+                        .filter(networkId -> kubevirtNetworkService.network(networkId) != null)
+                        .map(kubevirtNetworkService::network)
+                        .forEach(network -> {
+                            String routerSnatIp = router.external().keySet().stream().findAny().orElse(null);
+                            if (routerSnatIp == null) {
+                                return;
+                            }
+
+                            kubevirtPortService.ports(network.networkId()).forEach(kubevirtPort -> {
+                                setStatefulSnatDownStreamRuleForKubevirtPort(router,
+                                        gatewayNode, kubevirtPort, true);
+                            });
+                        });
             }
         }
 
