对于一家经营着海外业务的中国互联网公司,管理海外服务器,访问海外网络可以说是家常便饭的事情。但是基于国内访问海外的各种限制,想必大家都应该知道,“翻墙” 是一个很多运维工程师都会想到到的方案,我们一般对于这样的服务,另外一个叫法,就是 VPN。
VPN 服务的实现可以通过很多种办法,首先,可以购买有偿的付费的服务;其次,可以自己搭建自己的 VPN 服务。对于大部分的运维团队来说,购买付费服务肯定不是首选,理由这里就不说这么明了了。那么,采用自己搭建的 VPN 服务就是一个必然的选择。
传统的做法是这样的:
首选,我们会在海外,比如香港,购买一台云服务器,搭建 PPTP 服务,然后国内用户通过连接 PPTP 服务,进入到云服务器的网络,进而跳转到海外进行服务器管理。
往往理想很丰满,但现实很骨感,不经意间你会遇到下面的问题。
- 国内访问海外 VPN 服务器的网络不稳定,丢包率很高。
- 海外 VPN 服务器IP经常被某某某给封杀掉,直接无法连接 VPN 服务
- 遇到第2个问题,紧急切换 IP,海外服务器是否因为访问 IP 受限无法访问(如果你海外服务器做了IP访问限制的话)
以上3个问题足以让每一个运维人员头大好一阵,到底我们还有没有其他办法绕过这个坑呢?
当然办法是有的,只是要麻烦一点。
VPN服务 + 云服务
首先,我们的办法也是基于 VPN 服务作为数据包跳转的基本原理,然后再加上一部分其他云服务功能。
-
依照企鹅云为例,首先我们在香港和北京分别申请一台云主机,当然,两台云主机必须是存在于在各自的VPC私有网络之中,如果选择基础网络就没有办法进行下一步了
-
接着我们通过企鹅云的对等连接服务,将北京和香港的 VPC 私有网络给打通,建立一条封闭的网络通道
-
然后我们在香港的云主机完成 VPN 服务的搭建和部署
-
最后,我们通过云主机的iptables规则将北京云服务器的所有数据请求转向香港的云主机
逻辑架构图
st=>start: 用户
e=>end: 海外服务器
op1=>operation: 北京代理服务器
op2=>operation: 香港 VPN 服务器
sub1=>subroutine: 对等连接
st(right)->op1(right)->sub1(right)->op2(right)->e
采用以上的实践方案,可以完全规避前面我们提到的两个问题。
-
首先,用户访问的是国内的北京站点,网络有一定的保障,其实你可以还选择你物理地址最近的节点。
-
第二,北京和香港的数据互通是通过云服务商提供的私有网络的方式,保障了网络质量和安全。
-
第三,香港 VPN 主机作为主要的出口 IP,可以保障海外服务器的访问 IP 权限控制和安全
以上方案,其实原理是很简单的,也很容易实现。我们大部分的功能实现都是基于云服务实现,事例中采用了企鹅云,但包括阿里云,华为云,Ucloud等国内云都能实现以上的方案达到出海的目的。作为云服务的使用者,我们应该更多利用好云服务给我们提供的便利,达到提供更稳定,专业,高效的在线业务。
下面是文章中提到的两个云服务的介绍和描述
- VPC网络:https://cloud.tencent.com/document/product/215/4927
- 对等连接:https://cloud.tencent.com/document/product/215/5000