创建VPN在星巴克访问家里的电脑
本人对网络技术不是很熟悉,但因工作需要,准备自己搭建一个vpn网络,方便在星巴克之类的地方可以连接到家里或者公司的电脑(服务器等)。我们希望,在创建好的vpn网络中,节点(client)之间能够互相通信,就好比它们是在同一个网络中。在这里特地记录一下完整的搭建过程,方便自己后续搭建其他vpn网络。
在搭建vpn之前,大家最好还是对一些网络层的知识有一定的了解:例如局域网、子网掩码、网管、路由(直接看computer networking相关的书可能没有必要,太多的细节我们实际上并不需要去深入了解)都是什么东西?彼此之间是什么关系。清楚这些内容对于灵活配置以及解决一些搭建过程中的常见问题会非常有帮助。看到一个youtube的视频给了一个全方位的介绍,推荐大家看一下。
本文使用的vpn网络是基于openvpn来搭建的(官网上也有很多关于vpn网络的概念以及搭建细节内容,感兴趣的同学可以仔细学习一下,技多不压身:) ),Google一下还能找到别的很多可以创建vpn网络的软件,跟本文关系不大,这里先略过了。
一个vpn网络的搭建包括两部分的工作:
- vpn服务器(vpn server service)的搭建
- vpn客户端(vpn client)的安装
vpn server service需要搭建在一个具有公网IP的机器上,本文中我们使用一台阿里云的ECS主机,来安装vpn server service;我们的阿里云ECS主机是ubuntu22.04的系统。
作为客户端的机器,目前包括了macOS,ubuntu20.04等,在macOS上可以使用TunnelBlick,而在ubuntu20.04上我们继续使用openvpn本身的命令行客户端。
1. vpn server service的搭建
网络上介绍的关于vpn server service的搭建过程非常的多,但大多缺斤少两,无法按它们的步骤真的搭建出一个vpn的网络。一篇教程真的抵不过一个脚本,搭建vpn server service这种操作,事实上早已有人提供了安装启动脚本。本文使用了openvpn-install这个在github上具有高达19.2k☆的一个脚本在阿里云的云主机上安装vpn server service,但为了支持client-to-client
之间的通信,需要对原来的脚本做一些修改,所以推荐大家使用修改之后的openvpn-install。
登录你的阿里云主机(需要root权限),然后运行下面的命令:
# 下载该脚本(如果github访问有问题,需要自己科学上网进行下载)
git clone https://github.com/xuanhua/openvpn-install.git
# 进入目录并运行安装配置脚本
cd openvpn-install && bash openvpn-install.sh
按照脚本的提示,可直接一路选择默认值,进行到底。默认情况下vpn server service使用端口号:1194
安装完毕之后,我们需要查看一下vpn server service是否真的已经启动,可以通过查看1194这个端口是否已经处于监听状态:
# 关闭防火墙
netstat -tuln | grep -i 1194
如果一切正常,能够得到类似下面的输出内容:
udp 0 0 <some_internal_ip>:1194 0.0.0.0:*
祝贺你,你的vpn service service已经成功运行起来了,下面就等着各种设备来连接该服务了。
但在此之前,需要先确保阿里云主机的防火墙关闭以及安全组
的规则中允许你的阿里云主机接收来自对于1194
端口的访问
sudo ufw disable
另外,在阿里云的控制台
上找到你所购买的云主机,然后在安全组
下找到自己的云主机,然后点击管理规则
,接着选择快速添加
, 选择允许所有协议对于1194
端口接入。添加完安全组规则之后,选择刷新检查该规则是否依然存在。
一般来说端口不通,主要从云主机本身是否允许端口访问(例如防火墙是否开启?是否和其他程序之间使用了冲突的端口),以及阿里云本身配置的端口访问规则入手。
2. vpn client的安装
每一个端设备都需要一个能够连接到vpn网络的“凭证”, 即:”.opvn”文件,我们在阿里云主机上第一次运行bash openvpn-install.sh
的时候生成过第一个客户端所使用的”.opvn”文件。需要更多的”.opvn”文件可以在云主机上继续运行bash openvpn-install.sh
,然后我们将这些生成的客户端配置文件下载到各个客户端的 机器上。
在ubuntu20.04(作为vpn网络上的一个节点)上,可使用下面的命令,建立跟vpn服务器之间的连接。
# 假设你以及生成一个叫做 just_generated 客户端的配置文件
openvpn --suppress-timestamps --nobind --route-nopull --config just_generated.ovpn --daemon
在macOS(作为vpn网络上的一个节点)上,我们可以使用Tunnelblic作为vpn的客户端软件,然后选择添加’.opvn’文件,使用这个新的’.opvn’文件就能够连接到我们刚刚搭建的vpn网络中。
3. 结语
网络上还有很多关于搭建vpn的教程,想要了解更多细节以及其他vpn的配置方法的,也可以多参考一下。本文作为省流实操的一篇就不再重复别人讲过的内容了。vpn在实际工作中非常有用,希望这篇分享也能帮大家的工作提效,享受DIY的过程。
其他参考文献
- https://ubuntu.com/blog/setup-your-own-vpn-server
- https://blog.csdn.net/qq_38407462/article/details/134073149
- https://zhuanlan.zhihu.com/p/700696048
- https://blog.csdn.net/friendan/article/details/102869481