OpenVPN 服务器搭建:
系统:Ubuntu 14.04
、 安装openvpn,easy-rsa
sudo apt-get -y install openvpn libssl-dev openssl
sudo apt-get -y install easy-rsa
、 制作相关证书
openvpn的证书分为三部分:CA证书、Server端证书、Client端证书
2.1制作CA证书:
openvpn与easy-rsa安装完毕后,我们需要在/etc/openvpn/目录下创建easy-rsa文件夹,如下:
sudo mkdir /etc/openvpn/easy-rsa/
然后把/usr/share/easy-rsa/目录下的所有文件全部复制到/etc/openvpn/easy-rsa/下,如下:
sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
在开始制作CA证书之前,我们还需要编辑vars文件,修改如下相关选项内容即可。如下:
sudo vi /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY=" "
export KEY_PROVINCE=" "
export KEY_CITY=" "
export KEY_ORG=" "
export KEY_EMAIL=" "
export KEY_OU=" "
export KEY_NAME=" "
“”“”内可自己加
vars文件主要用于设置证书的相关组织信息,红色部分的内容可以根据自己的实际情况自行修改。
其中export KEY_NAME=" VPNServer "这个要记住下,我们下面在制作Server端证书时,会使用到。
进入root权限
然后使用source vars命令使其生效,如下:
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa# source vars
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa# ./clean-all
注意:执行clean-all命令会删除,当前目录下的keys文件夹。
现在开始正式制作CA证书,使用如下命令:
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa# ./build-ca
一路按回车键即可。
现在把该CA证书的ca.crt文件复制到openvpn的启动目录/etc/openvpn下,如下:
cp keys/ca.crt /etc/openvpn/
2.2 制作Server端证书
CA证书制作完成后,我们现在开始制作Server端证书。如下:
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa# ./build-key-server 文件名
注意:上述命令中 文件名,就是我们前面vars文件中设置的KEY_NAME,碰到[y/n]: 输入y。
现在再为服务器生成加密交换时的Diffie-Hellman文件,如下:
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa# ./build-dh
以上操作完毕后,把VPNServer.crt、VPNServer.key、dh2048.pem复制到/etc/openvpn/目录下。Server端证书就制作完毕。
2.3 制作client端证书
Server端证书制作完成后,我们现在开始制作Client端证书,如下:
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa# ./build-key 文件名
注意:上述命令中的client,是客户端的名称。这个是可以进行自定义的。碰到[y/n]: 输入y。
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa# ll keys/
其中client.crt 和client.key 两个文件是我们需要的。到此client端证书制作完毕。
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa# ./build-key client1
以此类推,生成多个client端证书。
三:配置Server端
所有证书制作完毕后,我们现在开始配置Server端。Server端的配置文件,我们可以从openvpn自带的模版中进行复制。如下:
root@iZ284zmibbzZ:/etc/openvpn/easy-rsa#
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn/
解压server.conf.gz 文件,使用如下命令
gzip -d server.conf.gz
现在我们来修改server.conf文件,如下:
port 1194
proto tcp
cert 服务器文件名
key 服务器文件名
dh dh2048.pem
#comp-lzo
client-to-client
配置文件修改完毕后,我们现在来启动openvpn,使用如下命令:
/etc/init.d/openvpn start
通过上图,我们可以很明显的看出openvpn已经在此启动,而且也确实使用的TCP协议的1194端口。
四:配置client 端
先把这几个文件复制到/home/ vpn_client_conf /目录下,然后再把openvpn客户端的配置文件模版也复制到/home/ vpn_client_conf /目录下。如下:
把client.conf文件重命名为client.ovpn,然后进行编辑,如下:
proto tcp
remote **** 1194
ca ca.crt
cert.crt
key.key
#comp-lzo
Client配置文件client.ovpn,修改了几个地方:
第一、使用的协议,由原来的UDP修改为TCP,这个一定要和Server端保持一致。否则Client无法连接。
第二、remote地址,这个地址要修改为Server端的地址。
第三、Client证书名称,这个要和我们现在使用的Client证书名称保持一直。
以上修改完毕后,我们要把这个几个文件放在同一个文件夹中(client.ovpn, ca.crt, client.crt, client.key),并且一定要保持client.ovpn这个文件名称是唯一的。否则在openvpn客户端连接时,会报错。
注意:建议客户端版本号要与服务器端openvpn的版本一直,否则可能会出现无法连接服务器的现象。
4.1 Windows客户端
把vpn_client_conf这个文件夹复制到openvpn客户端安装的config文件夹。
4.2 Linux OS
在Windows OS上测试完毕后,我们现在在切换到linux系统。在此我们以ubuntu14.04为例。
要在ubuntu上连接openvpnServer端,我们需要先安装openvpn软件,如下:
sudo apt-get -y install openvpn
注意:将服务器端的vpn_client_conf文件夹拷贝到本地Linux系统上。
不同的客户端使用不同的client.crt 、client.key、 client.ovpn。在连接Server端之前,一定要切换到root用户下。因为在连接Server端时,openvpn会在本机创建一个虚拟网卡,如果使用普通用户的话,是没有权限创建虚拟网卡的。
robin@Ubuntu:~/OpenVPN/vpn_ubuntu_client1_conf$ openvpn --config client1.ovpn