VPN是架设在共享公共网络基础设置上的,可以将分布在不同区域的用户联系起来。这里将在Linux系统中使用OpenVPN构建虚拟专用网络,搭建OpenVPN服务器。
难度:★★★
在开始搭建服务之前,需要添加拓展包并安装OpenVPN软件包,这些都是正式配置之前的准备工作。在安装的过程中,使用yum命令。
下面使用yum命令安装epel-release软件包,从而添加拓展包。
在添加拓展包的过程中,会出现类似Is this ok的询问信息,输入y表示同意即可。除此之外还需要安装OpenVPN软件包,命令如下。
在安装时,等待其安装完成即可,不用进行其他操作。
接下来需要对OpenVPN配置。一般在正式配置某种服务之前,需要找到对应的配置文件,并使用cp命令复制一份,相当于对配置文件进行提前备份。
使用cp命令将OpenVPN的配置文件复制到/etc/openvpn目录中,这里需要指明配置文件所在的路径。
然后使用vim编辑器对配置文件server.conf进行修改,可以参考以下配置项进行修改。
冗余级别的范围为0~9。其中0表示静默运行,只记录致命错误;4表示合理的常规用法;5和6会帮助调试连接错误;9表示极度冗余,将会输出非常详细的日志信息。
在配置文件中为日志文件设置适当的冗余级别时,冗余级别越高,输出的信息越详细。
在生成证书时需要编辑配置文件、创建服务端┈证书和客户端证书,同时还需要对证书进行签约。
下面使用编辑器修改/etc/openvpn/easy-rsa/vars文件中的字段,比如指定国家、省份、邮箱地址等。
下面开始创建服务端证书及key,目录初始化后创建根证书,相关操作命令如下。
在具体的执行过程中,需要输入两次PEM密码(PEM Pass Phrase)和通用名(Common Name),如图2-13所示。此密码必须记住,不然以后不能为证书签名。
图2-13 配置密码及通用名
之后会生成根证书文件/etc/openvpn/easy-rsa/pki/ca.crt。接下来使用以下命令创建服务器端证书。
服务器端证书的创建过程如图2-14所示。
图2-14 服务器端证书的创建过程
生成的文件有两个,不过此时这两个文件还不是服务端证书。下面需要签约服务端证书。
命令中的前一个server是表示注册的server端,后一个server是可以自行定义的名字,但是要和前面命令起的名字一致。在签约服务端证书的过程中,需要确认的地方输入yes表示同意操作。输入之前创建根证书的时候输入的PEM密码,如果忘记了就得从创建根证书重新做起,最终生成服务端的证书为crt格式。
通过以上操作,生成的证书为/etc/openvpn/easy-rsa/pki/issued/server.crt。继续创建Diffie-Hellman,确保key可以穿过不安全的网络,命令如下。之后会生成dh.pem文件。
在/root目录中创建client子目录,将/root/easy-rsa复制到该子目录中,具体命令如下。
/root/easy-rsa路径是根据个人之前的存放路径决定的,用户需要根据自己的实际情况操作。初始化后,可以创建客户端key并生成证书。
将生成的client-yz.req导入并签约客户端证书。返回到easy-rsa(根据自己的目录进行返回),导入req。
在准备好证书之后,还需要修改服务器端的配置文件,启动OpenVPN服务并启用转发功能。之后就可以下载Windows OpenVPN客户端,并进行相应配置。
在生成服务器端和客户端证书之后,修改服务器端的配置文件内容如下。
下面加载tun内核模块并启用转发,如图2-15所示。加载tun内核模块以便于OpenVPN生成虚拟网卡。
图2-15 加载tun内核模块
使用编辑器修改/proc/sys/net/ipv4/ip_forward文件中的值为1。如果文件中的值为0,则表示禁止转发数据包。只有值为1时,才表示允许转发数据包。
使用sftp命令将在OpenVPN服务器中生成的客户端证书和key下载到客户端计算机中,三个相关文件如下。
进入官网下载OpenVPN客户端并进行安装,然后在安装目录中找到simple-config。将client.ovpn复制到E:\OpenVPN\ToVMware(用户可以自己定义路径)下,根据自己的实际安装情况进行选择。将下载的三个文件放入E:\OpenVPN\ToVMware路径下,然后编辑client.ovpn配置文件。具体编辑项如下。
打开OpenVPN客户端并在其上单击鼠标右键,在弹出的选项中选择导入配置文件。选中之前编辑好的配置文件,单击进行连接。如果结果报错,请查看错误日志,根据日志来处理报错信息。
在一些特定场景中,远程访问的人员没有公网IP,这时他们会使用内网地址通过防火墙设备进行网络地址转换后连接互联网。