diff --git a/olm/exitnode.go b/olm/exitnode.go index c11620c..bf96db2 100644 --- a/olm/exitnode.go +++ b/olm/exitnode.go @@ -176,7 +176,8 @@ func (o *Olm) removeExitNodePeerLocked() error { interfaceName := o.tunnelConfig.InterfaceName serverIPForRoute := strings.Split(cfg.ServerIP, "/")[0] + "/32" - if err := network.RemoveRouteForServerIP(serverIPForRoute, interfaceName); err != nil { + tunnelIPForRoute := strings.Split(cfg.TunnelIP, "/")[0] + if err := network.RemoveRouteForServerIPWithSource(serverIPForRoute, interfaceName, tunnelIPForRoute); err != nil { logger.Warn("Failed to remove route for exit node server IP: %v", err) } diff --git a/peers/manager.go b/peers/manager.go index 2b4f888..74bedb6 100644 --- a/peers/manager.go +++ b/peers/manager.go @@ -285,7 +285,7 @@ func (pm *PeerManager) RemovePeer(siteId int) error { return err } - if err := network.RemoveRouteForServerIP(peer.ServerIP, pm.interfaceName); err != nil { + if err := network.RemoveRouteForServerIPWithSource(peer.ServerIP, pm.interfaceName, pm.localIP); err != nil { logger.Error("Failed to remove route for server IP: %v", err) }