在阿里云服务器搭建Open未-皮-恩
Posted JohnnyFang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在阿里云服务器搭建Open未-皮-恩相关的知识,希望对你有一定的参考价值。
V-P-N(Virtual Private Network)虚拟私有网络,又称为虚拟专用网络,用于在不安全的线路上安全的传输数据,与专用网相对应。OpenV-P-N是一个能够实现V-P-N的开源软件,它支持 SSL/TLS 安全、Ethernet bridging、经由代理的 TCP 或 UDP 隧道和 NAT。另外,它也支持动态 IP 地址以及DHCP,可伸缩性足以支持数百或数千用户的使用场景,同时可移植至大多数主流操作系统平台上。
此次实验主要是通过阿里云服务器来搭建OpenV-P-N,模拟企业员工出差也能连接到公司内网。
- 阿里云服务器购买及基础设置
至少准备两台阿里云服务器,一台作为OpenV-P-N服务器兼职CA服务器,一台作为企业内网服务器。
1.1 主服务器购买
1.1.1 基础配置
因为只是模拟一下出差在外的员工使用内网服务,笔者在“基础配置”部分选择“按量付费”会相对划算;找到合适的地区去选购一台云服务器,配置低点也行,就是性能可能会差点,有可能会导致实验失败,笔者这边就选择2v4g了;镜像部分可根据自己的习惯来选择版本,如果选择CentOS8系列,下载服务需自己配置yum源;存储部分选择默认的40够用。该部分需注意所选择的服务器是在哪个可用区的,后面交换机设置环节要用到(如下图)。
如果是首次在阿里云进行付费操作,还需进行充值,并且最低充值金额为100元,当然用来做实验肯定是够的。
1.1.2 网络与安全组
首次购买需创建专用网络,点击“前往控制台创建”,里面有三个供选择的内网网段(如下图)。
由于选择的网段比较大,作为内网肯定用不了那么多,可以使用交换机来划分小的网段。需要注意交换机部分的可用区部分,后面内网服务器的地区选择需要与此处设定的可用区保持一致。保存设置后,返回之前的页面,点击刷新按钮即可看到专有网络和内网网内信息(如下图)。
“公网IP”部分,阿里云内网使用划分的172.30.0.0/24网段,要想通过外网连接,需要使用公网地址,因此购买时的“分配公网IP地址”前需要打√;“带宽计费模式”选择“按使用流量”会比较划算;“带宽峰值”默认5M够用,调低点也行,为了保准网速笔者改成10M(如下图)。
1.1.3 系统配置
“登录凭证”部分可选择“创建后设置”,和后面两台内网主机的密*码设成一样的,便于管理;“主机名”部分建议设一个比较好记的,便于通其他内网主机区分开(如下图)。
分组设置部分不用动;确认订单勾选《云服务器ECS服务条款》即可,其他部分不用动,另外要记得试验后进行实例释放(如下图)。
1.1.4 修改私网ip
进入控制台后可查看已购买的实例,并会显示实例的公网和内网地址。如想修改默认的实例私网地址,需先将实例暂停掉(如下图)。
1.2 内网服务器购买
内网服务器要求不高,配置比较随意,需注意的是“地域及可用区”要与主服务器保持一致,否则内网不在同网段无法连接;公网地址不用勾选;密*码部分选择后面设置,与主服务器保持一次便于管理(如下图)。
1.3 统一设置密*码
停止所有的实例服务,将所有实例勾选后,点击下方的“重置实例密*码”进行统一的密*码设置,如果想修改内网服务器的ip也可参照上面主服务的修改方法(如下图)。
- 连接及内网服务下载
2.1 阿里云服务器连接
阿里云服务器的登录可通过阿里云网页,也可通过xshell等方式连接。点击控制台实例右侧“远程连接”-“立即登录”-输入密*码后即可登录到对应的服务器(如下图)。
查看地址时显示的是内网地址而没有公网地址,因为使用了DNAT,通过防火墙将内网地址映射成为公网地址(如下图)。
2.2 内网服务器下载httpd服务
两台内网服务器下载并开启httpd服务,此时内网之间可以查看网页内网,外网暂时无法查看(如下图)。
另外,由于官方已经停止对CentOS8系列的更新,yum源这块需要自己去创建,当前笔者亲测可行的如下:
2.3 开放1194端口
使用OpenV-P-N会打开1194端口,在阿里云中是有防火墙的,默认的只允许了22端口、Windows远程桌面的3389端口和进行ping操作的-1端口,因此需要在阿里云上开放服务器的1194端口。
在阿里云的控制台左侧找到“安全组”,点击“安全组ID/名称”部分进入端口设置页面,选择“手动添加”(如下图)。
- 服务器配置文件准备及修改
3.1 下载服务
主服务器端下载openv-p-n软件和证书管理工具(如下图)。
3.2 生成服务器配置文件
openv-p-n默认的配置文件是在/etc/openv-p-n/目录下,但是现在没有相关的配置文件,可以拷贝参考案例到目录下,此时查看/etc/openv-p-n目录, 会发现多出了server.conf文件(如下图)。
3.3 准备证书签发相关文件
同理,执行 cp -r /usr/share/easy-rsa/ /etc/openv-p-n/easy-rsa-server 命令拷贝生成证书签发相关文件(如下图)。
3.4 准备签发证书相关变量的配置文件
执行 cp /usr/share/doc/easy-rsa/vars.example /etc/openv-p-n/easy-rsa-server/3/vars 命令生成签发证书相关的配置文件,这个配置文件规定了CA证书的有效期等,建议修改给CA和OpenV-P-N服务器颁发的证书的有效期,可适当加长。例如,CA的默认有效期是10年,可以改为100年;服务器的证书有效期默认为825天,可以改为10年(如下图)。
- 准备证书相关文件
4.1 初始化PKI和CA签发机构环境
进入到/etc/openv-p-n/easy-rsa-server/3/ 目录下,其实是一个软链接,指向的是3.0.8文件夹,tree可查看文件夹下的文件(如下图)。
初始化数据,在当前目录下生成pki目录及相关文件。当前是1个文件夹11个文件,执行 ./easyrsa init-pki 命令,使用tree查看,变成了4个文件夹,13个文件(如下图)。
4.2 创建CA机构
执行 ./easyrsa build-ca nopass 命令,创建自签名CA证书,并且不设口令,通用名可就用Easy-RSA CA,此时执行tree查看,已经有14个文件夹,18个文件。执行 openssl x509 -in pki/ca.crt -noout -text 命令可将证书的相关信息以文本形式输出,便于查看(如下图)。
也可执行 sz pki/ca.crt 命令可将证书保存到电脑桌面(如下图)。
*注意不要直接在页面登录中操作此命令,否则容易报错
4.3 创建服务端证书申请
执行 ./easyrsa gen-req server nopass 命令创建openv-p-n服务器证书申请文件,通用名部分可空,也可设置想要的名称。其中server是文件前缀,并且证书私钥文件是不设置口令的(如下图)。
4.4 签发服务端证书
执行 ./easyrsa help sign 命令可查看如何颁发证书。
针对上面的server.req的申请,颁发server类型的证书,即执行 ./easyrsa sign server server 命令生成,查看生成的证书显示的是v,因而是有效的,也可发送到桌面查看(如下图)。
4.5 创建DH秘钥
创建方法有脚本和命令行两种,这里就用脚本创建(命令行的为:openssl dhparam -out /etc/openv-p-n/dh2048.pem 2048),执行 ./easyrsa gen-dh 命令,等待一会,会生成一个一个pki/dh.pem文件(如下图)。
4.6 准备客户端证书环境
当前准备的证书是根CA和server的证书,有效期是100年和10年的,服务端的或者用户的证书需要准备一套新的环境。
主服务器执行 cp -r /usr/share/easy-rsa/ /etc/openv-p-n/easy-rsa-client 命令,创建一个用户的文件夹来装用户的证书等信息(如下图)。
4.7 创建客户端证书申请
进入到/etc/openv-p-n/easy-rsa-client/3/ 目录下,执行 ./easyrsa init-pki 命令生成证书申请所需目录pki和文件,同时创建用户johnnyfang的证书申请文件和私钥文件(如下图)。
4.8 签发客户端证书
进入到/etc/openv-p-n/easy-rsa-server/3目录下,将客户端证书请求文件复制到CA的工作目录,同时修改给客户端颁发的证书的有效期,建议改为90天或者180天(如下图)。
执行 ./easyrsa sign client johnnyfang 命令给johnnyfang用户签发客户端证书,查看证书索引数据库中多出了johnnyfang的证书信息,并且是v开头,所以是有效的(如下图)。
如果是企业内部,要签发的证书比较多,也可以考虑使用脚本,脚本内容如下:
测试一下脚本,以用户名为LeoMessi为例,是可以创建成功的(如下图)。
4.9 将CA和服务器证书相关文件复制到服务器相应的目录
执行 mkdir /etc/openv-p-n/certs 命令来创建一个文件夹来专门放CA和服务器的证书,同时将对应内容都拷贝进去(如下图)。
4.10 将客户端私钥与证书相关文件复制到服务器相关的目录
执行 mkdir /etc/openv-p-n/client/johnnyfang/ 命令创建johnnyfang的文件夹,同时将将johnnyfang的证书相关文件都拷贝到/etc/openv-p-n/client/johnnyfang目录下,以便用户拿到后放在Windows里使用(如下图)。
- 准备服务器端配置文件
5.1 修改配置文件
之前拷贝过来的/etc/openv-p-n/server.conf配置文件内容比较多,直接修改的话比较麻烦,可以考虑自己来重新创建。删除配置文件的全部内容,并填写如下内容(该部分截图有错,需将配置文件放在/etc/openv-p-n/server目录下):
5.2 准备日志相关目录
查看配置文件设置的openv-p-n和日志保存路径是否存在,不存在的需创建(如下图)。
- 准备iptables规则和内核参数
6.1 开启ip_forward
在上周的作业中,我们已经了解到,要想将内网和外网进行连接,需要开启中间服务器的ip_forward转发功能(如下图)。
6.2 添加SNAT规则
将规则写到配置文件中,其中,10.8.0.0/24为V-P-N网络中的虚拟网段,只要是从这个网段来的,就进行地址伪装处理,这里是将地址伪装成openv-p-n的内网地址,即172.30.0.1这个ip。
- 启动OpenV-P-N
CentOS8 默认缺失/usr/lib/systemd/system/openv-p-n@.service文件,可以从CentOS7复制文件,也可自己新建一个(如下图)。
重新加载后,可以设为启动并开机自启动。此时查看端口,1194端口已经打开,查看ip,发现多了虚拟网络的10.8.0.3的地址。查看日志,最后一项也显示了初始化完成(如下图)。
- 准备客户端配置文件
准备一个客户端的配置文件,这个配置文件是所有客户端共用的,同时生成客户端文件后缀必须为.ov-p-n,因为这个文件是要放在Windows中使用,而Windows对文件后缀比较敏感,其他的后缀会导致Windows无法识别(如下图,打码部分为公网ip,尽量减少空格,防止后面客户端无法登录)。
- Windows配置部署OpenV-P-N 客户端
9.1 安装Windows相关软件
Open-V-P-N客户端软件可以通过官网下载,不过现在好像没办法去官网下了,笔者这边刚好有一个安装程序就直接安装了。安装完成后,在电脑桌面会生成一个图标,右击图标,选择“打开文件所在的位置”后进入到上一级目录,有一个config文件夹,这个文件夹为后期保存证书等信息等文件夹(如下图)。
9.2 主服务器打包文件
主服务器段进入到/etc/openv-p-n/client/johnnyfang/目录下,可查看有4个文件,执行 tar cf /root/johnnyfang.tar ./ 命令将目录下的四个文件打包给root目录下,再发送到电脑桌面。在电脑桌面解压后剪切到上述config文件夹中(如下图)。
9.3 客户端测试
客户端在未连接时,电脑端是无法对内网进行ping或者访问页面的(如下图)。
连接后,则可以ping通内网,也能在本地访问内网网页,同时可以直接通过本地主机连接内网主机(如下图)。
- 故障排错
10.1 在tcp模式下开启explicit-exit-notify 导致无法启动
explicit-exit-notify 可以支持在UDP协议时,OpenV-P-N重启后客户端自动重新连接。如果配置文件里面有“explicit-exit-notify 1”,需要将“proto tcp”改为“proto udp”。
10.2 压缩算法错误导致连接失败
OpenV-P-N 2.4.x 客户端支持更新的压缩算法lz4-v2, 而comp-lzo是为老版本兼容使用,两者不要在一起混用,否则可能会导致连接失败。
10.3 工作模式错误
OpenV-P-N两种工作模式:TUN和TAP,它们都可以支持TCP和UDP协议,但如果服务器和客户工作模式不同,比如服务器为TAP,客户端为TUN,就会导致连接失败。
- 阿里云资源释放
完成实验后,记得将阿里云服务器的资源进行释放,否则在不关机的情况下,如果有流量产生会一直扣钱。
控制台停止服务器运行后,选择释放设置-立即释放。
删除安全组部分添加的TCP和UDP协议。
删除专有网络部分的交换机设置。
以上是关于在阿里云服务器搭建Open未-皮-恩的主要内容,如果未能解决你的问题,请参考以下文章