![绕过 VPN 的本地代理解决方案](https://linux22.com/image/1528482/%E7%BB%95%E8%BF%87%20VPN%20%E7%9A%84%E6%9C%AC%E5%9C%B0%E4%BB%A3%E7%90%86%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.png)
我在一个偏远的办公室工作,为了连接到公司资源,我们必须登录软件 VPN。经过身份验证后,此 VPN 将获取 IP 地址并将其网关配置为默认网关,从而将所有流量路由到公司网络。然后,为了能够访问任何公司资源(wiki、git 等),我们必须使用公司代理服务器。那里的问题是代理过滤器非常多,阻止访问许多常用站点,并且吞吐量范围从糟糕到可怕(通过 VPN 从 docker.io 下载 600MB 图像可能需要 20 分钟以上,而关闭 VPN 时则需要不到 1 分钟)。
我希望能够随时绕过 VPN(特别是进入 VPN 的默认路由)。我想的是一个本地代理服务器,它将所有流量路由到本地网络网关,而不是 VPN 网关。这样,我就可以避免管理网络/域旁路配置(我已经尝试过这样做了,而且至少有 200 个网络/IP,因此管理起来太麻烦了),并且仅在我连接到 VPN 并明确需要完全绕过它时才使用本地代理。我该如何实现这一点?
答案1
考虑到您正在尝试做的事情,以及公司推行其 VPN 政策的方式,YMMV。 (另外,确定你要修复的是一个糟糕的技术设置还是违反了实际的公司政策。前者让你成为一名修复了某些问题的技术人员,后者让你成为一名公然违反规则的员工。我会提供技术上的指导,但要小心执行)
连接到 VPN 后,我将从命令 shell 中工作,因此请继续打开它。我以提升权限的帐户运行此图像,因此所有这些命令对我来说“都有效”。您可能需要将命令添加sudo
到开头以提升命令执行权限,具体取决于您的帐户设置。
首先,我们需要删除 VPN 设置的默认路由。
route delete default
然后我们要为 VPN 添加路由,只允许访问公司内部的东西
route add 10.0.0.0/8 <IP of the VPN gateway>
然后我们返回使用本地路由器作为网关的正常默认设置
route add default <IP of your local gateway>
这将使默认流量使用您的本地下一跳,该下一跳应继续前进到您的本地 ISP 连接以进行互联网连接。但任何发往公司总部的流量都将转到 VPN 网关。
听起来你最初的尝试是为每个想要访问的互联网位置设置本地下一跳路由。虽然这样做会产生相同的最终结果,但需要很多工作跟上。良好的分割隧道设计恰恰相反;它指定需要特殊路径(通过 VPN 网关)的有限网络(公司 VPN),其他一切都应使用“正常方式”。
哦,如果你还没有这些信息,你可以通过运行获取当前路线信息
netstat -nr
在 VPN 上运行该程序以获取 VPN 网关信息,在 VPN 断开时运行该程序以获取正常网关信息。