未分类

Construct-a-VPN-by-making-use-of-OpenVPN

本文将图文并茂地介绍如何利用两台电脑搭建一个VPN。关于什么是VPN,VPN有什么作用等基础知识,本文暂时不作介绍。

基本信息

本次实验我使用了两台电脑来完成,一台电脑扮演VPN服务器,另一台则是客户端,下面是两台电脑的基本信息:

  • 服务器操作系统:Ubuntu 16.04
  • 客户端操作系统:Mac OS 10.12.1

一、前期准备

1、打开终端,为了方便后面的操作,先切换到root权限

获取root权限

2、安装openvpn、libssl-dev、openssl和easy-rsa。下面是命令行示例截图,由于我之前已经安装过这几个软件了,所以下面提示这几个已经是最新版。

安装软件

3、创建文件夹/etc/openvpn/easy-rsa/,然后把文件夹/usr/share/easy-rsa/ 下面的内容复制到刚才创建的文件夹中。

mkdir和cp

二、制作证书

1、准备制作CA证书,首先编辑一下/etc/openvpn/easy-rsa/vars 文件。使用sublime编辑器编辑。主要根据自己个人情况修改下面几处信息。

修改信息

修改完保存之后使用source vars命令使其生效,顺便clean一下。

生效

2、创建CA证书。使用build-ca来创建,配置信息全部保持默认即可。创建完之后列出keys文件夹的文件,我们可以发现多了ca.crt和ca.key两个文件。最后把CA的证书复制到openvpn的启动目录/etc/openvpn下。

创建CA证书

3、制作服务器证书。使用./build-key-server [name]创建服务器证书,这里的[name]即我们在前面配置vars文件的时候填写在export KEY_NAME=”hongchhvpn”这里的名字。同样,创建的时候保持默认配置即可。创建完之后列出keys文件夹下面的文件,可以发现hongchhvpn.csr、hongchhvpn.crt、hongchhvpn.key几个文件。

制作服务器证书
列举文件

4、为服务器生成加密交换时的Diffie-Hellman文件,使用./build-dh创建。创建完成之后列出keys文件夹下的文件,可以发现多了dh2048.pem。

生成Diffie-Hellman文件

5、将hongchhcpn.crt、hongchhcpn.key、dh2048.pem三个文件复制到openvpn的启动目录/etc/openvpn/下面。至此,服务端的证书制作完毕。下图中的vpnhongchh.*是我之前配置的另外一个VPN服务器的文件,忘记删了请忽略它。

复制文件

6、制作客户端证书。创建过程中的配置同样还是保持默认即可。创建完成之后列出keys文件夹,可以发现多了hongchh.crt、hongchh.csr、hongchh.key3个文件。

生成客户端证书
列举文件

三、配置服务器

1、从openvpn自带的模版中复制服务器配置文件到openvpn的启动目录并进行解压然后再配置。

复制并解压

使用sublime text编辑器打开配置文件,主要改动下面几个地方。把协议换成tcp协议,然后证书、密钥、dh这三个文件也相应地作修改。

配置协议
配置证书、密钥、dh

2、启动服务器。使用/etc/init.d/openvpn start 命令启动服务器,然后再用netstat -tunlp命令检查一下是否已经启动。如下面截图,我们可以看到1194端口上面运行着openvpn的进程,协议是tcp,说明服务器成功启动了。到这里,服务器算是搭建完成了。下面截图中你看到的是restart命令,其实是因为我前面启动了一次,现在重启一下截个图,效果一样。

启动服务器

四、配置客户端前期准备

1、在服务器这边先把相关证书准备好。把客户端证书和CA证书以及openvpn客户端的配置文件模版复制到/home/{user}下面。然后到/home/{user}目录下修改那几个文件的属性。

复制文件
修改属性

2、退出root用户,回到home目录下,把这几个文件复制到客户端。直接拿U盘拷贝到另一台电脑即可。

五、配置客户端

1、在客户端上面对client.conf文件内容进行修改,改动项跟之前配置服务器的时候类似,把udp改成tcp,把证书和密钥文件也修改成相应的文件名,同时在remote那里加上服务器地址。


配置客户端

2、下载安装Tunnelblick(Mac系统的一个openVPN客户端)。然后把刚才的client.conf配置文件拉进来,Tunnelblick会自动完成相应的配置。完成之后点击右下角的连接按钮即向VPN服务器发起连接。

Tunnelblick

3、连接成功。连接成功之后在日志处会有相应的提示,在Tunnelblick的桌面小窗口也有更加直观的提示,包括流量信息等都有提示。

日志
小窗口

4、使用ping命令,测试是否能ping通服务器。从前面连接成功的日志截图中可以看到连上VPN之后客户端分配到的IP为10.8.0.6,而服务器的IP地址为10.8.0.1(这里注意不是公网上面的IP,而是VPN虚拟专用网络上的IP,直接对公网IP进行ping可能不是正确的实验结果,因为你的电脑本来就可以访问到公网)。这里尝试对10.8.0.1执行ping指令。测试结果如下,可以ping通服务器,说明服务器与客户端之间的连通性良好,客户端与服务器之间可以通过VPN进行通信。

ping

到这里,利用openVPN进行VPN服务器与客户端配置的所有内容都已经完成,成功搭建了一个VPN服务器,并且通过客户端成功连接到了服务器,证明搭建的VPN是可用的,能够正常工作的,任务完成。

分享到