OpenVPN 和 Clash TUN Mode 共存方案详解

在边缘的临时办公场景中,经常需要同时使用 OpenVPN 和 Clash TUN Mode 来实现科学上网和访问公司内网的需求。然而,这两者同时使用时可能会出现冲突,导致网络连接问题。本文将详细介绍如何在 Linux 系统下实现 OpenVPN 和 Clash TUN Mode 的共存,并提供解决方案。

问题背景

Clash Verge Rev 主要用于科学上网,而 OpenVPN 主要用于访问公司内网。当两者同时开启时,可能会出现所有国内流量都通过 OpenVPN 的现象,导致公司内网访问速度变慢。这是因为 OpenVPN 和 Clash TUN Mode 都试图接管系统的网络流量,从而产生冲突。

解决方案

步骤一:验证网络连接

  1. 关闭 OpenVPN 和 Clash,测试是否正常上网。
  2. 开启 OpenVPN,加载原有配置文件,测试是否正常上网,并验证公网 IP 是否为公司网络。
  3. 关闭 OpenVPN,修改配置文件,加上以下两条,重新打开 OpenVPN,验证公网 IP 是否是家里的网络。

步骤二:找到目标虚拟网卡

执行 ifconfig|grep -i utun,记住现有的虚拟网卡名称。开启 OpenVPN 后,系统会创建新的虚拟网卡,例如 utun4

步骤三:获取路由表信息

执行 netstat -rn|grep -i utun4 获取 utun4 的路由表信息,这将帮助你了解 OpenVPN 的网络配置。

步骤四:推理出 OpenVPN 的配置

根据 netstat 命令输出的 CIDR 表示法,将其转换成传统的网络地址+子网掩码的写法。例如,将 10.10.128/17 转换为 10.10.128.0 255.255.128.0

步骤五:配置 OpenVPN

在 OpenVPN 配置文件中添加以下路由信息,并设置 route-nopull 阻止推送所有路由。

route-nopull
route 10.10.128.0 255.255.128.0 vpn_gateway
route 10.120.0.0 255.255.0.0 vpn_gateway
route 10.20.0.0 255.255.0.0 vpn_gateway
route 10.10.128.248 255.255.255.252 vpn_gateway
route 10.10.128.249 255.255.255.255 vpn_gateway

步骤六:配置 Clash

在 Clash Verge Rev 中,开启 DNS Overwrite 并设置 Fake IP Filter,将目标域名脱敏处理。这样,Clash 可以正确地管理流量,避免嵌套代理的问题。

- DOMAIN-KEY,example.com,[email protected]

其他注意事项

  • 在规则设置中,尝试使用 PROCESS-NAMEPROCESS-PATH-REGEX 来指定需要走 OpenVPN 代理的域名和进程,但可能没有效果。
  • 不同的 OpenVPN 客户端(如 Tunnelblick、Pritunl、Viscosity)表现不同,需要根据实际情况选择合适的客户端。

总结

通过以上步骤,可以在 Linux 系统下实现 OpenVPN 和 Clash TUN Mode 的共存,从而满足科学上网和访问公司内网的需求。希望本文提供的解决方案能够帮助到有类似需求的用户。

标签: none

评论已关闭