[PR #3017] fix(windows): preserve routes from virtual VPN interfaces #3054

Open
opened 2026-10-14 21:07:11 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/amnezia-vpn/amnezia-client/pull/3017
Author: @o-in-o
Created: 8/21/2026
Status: 🔄 Open

Base: dev ← Head: fix/windows-preserve-virtual-vpn-routes


📝 Commits (1)

  • 74a2417 fix(windows): preserve routes from virtual VPN interfaces

📊 Changes

1 file changed (+20 additions, -0 deletions)

View changed files

📝 client/platforms/windows/daemon/windowsroutemonitor.cpp (+20 -0)

📄 Description

Problem

On Windows, when Cisco AnyConnect is already connected and Amnezia is connected afterwards, the Cisco connection can be lost.

Cause

With default route capture enabled, WindowsRouteMonitor cloned routes from all non-Amnezia interfaces into the Amnezia interface. This included routes owned by virtual VPN adapters, so Cisco control and private-network traffic could be redirected into the Amnezia tunnel.

Fix

Skip routes whose interface is reported by GetIfEntry2 as a non-hardware interface. The original route remains on its virtual interface. Interface classification is cached by interface LUID.

Hardware-interface routes and Amnezia's own routes keep their existing behavior. If the interface lookup fails, the implementation preserves the previous behavior and treats the route as hardware-backed.

Validation

  • Release 5.0.0.5 build passed.
  • Verified that Cisco AnyConnect and Amnezia WireGuard adapters are classified as virtual and Cisco routes are excluded from capture.
  • The project has no registered CTest tests.
  • Live Cisco AnyConnect + Amnezia connection testing remains to be completed on a Windows host.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/amnezia-vpn/amnezia-client/pull/3017 **Author:** [@o-in-o](https://github.com/o-in-o) **Created:** 8/21/2026 **Status:** 🔄 Open **Base:** `dev` ← **Head:** `fix/windows-preserve-virtual-vpn-routes` --- ### 📝 Commits (1) - [`74a2417`](https://github.com/amnezia-vpn/amnezia-client/commit/74a2417a6683c4111099d6675ac43cae105d042e) fix(windows): preserve routes from virtual VPN interfaces ### 📊 Changes **1 file changed** (+20 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `client/platforms/windows/daemon/windowsroutemonitor.cpp` (+20 -0) </details> ### 📄 Description ## Problem On Windows, when Cisco AnyConnect is already connected and Amnezia is connected afterwards, the Cisco connection can be lost. ## Cause With default route capture enabled, WindowsRouteMonitor cloned routes from all non-Amnezia interfaces into the Amnezia interface. This included routes owned by virtual VPN adapters, so Cisco control and private-network traffic could be redirected into the Amnezia tunnel. ## Fix Skip routes whose interface is reported by GetIfEntry2 as a non-hardware interface. The original route remains on its virtual interface. Interface classification is cached by interface LUID. Hardware-interface routes and Amnezia's own routes keep their existing behavior. If the interface lookup fails, the implementation preserves the previous behavior and treats the route as hardware-backed. ## Validation - Release 5.0.0.5 build passed. - Verified that Cisco AnyConnect and Amnezia WireGuard adapters are classified as virtual and Cisco routes are excluded from capture. - The project has no registered CTest tests. - Live Cisco AnyConnect + Amnezia connection testing remains to be completed on a Windows host. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
amnezia-vpn/amnezia-client#3054
No description provided.