Skip to content

双OpenVPN + WireGuard组网远程开发

折腾了一下午,这篇文章是在网络联通后发出来的

背景

由于穷学生支付不起高昂的校园网月费,正常情况下,走公共出口是需要宽带账号登录的,我们网校给我们分配了一个服务器,使得我们可以走这个出口访问外网,那边给的是 OpenVPN的方案,只需要把所有流量代理到内网中这个服务器上,然后服务器再代理到外网,这样就可以访问外网了。但是这恰好和我家里的OpenVPN冲突了。

在未联通外网之前,我是无法通过OpenVPN连上家里的网络,因为家和学校不在同一子网,无论如何流量都是要到外网去的,传统校园网方案要钱,算了 于是有没有一种方法,可以让VPN1先把流量代理到出口服务器,然后再通过VPN2代理到家里呢?

解决方案

安装两个OpenVPN(一个是没办法启动两个连接的),一个代理到学校,一个代理到家里,家里那堆机器和云服务器是通过WireGuard组网的,所以我们只需要最终把流量代理到家里其中一台机器上就可以了。

可能存在的问题

按照此方案部署好后,我是能访问到家里的网络的,但是没法访问正常外网,这是因为OpenVPN1代理到学校的出口服务器,我猜测原因可能是由于DNS解析的问题,毕竟大部分域名换成IP就能访问了。

目前看来如果两边都开全局代理,会导致DNS解析出现问题(也有可能是这边绑定了网校自建DNS导致的,这个不是我能控制的),既然我们是想访问家里的资源而不是通过家里的网络上网,那么我们只需添加一些路由规则就可以了。

shell
# OpenVPN2的配置文件 .ovpn
# 代理特定地址的家内路由规则
route-nopull  # 不使用OpenVPN的默认路由
route 10.0.10.0 255.255.255.0 vpn_gateway # 集群的wg网段
route 192.168.31.0 255.255.255.0 vpn_gateway  # 小米路由器
route 172.16.0.0 255.240.0.0 vpn_gateway  # 目标主机上容器们的网段

实现

先启动OpenVPN1,代理到学校出口服务器,然后启动OpenVPN2,代理到家里,然后在家里的机器上启动WireGuard,将OpenVPN2的流量代理到家里的网络中。

其他

  • 本文只提供一个思路,具体实现还需要根据自己的网络环境来调整
  • WireGuard部署

目前已经实现了洗衣机自由,热水自由,校园网自由,只要愿意,一切都是自由的