Table of Contents
连接 AnyConnect VPN 后,默认路由会被 VPN 接管,导致无法同时访问本地局域网内的服务器。以下是几种常见的解决思路。
前两种方式的前提是内网服务器能够连接互联网。
SD-WAN 方式
以 Tailscale 为例。只要目标机器有 TUN 权限,加入同一 Tailnet 后即可直接访问,无需暴露任何端口,连接快速且安全。
缺点:需要在内网服务器上安装并运行 Tailscale,对目标机器有一定要求。
内网穿透方式
任意穿透工具均可,需要一台公网服务器。以 NPS 为例:将内网服务器的 22 端口映射到公网服务器的 127.0.0.1:2222,客户端再通过 SSH Local Port Forwarding 将该端口引到本地,用 SSH 加密主要是为了增强安全性(配合密钥认证)。
缺点:配置链路较长,公网服务器是额外依赖。
OpenConnect + 路由分流
以上两种方式都需要内网机器具备出网能力。如果条件不满足,还有另一条路:用开源客户端 OpenConnect 替代官方 AnyConnect GUI,配合手动路由规则或代理分流工具(WireGuard / Clash),在保持 VPN 连接的同时精确控制哪些流量走 VPN、哪些走本地网关。
相比 AnyConnect GUI 的”全部接管”策略,OpenConnect 以命令行运行,路由配置完全由你掌控。
我针对这个场景开源了一个工具:openconnect-ssh,用于简化通过 OpenConnect 连接 VPN、同时保留本地网络访问与 SSH 连通性的整个流程,感兴趣可以看看。