最近单位迭代一个平台,功能跟微信公众号有关联,要开发API接口受理微信调用。平台测试服务器在内网,一开始我觉得这事很容易,在单位路由器上做虚拟服务器就行了。没想到试了好几次都不成功,找运营商技术支持一问才知道,我们用的是5G上网,运营商不给开放访问端口,我也真是醉了。
后来想到:测试服务器能上公网,单位也有云服务器,如果把两者通过VPN组成一个局域网,然后在云服务器上用iptables把端口指向到测试服务器,应该就能解决问题了。
具体连接方式如下图:

确定方案之后就开始搭建VPN服务器,我使用的是开源的OpenVPN服务。首先要制作证书,从 https://github.com/OpenVPN/easy-rsa/tree/release/2.x 可以下载证书制作工具,下载后是easy-rsa-release-2.x.zip。把easy-rsa-release-2.x.zip解压缩之后上传到VPN服务器/root目录。如下图:

进入/root/easy-rsa-release-2.x/easy-rsa/2.0/,咱们制作证书的所有命令都在这个目录里。如下图:

在目录里有vars文件,可以配置制作证书的参数。编辑这个文件 vim vars ,咱们只要调整下面这些配置的值就可以了。
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BeiJing"
export KEY_CITY="HaiDian"
export KEY_ORG="XXXXXX"
export KEY_EMAIL="XXXXXX@XXXXXX.XX"
export KEY_OU="Beijing XXXXXXX Technology Co.,Ltd."
其他的都不用修改。如下图:

vars改好之后保存,执行 source vars 使vars配置生效。如下图:

下面执行 ./clean-all 命令,执行后系统会在当前目录下自动创建一个keys目录,用来存放咱们生成的证书、私钥、连接文件等。如下图:

接下来开始生成根证书和密钥,执行 ./build-ca 命令。因为咱们之前已经在vars文件里把参数都配置好了,所以现在一直按回车就可以。如下图:

本文详细记录了如何利用OpenVPN在无法直接访问的内网测试服务器和云服务器之间建立连接。首先,由于5G上网限制,无法直接开放端口,于是提出通过在云服务器上设置iptables,将端口指向内网服务器的解决方案。接着,通过OpenVPN的证书制作和配置,成功搭建了服务端和客户端的VPN连接。最后,配置iptables和客户端连接,实现了云服务器对外服务的转发,从而解决了微信接口调用的问题。
1413

被折叠的 条评论
为什么被折叠?



