投稿    登录
  博主录制的Python3爬虫视频教程已发布!详情请戳Python3爬虫视频教程!希望大家支持!非常感谢!

计算机网络探究三之搭建并连接VPN服务器

Net 崔庆才 2540浏览 1评论

openvpn原理

VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。

它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。

目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Microsoft Windows以及Android和iOS上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。

openvpn通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Publice key,另外一个是Private key)对数据进行加密的。这种方式称为TLS加密。

openvpn使用TLS加密的工作过程是,首先VPN Sevrver端和VPN Client端要有相同的CA证书,双方通过交换证书验证双方的合法性,用于决定是否建立VPN连接。

然后使用对方的CA证书,把自己目前使用的数据加密方法加密后发送给对方,由于使用的是对方CA证书加密,所以只有对方CA证书对应的Private key才能解密该数据,这样就保证了此密钥的安全性,并且此密钥是定期改变的,对于窃听者来说,可能还没有破解出此密钥,VPN通信双方可能就已经更换密钥了。

扩展阅读:

openvpn

安装openvpn

首先,你需要有一台长期运行的服务器,大家可以用自己的闲置的电脑或者买一台阿里云啦。

我的服务器是Ubuntu 14.04,下面就演示一下我的配置过程。

安装

查看下版本并记录下来

20151030145358

在这里我们的版本是2.3.2

安装easy-rsa

easy-rsa是用来制作openvpn相关证书的,使用如下命令安装

好,一切准备就绪后,我们就开始制作证书啦,我们需要制作的有三个证书

CA证书、Server端证书、Client端证书。行动起来。

制作CA证书

openvpn与easy-rsa安装完毕后,我们需要在/etc/openvpn/目录下创建easy-rsa文件夹,如下

然后把/usr/share/easy-rsa/目录下的所有文件全部复制到/etc/openvpn/easy-rsa/下

当然,我们也可以直接在/usr/share/easy-rsa/制作相关的证书,但是为了后续的管理证书的方便,我们还是把easy-rsa放在了openvpn的启动目录下。

注意:由于我们现在使用的是ubuntu系统,所以我们必须切换到root用户下才能制作相关证书,否则easy-rsa会报错。如果是centos系统,则不存在此问题。

切换到root用户下,使用如下命令:

在开始制作CA证书之前,我们还需要编辑vars文件,修改如下相关选项内容即可

如图所示

20151030150125

之后,我们需要利用这个文件来制作我们的证书,保存一下。

然后一个很重要的一步,赋予权限,否则在制作证书的时候,值还是初始化的值。

vars文件主要用于设置证书的相关组织信息,红色部分的内容可以根据自己的实际情况自行修改。

其中export KEY_NAME=”germy” 这个要记住下,我们下面在制作Server端证书时,会使用到。

注意:以上内容,我们也可以使用系统默认的,也就是说不进行修改也是可以使用的。

然后使用source vars命令使其生效,如下:

注意:执行clean-all命令会删除,当前目录下的keys文件夹。

现在开始正式制作CA证书,使用如下命令:

一路回车即可。

制作完成后,我们可以查看keys目录里有什么东西。

如果你的目录下出现了ca.crt和ca.key两个文件,其中ca.crt就是我们所说的CA证书。如此,CA证书制作完毕。

现在把该CA证书的ca.crt文件复制到openvpn的启动目录/etc/openvpn下,如下:

制作Server端证书

CA证书制作完成后,我们现在开始制作Server端证书。如下:

上述命令中germy,就是我们前面vars文件中设置的KEY_NAME

查看 keys 目录

20151030150704

如果可以发现出现了 germy.crt,germy.csr,germy.key 文件,就说明成功了。

现在再为服务器生成加密交换时的Diffie-Hellman文件,如下:

你会发现目录下多了一个 dh2048.pem 文件。

以上操作完毕后,把germy.crt,germy.key,dh2048.pem 复制到 /etc/openvpn/ 目录下,如下:

如此,Server端证书就制作完毕。

制作Client端证书

Server端证书制作完成后,我们现在开始制作Client端证书,如下:

其中上述命令的cqc就是客户端证书名称,可以自定义

如果发现keys目录已经生成了cqc.csr、cqc.crt和cqc.key这个三个文件。其中cqc.crt和cqc.key两个文件是我们要使用的。

如此,Client端证书就制作完毕。

配置Server端

所有证书制作完毕后,我们现在开始配置Server端。Server端的配置文件,我们可以从openvpn自带的模版中进行复制。如下:

解压server.conf.gz 文件,使用如下命令:

注意:上述命令的意思是解压server.conf.gz文件后,然后删除原文件。

现在我们来修改server.conf文件

20151030151728

一共要修改3处文件

(1)修改了openvpn运行时使用的协议,由原来的UDP协议修改为TCP协议。生成环境建议使用TCP协议。

(2)修改了openvpn服务器的相关证书,由原来的server.csr、server.key修改为germy.crt、germy.key。

(3)修改了Diffie-Hellman文件,由原来的dh1024.pem修改为dh2048.pem。

配置文件修改完毕后,我们现在来启动openvpn,使用如下命令:

至此,服务器端的VPN已经配置完毕了。

客户端的配置

服务器端配置好了,我们需要用另一台机器来连接,这里我们的客户端依然是Ubuntu 14.04

首先我们需要从服务器上取到刚才生成的证书文件,那么我们需要的有什么呢?

20151030152200

首先这三个,ca.crt,cqc.crt,cqc.key

另外是一个模板,它是

/usr/share/doc/openvpn/examples/sample-config-files/client.conf

把这四个文件下载下来,然后放到客户端里。

比如我们保存到客户机的 home/user 文件夹下

20151030152421

把 client.conf 文件重命名为 client.ovpn

然后修改下面4处

其中 remote 就是你的服务器地址

配置好了之后,我们运行

如果最后的结果是  Sequence Completed

那就证明连接成功啦。

输入

你会发现多了一个tun0适配器,这就是openvpn的适配器。

至此,openvpn的配置和连接就全部完成啦。

参考来源

参考文献

如有问题,欢迎留言交流。

转载请注明:静觅 » 计算机网络探究三之搭建并连接VPN服务器

喜欢 (14)or分享 (0)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

想找人聊天解闷?想要学习干货?

微信公众号进击的Coder为你打造

进击的Coder

微信公众号 扫一扫关注