澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

VPS之openVPN的安装配置

2019-11-10 作者:澳门新萄京官方网站   |   浏览(96)

本文介绍使用 OpenVPNCentOSUbuntu 上搭建基本的VPN服务的方法.

一、原理

大概就是通过虚拟网卡将物理层的数据流作为数据,在外面重新ssl打包报头,发往对面,再在对面重新解包发出去,

原文地址:

烂泥:ubuntu 14.04搭建OpenVPN服务器,14.04openvpn

本文由秀依林枫提供友情赞助,首发于烂泥行天下

公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问。

为了解决这个问题,打算使用VPN。对于VPN以前使用最多的是PPTP这个解决方案,但是PPTP相对于openvpn来说,没有openvpn安全,而且PPTP在linux下命令行支持不是很好,稳定性也不如openvpn。所以最后就选择openvpn来搭建VPN。

PS:本文在ubuntu 14.04上安装,openvpn服务器地址为192.168.1.8。

有关openvpn在centos6.6 64bit的配置完全可以使用,已经经过验证。文章后有centos详细配置命令及步骤。

一、openvpn原理

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

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

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

二、安装openvpn

openvpn的安装我们分为apt-get方式和源码方式,下面我们只讲解apt-get方式的安装。有关源码方式安装openvpn,可自行百度。

apt-get方式安装,我们可以使用如下命令:

sudo apt-get -y install openvpn libssl-dev openssl

openvpn安装完毕后,我们来查看openvpn的版本,如下:

openvpn --version

通过上图,我们可以看到openvpn目前的版本为2.3.2。这个版本号,建议记住。

我们再来查看下openvpn安装时产生的文件,如下:

dpkg -L openvpn |more

通过上图,我们可以很明显的看出openvpn已经有相关配置的模版了。

openvpn安装完毕后,我们再来安装easy-rsa。

easy-rsa是用来制作openvpn相关证书的。

安装easy-rsa,使用如下命令:

sudo apt-get -y install easy-rsa

查看easy-rsa安装的文件,如下:

dpkg -L easy-rsa |more

通过上图,我们可以很明显的看到easy-rsa已经安装到/usr/share/easy-rsa/目录下。

三、制作相关证书

根据第一章节openvpn的工作原理,我们可以知道openvpn的证书分为三部分:CA证书、Server端证书、Client端证书。

下面我们通过easy-rsa分别对其进行制作。

3.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/

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

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

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

sudo su

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

sudo vi /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="CN"

export KEY_PROVINCE="HZ"

export KEY_CITY="HangZhou"

export KEY_ORG="ilanni"

export KEY_EMAIL="[email protected]"

export KEY_OU="ilanni"

export KEY_NAME="vpnilanni"

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

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

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

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

source vars

./clean-all

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

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

./build-ca

一路按回车键即可。制作完成后,我们可以查看keys目录。如下:

ll keys/

通过上图,我们可以很明显的看到已经生成了ca.crt和ca.key两个文件,其中ca.crt就是我们所说的CA证书。如此,CA证书制作完毕。

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

cp keys/ca.crt /etc/openvpn/

ll /etc/openvpn/

3.2 制作Server端证书

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

./build-key-server vpnilanni

注意:上述命令中vpnilanni,就是我们前面vars文件中设置的KEY_NAME

查看生成的Server端证书,如下:

ll keys/

通过上图,可以很明显的看到已经生成了vpnilanni.crt、vpnilanni.key和vpnilanni.csr三个文件。其中vpnilanni.crt和vpnilanni.key两个文件是我们要使用的。

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

./build-dh

查看生成的文件,如下:

ll keys/

通过上图,我们可以很明显的看出已经生成了dh2048.pem,这个文件。

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

cp keys/vpnilanni.crt keys/vpnilanni.key keys/dh2048.pem /etc/openvpn/

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

3.3 制作Client端证书

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

./build-key ilanni

注意:上述命令中的ilanni,是客户端的名称。这个是可以进行自定义的。

如果你想快速生成用户证书不需要手工交互的话,可以使用如下命令:

./build-key --batch test1

查看生成的证书,如下:

ll keys/

通过上图,我们可以很明显的看出已经生成了ilanni.csr、ilanni.crt和ilanni.key这个三个文件。其中ilanni.crt和ilanni.key两个文件是我们要使用的。

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

四、配置Server端

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

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.gz文件后,然后删除原文件。

现在我们来修改server.conf文件,如下:

grep -vE "^#|^;|^$" server.conf

port 1194

proto tcp

dev tun

ca ca.crt

cert vpnilanni.crt

key vpnilanni.key

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo

persist-key

persist-tun

status openvpn-status.log

verb 3

与原模版文件相比,在此我修改几个地方。

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

第二、修改了openvpn服务器的相关证书,由原来的server.csr、server.key修改为vpnilanni.crt、vpnilanni.key。

第三、修改了Diffie-Hellman文件,由原来的dh1024.pem修改为dh2048.pem。

注意:上述server.conf文件中vpnilanni.crt、vpnilanni.key、dh2048.pem要与/etc/openvpn/目录下的相关文件一一对应。

同时,如果上述文件如果没有存放在/etc/openvpn/目录下,在server.conf文件中,我们要填写该文件的绝对路径。如下所示:

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

/etc/init.d/openvpn start

netstat -tunlp |grep 1194

通过上图,我们可以很明显的看出openvpn已经在此启动,而且也确实使用的TCP协议的1194端口。

五、配置Client端

Server端配置并启动后,我们现在来配置Client端。Client端根据操作系统的不同,又分为Linux OS上和Windows OS上。以下我们对此一一惊醒讲解。

5.1 在Windows OS上

无论是在Windows OS还是在Linux OS上Client端的配置,我们都需要把Client证书、CA证书以及Client配置文件下载下来。

先来下载Client证书和CA证书,Client证书我们主要使用crt和key结尾的两个文件,而CA证书我们主要使用crt结尾的文件。如下:

先把这几个文件复制到/home/ilanni/目录下,然后再把openvpn客户端的配置文件模版也复制到/home/ilanni/目录下。如下:

cp ilanni.crt ilanni.key ca.crt /home/ilanni/

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

修改以上几个文件的用户属性,如下:

chown ilanni:ilanni ilanni.*

chown ilanni:ilanni ca.crt

修改完毕后,退出root用户,回到ilanni用户的家目录下,然后使用sz命令把这几个文件下载下来。如下:

sz -y ilanni.crt ilanni.key ca.crt client.conf

下载完毕后,把client.conf文件重命名为client.ovpn,然后进行编辑,如下:

client

dev tun

proto tcp

remote 192.168.1.8 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert ilanni.crt

key ilanni.key

ns-cert-type server

comp-lzo

verb 3

Client配置文件client.ovpn,我修改了几个地方:

第一、使用的协议,由原来的UDP修改为TCP,这个一定要和Server端保持一致。否则Client无法连接。

第二、remote地址,这个地址要修改为Server端的地址。

第三、Client证书名称,这个要和我们现在使用的Client证书名称保持一直。

以上修改完毕后,我们要把这个几个文件放在同一个文件夹中,并且一定要保持client.ovpn这个文件名称是唯一的。否则在openvpn客户端连接时,会报错。如下:

安装openvpn for windows客户端,我们可以从这个地址下载,如下:

注意:下载的客户端版本号一定要与服务器端openvpn的版本一直,否则可能会出现无法连接服务器的现象。

我们现在服务器端的openvpn版本是2.3.2,所以客户端也建议使用2.3.2的版本。

下载并安装后,把testilanni这个文件夹复制到openvpn客户端安装的config文件夹。如下:

现在我们来启动openvpn客户端连接Server,如下:

注意:上图中的client就是根据client.ovpn,这个文件名来的。

点击connect,会出现如下的弹窗:

如果配置都正确的话,会出现如下的提示:

通过上图,我们可以很明显的看到Client已经正确连接Server端,并且获得的IP地址是10.8.0.6。

下面我们在本机查看下,该IP地址,如下:

通过上图,我们可以看到本机确实已经连接到Server端,而且获得的IP地址也确实为10.8.0.6。

5.2 在Linux OS上

在Windows OS上测试完毕后,我们现在在切换到linux系统。在此我们以ubuntu14.04为例。

要在ubuntu上连接openvpnServer端,我们需要先安装openvpn软件,如下:

sudo apt-get -y install openvpn

安装完毕后,把我们刚刚在Windows系统配置的文件上传到ubuntu系统中。如下:

注意:上传完毕后,我们不需要修改任何配置文件。因为这几个文件在Windows下已经可以正确连接openvpn Server端。

注意:在连接Server端之前,一定要切换到root用户下。因为在连接Server端时,openvpn会在本机创建一个虚拟网卡,如果使用普通用户的话,是没有权限创建虚拟网卡的。

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

sudo su

现在开始连接Server端,使用如下命令:

openvpn --config client.ovpn

如果出现上图的信息,说明已经正确连接Server端。

现在我们在本机使用ifconfig进行查看,在此建议重新开启一个新的ssh窗口,如下:

ifconfig

澳门新萄京官方网站,通过上图,我们可以很明显的看出,本机已经正确连接Server端,并且也在本机虚拟出一个叫tun0的虚拟网卡。

如果想让ubuntu开机启动并后台运行的话,可以把这条命令写入rc.local文件中。如下:

/usr/sbin/openvpn --config /home/ilanni/testilanni/client.ovpn >/var/log/openvpn.log &

注意,命令末尾的&符号不能省略,否则将可能阻塞系统的正常启动。

同时这个时候,client.ovpn文件中有关证书的配置一定要写成绝对路径,要不然系统会报错。如下:

如果是centos系统的话,我们首先需要安装epel源,然后安装openvpn软件包。如下:

rpm -ivh

yum -y install openvpn

以上安装完毕后,把Windows已经成功连接的Client相关文件上传到centos系统中,然后连接方法和ubuntu系统上一样。

注意:如果在centos系统要开机启动的话,也是和ubuntu系统是一样的,但是有一点需要指出就是Client相关配置文件不能放在/root目录下。

给一个正确配的例子,如下:

因为centos的openvpn server配置和unubutn基本一样,所以就不再单独写一篇有关centos下安装配置openvpn sever的文章。

但是附上在centos下,所有执行的命令。如下:

rpm -ivh

yum -y install openvpn

rpm -ql openvpn

cat /usr/share/doc/openvpn-2.3.7/sample/sample-config-files/README

yum -y install easy-rsa

rpm -ql easy-rsa

cd /usr/share/easy-rsa/2.0/

vim vars

export KEY_COUNTRY="CN"

export KEY_PROVINCE="HangZhou"

export KEY_CITY="HZ"

export KEY_ORG="ilanni"

export KEY_EMAIL="[email protected]"

export KEY_OU="MyOrganizationalUnit"

export KEY_NAME="ilanni"

source vars

./clean-all

./build-ca

./build-key-server ilanni

./build-dh

./build-key centos

cd  keys

cp ca.crt ilanni.key ilanni.crt /etc/openvpn/

cp ca.crt centos.key centos.crt /root/

cp /usr/share/doc/openvpn-2.3.7/sample/sample-config-files/client.conf /root

cp /usr/share/doc/openvpn-2.3.7/sample/sample-config-files/server.conf /etc/openvpn/

服务器端配置文件:

vim /etc/openvpn/server.conf

grep -vE ";|#|^$" /etc/openvpn/server.conf

port 1194

proto udp

dev tun

ca ca.crt

cert ilanni.crt

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo

persist-key

persist-tun

status openvpn-status.log

verb 3

客户端配置文件:

grep -vE ";|#|^$" centos.conf

client

dev tun

proto udp

remote 182.254.223.140 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert centos.crt

key centos.key

remote-cert-tls server

comp-lzo

verb 3

14.04搭建OpenVPN服务器,14.04openvpn 本文由 秀依林枫 提供友情赞助,首发于 烂泥行天下 公司分部需要连接公司内部的服务器,但...

VPN技术

  • IP 机制仿真出一个私有的广域网 "
    通过私有的隧道技术在公共数据网络上仿真一条点到点的专线技术。所谓虚拟,是指用户不再需要拥有实际的长途数据线路,而是使用 Internet 公众数据网络的长途数据线路。
  • OpenVPN
    可以将两个不同的网段打通一条通道,可以互相访问,对于运维人员来说主要是为了安全,因为 OpenVPN ssl 加密机制,增加了密码的安全度,运维人员可以自定义 ip 段进行管理服务器,简单点说,安全方便。
  • 原理
    openvpn通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Publice key,另外一个是Private key)对数据进行加密的。
    这种方式称为TLS加密openvpn使用TLS加密的工作过程是,首先VPN Sevrver端和VPN Client端要有相同的CA证书,双方通过交换证书验证双方的合法性,用于决定是否建立VPN连接。
    然后使用对方的CA证书,把自己目前使用的数据加密方法加密后发送给对方。
    由于使用的是对方CA证书加密,所以只有对方CA证书对应的Private key才能解密该数据,这样就保证了此密钥的安全性,并且此密钥是定期改变的,对于窃听者来说,可能还没有破解出此密钥,VPN通信双方可能就已经更换密钥了。

生成所需密钥和证书

OpenVPN 使用 Easy-RSA 来管理PKI所需要的密钥和证书. Easy-RSA 现在有2和3两个主要版本, 使用方式略有不同. 下面分别介绍用法. 可以根据自己使用的版本选择一种来操作.

二、配置文件

openvpn的配置文件主要有三个:vars、server.conf、client.conf,下面我们对这三个配置文件进行一一的详解。

上次写的<VPS的购买和使用>中提到了openVPN,也做了一点点简单的介绍,有朋友也问了一些关于vpn的问题
首先,我所购买的vps是基于OpenVZ类型,无法配置标准的VPN(无测试过),部分手机可能无法支持,但OpenVZ支持pptp和openVPN

OpenVPN搭建

  1. 检测系统中的虚拟网络设备是否启用
    cat /dev/net/tun
  • 若正常启用则返回如下消息
    cat: /dev/net/tun: File descriptor in bad state
  1. 确保已经安装如下包,没有则安装一遍
    yum install gcc make rpm-build autoconf.noarch zlib-devel pam-devel openssl-devel -y
    PS:-y参数表示安装过程中的选项一直默认选yes

  2. 安装LZO来对传输的数据进行压缩,减少通讯时间
    wget http://openvpn.net/release/lzo-1.08-4.rf.src.rpm

  3. 默认的CentOS源,软件太少了,添加额外的RpmForge源
    wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

  4. 编译包文件

rpm -Uvh lzo-*.rpm
rpm -Uvh rpmforge-release*```

6. 安装OpenVPN
```yum install openvpn -y```

1. 查看OpenVPN版本
```openvpn --version``` 

1. 下载easy-rsa 到 /etc/openvpn/

wget https://github.com/OpenVPN/easy-rsa/releases/download/2.2.2/EasyRSA-2.2.2.tgz
tar -zxvf EasyRSA-2.2.2.tgz
cd EasyRSA-2.2.2
chmod 755 *

1. 修改
在执行命令之前,我们需要修改下面的这个文件
``` vi /etc/openvpn/EasyRSA-2.2.2/vars```
将下列行
```export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` ```
改为
```export KEY_CONFIG= etc/openvpn/EasyRSA-2.2.2/openssl-1.0.0.cnf
  1. 创建证书
    • 初始化
source ./vars
./vars
./clea-nall
  • 创建CA证书
    ./build-ca
    此时查看当前目录,会发现多了keys目录,进入目录后可看见ca.crt和ca.key文件,.crt文件就是我们所说的证书

    • 创建server端证书
      ./build-key-server server
      在keys中生成了三个文件server.crt server.csr server.key
  • 为服务器生成加密交换时所用的Diffie-Hellman文件

PS:迪菲-赫尔曼通过公共信道交换一个信息,就可以建立一个可以用于在公共信道上安全通信的共享秘密(sharedsecret)。

``` ./build-dh```

制作Client端证书
./build-keyclientEMo

  • 服务器配置

  • 复制OpenVPN中的服务端配置文件到下列目录中
    cp /usr/share/doc/openvpn-2.3.10/sample/sample-config-files/server.conf/etc/openvpn

  • 修改配置文件
    vi /etc/openvpn/server.conf
    修改以下行

ca /etc/openvpn/EasyRSA-2.2.2/keys/ca.crt
cert /etc/openvpn/EasyRSA-2.2.2/keys/server.crt
key /etc/openvpn/EasyRSA-2.2.2/keys/server.key
dh /etc/openvpn/EasyRSA-2.2.2/keys/dh2048.pem

服务端的配置完成

这条语句看你个人需求,是不是要跨出去 ̄へ ̄
;push "redirect-gateway def1 bypass-dhcp"

  • 配置防火墙
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
  • 启动OpenVPN服务

service openvpn start

  • 查看端口是否启动

显示ok则成功


Easy-RSA 2

1.vars配置文件

vars配置文件的主要内容如下:

#cat vars |grep -vE “^#|^$”

KEY_DIR定义key生成的目录。

KEY_SIZE定义生成私钥的大小,一般为1024或2048,默认为2048位。这个就是我们在执行build-dh命令生成dh2048文件的依据。

CA_EXPIRE定义CA证书的有效期,默认是3650天,即10年。

KEY_EXPIRE定义密钥的有效期,默认是3650天,即10年。

KEY_COUNTRY定义所在的国家。

KEY_PROVINCE定义所在的省份。

KEY_CITY定义所在的城市。

KEY_ORG定义所在的组织。

KEY_EMAIL定义邮箱地址。

KEY_OU定义所在的单位。

KEY_NAME定义openvpn服务器的名称。

以上就是vars配置文件的全部内容,有关vars配置文件的使用,我们也可以系统的默认配置

请登录OPENVPN官网查阅最新资料<;

OpenVPN客户端配置(MacBook)

  • 将服务器上的ca.crt clientEMo.crt clientEMo.key三个文件拷到本地
scp -p 端口号  用户名@服务器IP:/etc/openvpn/EasyRSA-2.2.2/keys/{clientEMo.{crt,key},ca.crt}  /Users/mac/Desktop/key
  • 我们还需要一款OpenVPN的客户端软件
    依据openvpn官方文档推荐
    选用Tunnelblick.
    下载和使用都在上面连接里有

编辑客户端配置文件
注意协议要和服务端保持一致
将配置文件和我从服务器上下来的三个文件放在一起

双击config.ovpn 就会弹出Tunnelblick窗口,会将当前config.ovpn文件与Tunnelblick中的默认文件替换,之后再链接直接在Tunnelblick标题栏中的图标上点击connect即可

在terminal中可以ping 下服务器的内网地址,看看是否成功。

安装

在Ubuntu 16.04上使用 apt 安装的是Easy-RSA 2:

# apt-get install -y easy-rsa

安装完成后, 可以在 /usr/share/easy-rsa/ 目录下找到生成密钥对和证书的脚本. 这些脚本会将生成的密钥和证书放在当前目录, 为了安全, 我们将这些脚本复制到 /root 目录下:

# cp -r /usr/share/easy-rsa /root

2.server.conf服务器端配置文件

服务器端配置文件server.conf,是这三个配置文件中最重要的一个,也是所有对openvpn客户端推送的信息,都是通过这个文件进行配置的。

#grep -vE “^#|^$” server.conf

;local a.b.c.d

定义openvpn监听的IP地址,如果是服务器单网卡的也可以不注明,但是服务器是多网卡的建议注明。

port 1194

定义openvpn监听的的端口,默认为1194端口。

proto tcp

;proto udp

定义openvpn使用的协议,默认使用UDP。如果是生产环境的话,建议使用TCP协议。

dev tun

;dev tap

定义openvpn运行时使用哪一种模式,openvpn有两种运行模式一种是tap模式,一种是tun模式。

tap模式也就是桥接模式,通过软件在系统中模拟出一个tap设备,该设备是一个二层设备,同时支持链路层协议。

tun模式也就是路由模式,通过软件在系统中模拟出一个tun路由,tun是ip层的点对点协议。

具体使用哪一种模式,需要根据自己的业务进行定义。

ca ca.crt

定义openvpn使用的CA证书文件,该文件通过build-ca命令生成,CA证书主要用于验证客户证书的合法性。

cert vpnilanni.crt

定义openvpn服务器端使用的证书文件。

key vpnilanni.key

定义openvpn服务器端使用的秘钥文件,该文件必须严格控制其安全性。

dh dh2048.pem

定义Diffie hellman文件。

server 10.8.0.0 255.255.255.0

定义openvpn在使用tun路由模式时,分配给client端分配的IP地址段。

ifconfig-pool-persist ipp.txt

定义客户端和虚拟ip地址之间的关系。特别是在openvpn重启时,再次连接的客户端将依然被分配和断开之前的IP地址。

username-as-common-name

#使用客户提供的UserName作为Common Name

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

定义openvpn在使用tap桥接模式时,分配给客户端的IP地址段。

;push “route 192.168.10.0 255.255.255.0”

向客户端推送的路由信息,假如客户端的IP地址为10.8.0.2,要访问192.168.10.0网段的话,使用这条命令就可以了。

;client-config-dir ccd

这条命令可以指定客户端IP地址。

使用方法是在/etc/openvpn/创建ccd目录,然后创建在ccd目录下创建以客户端命名的文件。比如要设置客户端 ilanni为10.8.0.100这个IP地址,只要在 /etc/openvpn/ccd/ilanni文件中包含如下行即可:

ifconfig-push 10.8.0.200 255.255.255.0

push “redirect-gateway def1 bypass-dhcp”

这条命令可以重定向客户端的网关,在进行翻墙时会使用到。

;push “dhcp-option DNS 208.67.222.222”

向客户端推送的DNS信息。

假如客户端的IP地址为10.8.0.2,要访问192.168.10.0网段的话,使用这条命令就可以了。如果有网段的话,可以多次出现push route关键字。同时还要配合iptables一起使用。

client-to-client

这条命令可以使客户端之间能相互访问,默认设置下客户端间是不能相互访问的。

duplicate-cn

定义openvpn一个证书在同一时刻是否允许多个客户端接入,默认没有启用。

keepalive 10 120

定义活动连接保时期限

comp-lzo

启用允许数据压缩,客户端配置文件也需要有这项。

;max-clients 100

定义最大客户端并发连接数量

;user nobody

;group nogroup

定义openvpn运行时使用的用户及用户组。

persist-key

通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。

persist-tun

通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的。否则网络连接,会先linkdown然后再linkup。

status openvpn-status.log

把openvpn的一些状态信息写到文件中,比如客户端获得的IP地址。

log openvpn.log

记录日志,每次重新启动openvpn后删除原有的log信息。也可以自定义log的位置。默认是在/etc/openvpn/目录下。

;log-append openvpn.log

记录日志,每次重新启动openvpn后追加原有的log信息。

verb 3

设置日志记录冗长级别。

;mute 20

重复日志记录限额

以上就是openvpn服务器端server.conf配置文件的内容。

澳门新萄京官方网站 1

生成CA密钥和证书

接下来的操作都是在 /root/easy-rsa 目录下进行的.

首先, 我们需要生成CA根密钥和证书, 用来给VPN Server和Client的证书进行签名.

  1. 修改 vars 文件
    vars 文件里定义了后续生成密钥和证书所需要的环境变量. 在文件里找到定义 KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, 和 KEY_EMAIL 变量的部分, 根据自己的实际情况修改为需要的值. 这几个值都不能留空. 如下

     export KEY_COUNTRY="CN"
     export KEY_PROVINCE="ZJ"
     export KEY_CITY="HZ"
     export KEY_ORG=" MyCompany"
     export KEY_EMAIL="support@mycompany.com"
    

    其它变量的意义可以参考文件中的注释, 一般不需要修改.
    修改保存后, 执行以下命令来使这些变量生效供后续操作使用:

     # source ./vars
    
  2. 生成密钥和证书
    接下来执行以下脚本来生成CA的密钥和证书

     # ./build-ca
    

    脚本会提示确认证书和密钥所需的字段, 默认值是在 vars 文件里指定的. 脚本执行完后, 会在 keys 目录下生成CA的密钥 ca.key 和证书 ca.crt .

3.client.conf客户端配置文件

openvpn客户端的配置文件client.conf比较简单,如下:

#grep -vE “^#|^;|^$” client.ovpn

client

定义这是一个client,配置从server端pull拉取过来,如IP地址,路由信息之类,Server使用push指令推送过来。

dev tun

定义openvpn运行的模式,这个地方需要严格和Server端保持一致。

proto tcp

定义openvpn使用的协议,这个地方需要严格和Server端保持一致。

remote 192.168.1.8 1194

设置Server的IP地址和端口,这个地方需要严格和Server端保持一致。

如果有多台机器做负载均衡,可以多次出现remote关键字。

;remote-random

随机选择一个Server连接,否则按照顺序从上到下依次连接。该选项默认不启用。

resolv-retry infinite

始终重新解析Server的IP地址(如果remote后面跟的是域名),保证Server IP地址是动态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析Server的IP地址。这样无需人为重新启动,即可重新接入VPN。

nobind

定义在本机不邦定任何端口监听incoming数据。

persist-key

persist-tun

ca ca.crt

定义CA证书的文件名,用于验证Server CA证书合法性,该文件一定要与服务器端ca.crt是同一个文件。

cert laptop.crt

定义客户端的证书文件。

key laptop.key

定义客户端的密钥文件。

ns-cert-type server

Server使用build-key-server脚本生成的,在x509 v3扩展中加入了ns-cert-type选项。防止client使用他们的keys + DNS hack欺骗vpn client连接他们假冒的VPN Server,因为他们的CA里没有这个扩展。

comp-lzo

启用允许数据压缩,这个地方需要严格和Server端保持一致。

verb 3

设置日志记录冗长级别。

ok!在安装之前请确认一下你购买的vps是否开启了tun/tap的支持,burst vps默认是不开启tun/tap的,可以使用cat /dev/net/tun 进行检查

生成VPN Server密钥和证书

有了CA密钥和证书, 就可以生成VPN Server所需要的密钥和证书了. 执行以下脚本:

# ./build-key-server myvpn

脚本需要一个参数来指定证书和密钥的CN, 这里就是 myvpn , 根据自己的需要来指定对应的值. 脚本在执行时, 同样会提示需要确认和输入的字段值. 脚本执行完成后, 同样会在 keys 目录下生成VPN Server的密钥和证书. 密钥和证书的文件名前缀都是指定的CN, 后缀分别是 crtkey . 在这里就是 myvpn.crtmyvpn.key .

三、生成证书

1.安装easy-rsa或者去GitHub下载

apt-get install easy-rsa

2.生成证书和私钥

这是安装OpenVPN中最重要和最关键的一步,目的是建立公钥基础设施(PKI)。包括如下内容:

- 为OpenVPN服务器创建一个证书(公钥)和一个私钥

- 为每个OpenVPN客户端创建证书和私钥

- 建立一个证书颁发机构(CA)并创建证书和私钥。这个私钥用来给OpenVPN服务器和客户端的证书签名

3.在/usr/share/easy-rsa/有相关的执行脚本

修改好参数文件vars,修改好后source vars加载

4.清除之前的证书文件

./clean-all

5.创建ca证书和密钥,如果vars文件配置好了,基本就是敲回车就好了。执行完成后会在当前子目录keys下生成ca.crt(证书) ca.key(密钥)

./build-ca

6.生成OpenVPN服务器的证书和私钥,执行完成后会得到haha.crt haha.key

./build-key-server haha(服务器名)

7.生成Diffie-Hellman参数,会生成dh2048.pem

./bulid-dh

8.cp ca.crt haha.crt haha.key dh2048.pem /etc/openvpn

9.客户端证书和私钥

./build-key client

10.生成OpenVPN Static key

openvpn --genkey --secret ta.key 与tls-auth /etc/openvpn/ta.key 0 参数有关 #用户名密码认证时需要

澳门新萄京官方网站 2

生成Client密钥和证书

Client端同样需要CA签名过的密钥和证书来. 执行以下脚本:

# ./build-key hongling

类似于VPN Server的密钥证书生成脚本, 这个脚本参数同样是Client的CN. 根据提示确认和输入必要参数后, Client所需的密钥 hongling.key 和证书 hongling.crt 也会保存在 keys 目录下.

对于每个Client, 都需要生成一套密钥和证书.

四、启动

service openvpn start

看到Initialization Sequence Completed 即启动成功。

如果是没有权限的话可以发个ticket要求客服为你开启tun/tap

生成Diffie Hellman参数

Diffie Hellman参数用于VPN Server和Client之间进行公钥交换. 执行以下脚本:

# ./build-dh

这个脚本执行完成以后, 可以在 keys 目录下找到生成的文件 dh2048.pem . 文件名中的2048是密钥长度, 可以在 vars 文件中设置, 默认为2048.

五、示例

澳门新萄京官方网站 3

Easy-RSA 3

证书登陆

server端

vi server.conf

port 1194

proto tcp

dev tun

ca ca.crt

cert server.crt

key server.key # This file should be kept secret

dh dh2048.pem

server 172.30.25.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "route 10.1.1.0 255.255.255.0"

push "route 10.1.10.0 255.255.255.192"

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 114.114.114.114"

client-to-client

keepalive 10 120

comp-lzo

persist-key

persist-tun

status openvpn-status.log

verb 3

如果证书文件没有放在config目录,那么配置文件中要写绝对路径

client端

client

dev tun

proto tcp

remote 172.30.25.0 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert client.crt

key client.key

comp-lzo

verb 3

出现File descriptor in bad state说明tun/tap已经开启,可以开始进行openVPN的安装配置

安装

在Centos 7.5上, 首先要确认是否安装了 epel 源:

# yum repolist

如果源列表中没有 epel 源, 需要安装:

# yum install -y epel-release

然后就可以安装 easy-RSA 了:

# yum install -y easy-rsa
# yum list installed easy-rsa

可以看到这里安装的是 Easy-RSA 3 . 安装目录在 /usr/share/easy-rsa . 对于不同的具体版本, 这个目录下的内容可能会有不同:

# ls -l /usr/share/easy-rsa/
总用量 4
lrwxrwxrwx 1 root root    5 7月  16 18:21 3 -> 3.0.3
lrwxrwxrwx 1 root root    5 7月  16 18:21 3.0 -> 3.0.3
drwxr-xr-x 4 root root 4096 7月  16 19:41 3.0.3

如以上情况中, 实际的安装目录在 3.0.3 子目录下. 为了安全, 将安装目录复制到 /root 目录下:

# cp -r /usr/share/easy-rsa/3.0.3 /root/easyrsa

后续密钥和证书操作都在 /root/easyrsa 目录下进行.

用户密码验证

修改server.conf:

tls-auth ta.key 0 # This file is secret

auth-user-pass-verify /usr/local/openvpn/config/checkpsw.sh via-env

client-cert-not-required

username-as-common-name

script-security 3

修改客户端配置文件:client.conf(或者client.ovpn)

注销掉这两行

#cert client1.crt

#key client1.key

再添加这一行,添加这行,就会提示输入用户名和密码

auth-user-pass

tls-auth ta.key 1

嫌麻烦的话可以auth-user-pass password.txt

password.txt 文件样例如下,用户名和密码分为两行存放。

我的vps安装的系统为CentOS release 5.5 (Final),下面一系列安装和配置都在此vps上进行,根据 <OpenVPN服务器配置(转载)>配置

生成CA密钥和证书

在生成密钥和证书前, 需要进行初始化:

# ./easyrsa init-pki

这个操作会在当前目录下创建 pki 子目录, 接下来的操作生成的文件都会保存在这个子目录里. 如果这个 pki 子目录已经存在, 这个操作会将子目录下所有的文件清空. 所以, 如果希望重新生成所有的密钥和证书资源, 也可以使用这个命令.

接下来就可以生成CA的密钥和证书了:

# ./easyrsa build-ca

这个命令会要求输入密钥的密码和证书的CN. 这个密钥在后续给VPN Server和Client的证书签名里, 会用到. 命令完成后, 会在 pki 目录下生成密钥文件 ca.key 和证书文件 ca.crt . 有了CA的密钥和证书, 就可以生成VPN Server和Client的密钥和证书了.

一.服务端安装

生成VPN Server的密钥和证书

首先, 需要生成Server的密钥和签名请求:

# ./easyrsa gen-req myvpn

命令的输入参数是使用这套密钥和证书的实体名, 这个名字会用来标识生成的文件, 并作为证书默认的CN. 同样, 这个命令会提示输入密钥密码和CN. 其中密钥在后续启动VPN Server时需要验证, 而CN的默认值就是命令的参数. 命令完成后, 会在 pki/reqs 下生成签名请求文件, pki/private 下生成密钥文件. 在这个例子中文件名分别为 myvpn.reqmyvpn.key .

然后对生成的请求进行签名, 生成VPN Server的证书:

# ./easyrsa sign-req server myvpn

这个命令接收两个参数, 第一个是证书类型, 这里是 server , 第二个是证书使用的实体名, 需要和上一步生成签名请求的实体名一致, 这里同样为 myvpn . 命令会提示要求确认证书信息, 并输入CA的密钥密码. 命令执行完成后, 会在 pki/issued 目录下生成CA签名的证书, 在这个例子里, 文件名是 myvpn.crt .

现在开始在vps上安装和配置openVPN,需要的有下列的软件
gcc g [gcc g 为系统需要的编译工具]
lzo库   [Lzo库的功能是对虚拟链路进行压缩]
openssl [囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议]
openvpn 

生成VPN Client的密钥和证书

生成Client需要的密钥和证书与生成Server的密钥和证书基本一致. 比如我们希望创建一个为用户 hongling 创建密钥和证书:

# ./easyrsa gen-req hongling
# ./easyrsa sign-req client hongling

唯一的不同是 sign_req 的第一个参数需要指定为 client . 以上两个命令执行完成后, 会生成文件 pki/private/hongling.key , pki/reqs/hongling.reqpki/issued/hongling.crt .

1.安装编译工具gcc g

生成Diffie-Hellman参数文件

为了在Server和Client之间交换密钥, 需要生成Diffie-Hellman参数文件:

# ./easyrsa gen-dh

命令执行完成后, 会在 pki 目录下生成长度为2048位的Diffie-Hellman参数文件 dh.pem .

# yum install gcc
# yum install gcc-c

安装和配置VPN Server

2.安装lzo库

安装

在Ubuntu下, 执行

# apt-get install -y openvpn

在CentOS下, 需要首先确认安装了 epel 源, 然后执行以下命令来安装 OpenVPN :

# yum install -y openvpn

# cd /home/download/
# wget 
# tar -xvzf lzo-2.03.tar.gz
# cd lzo-2.03
# ./configure -prefix=/usr/local/lzo && make && make install
# vi /etc/ld.so.conf

配置

OpenVPN 安装完成后, 可以在 /usr/share/doc/openvpn 目录下找到示例配置文件. 目录在不同的版本或者Linux下可能会略有不同, 比如 /usr/share/doc/openvpn-2.4.6 , 目录结构也会略有不同. 将 server.conf 文件复制到 /etc/openvpn/server 目录下, 命名为VPN Server的CN. 如果没有这个目录, 可以手动创建.

# cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/myvpn.conf

然后将CA的证书, VPN Server的证书和密钥, 以及Diffie-Hellman参数文件复制到 /etc/openvpn/server 目录下:

# cp /root/easyrsa/pki/ca.crt /etc/openvpn/server
# cp /root/openvpn/easyrsa/pki/issued/ myvpn.crt /etc/openvpn/server
# cp /root/easyrsa/pki/private/myvpn.key /etc/openvpn/server
# cp /root/easyrsa/pki/dh.pem /etc/openvpn/server/

接下来修改配置文件. 这里只做最基本的修改:

  1. 修改Server密钥和证书文件名
    找到 certkey 两个配置项, 原始值分别为 server.crtserver.key . 这里修改为 myvpn.crtmyvpn.key :

     cert myvpn.crt
     key myvpn.key  # This file should be kept secret
    
  2. 修改Diffie-Hellman参数文件名
    找到 dh 配置项, 修改为 dh.pem :

     dh dh.pem
    
  3. 关闭 TLS-auth
    找到 tls-auth 配置项, 如果配置项存在, 将其注释掉或者删除, 因为这里我们没有生成所需要的资源.

澳门新萄京官方网站 4

激活IP转发

我们使用的是TUN工作模式, VPN Server上需要激活操作系统的IP转发功能, 这样VPN Server才能正常的作为VPN的网关工作.

执行以下命令激活当前系统运行时的IP转发功能:

 # sysctl -w net.inet.ip.forwarding=1

同时, 在 /etc/sysctl.conf 文件中添加

net.ipv4.ip_forward=1

以便在系统重启后, 仍然会自动激活IP转发.

编辑完ld.so.conf,执行

配置防火墙

如果VPN Server所在的操作系统上安装了防火墙, 需要为 OpenVPN 进行配置.

# ldconfig

CentOS

首先我们可以通过以下命令查看 OpenVPN 的相关信息:

# firewall-cmd --permanent --info-service=openvpn
openvpn
  ports: 1194/udp
  protocols:
  source-ports:
  modules:
  destination:

上面的配置中, OpenVPN 服务开启的是默认的 1194/udp 端口. 如果我们希望使用非默认端口, 比如 2194/udp , 可以使用以下命令将新端口加入服务配置, 并将原有默认端口删除:

# firewall-cmd --permanent --service=openvpn --add-port=2194/udp
# firewall-cmd --permanent --service=openvpn --remove-port=1194/udp

接下来我们可以查看防火墙的已激活配置:

# firewall-cmd --permanent --list-services
ssh

上面的例子里, 防火墙只激活了 ssh 服务. 我们需要将 OpenVPN 激活

# firewall-cmd --permanent --add-service=openvpn

要使上面的配置生效, 需要重装防火墙配置:

# firewall-cmd --reload

使动态库生效

Ubunut

TBD

3.安装openssl

作为系统服务启动

先检查是否有我们希望使用的服务配置文件. 在 /lib/systemd/system 目录下查看是否有 openvpn-server@.service 文件. 如果没有, 复制 openvpn@.service 文件为 openvpn-server@.serivce , 然后将文件中指向 /etc/openvpn 目录的值, 都修改为 /etc/openvpn/server 目录. 例如:

WorkingDirectory=/etc/openvpn/server
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn/server --script-security 2 --config /etc/openvpn/server/%i.conf --writepid /run/openvpn/%i.pid

有了 openvpn-server@.service 文件, 执行以下命令激活并启动系统服务:

# systemctl enable openvpn-server@myvpn
# systemctl start openvpn-server@myvpn

服务名 openvpn-server@myvpn@ 后面的部分 myvpn/etc/openvpn/server 下配置文件的前缀, 在我们的例子里是 /etc/openvpn/server/myvpn.conf . 可以根据实际的配置情况相应调整.

在启动服务时, 会提示使用 systemd-tty-ask-password-agent 命令输入密码. 在当前终端上直接执行

# systemd-tty-ask-password-agent

然后根据提示输入创建VPN Server密钥时指定的密码.

启动后可以查看服务状态是否为 Active :

# systemctl status openvpn-server@server

启动成功的话, 可以看到一个新增的TUN设备, 因为默认 OpenVPN 是使用TUN. 其IP地址为VIP的子网网关, 默认为10.8.0.1 :

# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:13:0e:9c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.228/24 brd 172.16.0.255 scope global dynamic eth0
       valid_lft 314765499sec preferred_lft 314765499sec
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever

默认配置下, OpenVPN 的日志输出到系统日志, 可以查看文件 /var/log/syslog 或者使用 journalctl 命令查看.

# cd /home/download/
# wget 
# tar -xvzf openssl-0.9.8.tar.gz
# ./config -prefix=/usr/local/openssl && make && make install

使用密码文件

在上面的例子中, 启动 OpenVPN 服务时, 需要使用 systemd-tty-ask-password-agent 命令手工输入VPN Server密钥的密码. 这种方式十分不方便, 这里介绍读取密码文件的配置方式.

首先, 在VPN Server配置文件所在的目录下, 将密码保存到和配置文件前缀相同的 VPS之openVPN的安装配置。.pass 文件里. 在这个例子里, 我们将密码保存到 /etc/openvpn/server/myvpn.pass :

# echo "mypassword" > /etc/openvpn/server/myvpn.pass

接下来修改系统服务的配置文件. 打开 /lib/systemd/system/openvpn-server@.service 文件, 找到 Service 部分的 ExecStart 配置项, 在启动命令中添加参数 --askpass %i.pass, 如下例:

ExecStart=/usr/sbin/openvpn --status %t/openvpn-server/status-%i.log --status-version 2 --suppress-timestamps --config %i.conf --askpass %i.pass

保存后, 再创建服务 openvpn-server@myvpn 并启动时, 就会自动读取密码文件中的密码了.

4.安装openvpn

配置Client

不同的系统下使用的 OpenVPN 客户端是不同的, 不过需要的配置和资源是相同的. 这里, 我们先准备Client需要的配置和资源.

/root 下创建一个目录 vpnclient/hongling 来存放用户 hongling 所需要的所有资源.

同样, 在 /usr/share/doc/openvpn 下找到 client.conf 文件, 将其复制到 /root/vpnclient/hongling 目录下. 然后将CA证书, 以及客户端的密钥和证书也放到这个目录下:

# cp /usr/share/doc/openvpn/sample/sample-config-files/client.conf /root/vpnclient/hongling/hongling.conf
# cp /root/easyrsa/pki/ca.crt /root/vpnclient/hongling
# cp /root/easyrsa/pki/private/hongling.key /root/vpnclient/hongling
# cp /root/easyrsa/pki/issued/hongling.crt /root/vpnclient/hongling

接下来修改配置文件, 使其与之前Server端的配置一致.

  1. 指定Server地址
    找到 remote 配置项, 将地址和端口改为期望值. 端口默认为1194, 如果Server端没有修改, 这里保留1194的值. 如:

     remote myvpn.com 1194
    
  2. 修改密钥和证书文件名
    找到 certkey 配置项, 将其修改为当前用户的文件名, 如:

      cert  hongling.crt
      key hongling.key
    
  3. 关闭 TLS-auth
    找到 tls-auth 配置项, 如果配置项存在, 将其注释掉或者删除, 因为这里我们没有生成所需要的资源.

# cd /home/download/
# wget 
# tar -xvzf openvpn-2.0.9.tar.gz
# cd openvpn-2.0.9
# ./configure -prefix=/usr/local/openvpn && make && make install

客户端安装和运行

不同操作系统需要使用不同的客户端软件, 接下来介绍Linux, Mac OS和Windows上的客户端的主要用法.

后续操作都是将前一步生成好的所有客户端配置文件和资源文件下载到客户端系统后进行的.

二.配置

Linux

CentOS和Ubunut下也可以和VPN Server端一样直接安装 openvpn , 然后将客户端配置文件放到一个安全的目录, 比如 /root/hongling . 接下来有三种方式来启动客户端.

1.创建配置环境

在终端前台运行

进入配置文件目录, 如 /root/hongling , 然后执行:

# openvpn --config client.conf

然后命令会提示输入密钥密码, 也就是我们在生成客户端密钥时指定的密码. 命令的日志会在当前终端上输出.

# mkdir /etc/openvpn
# cp -R /home/download/openvpn-2.0.9/easy-rsa/ /etc/openvpn
# cd /etc/openvpn/easy-rsa/2.0/
# ls
 total 112
-rwxr-xr-x 1 root root   121 Oct 26 03:14 build-ca
-rwxr-xr-x 1 root root   354 Oct 26 03:14 build-dh
-rwxr-xr-x 1 root root   190 Oct 26 03:14 build-inter
-rwxr-xr-x 1 root root   165 Oct 26 03:14 build-key
-rwxr-xr-x 1 root root   159 Oct 26 03:14 build-key-pass
-rwxr-xr-x 1 root root   251 Oct 26 03:14 build-key-pkcs12
-rwxr-xr-x 1 root root   270 Oct 26 03:14 build-key-server
-rwxr-xr-x 1 root root   215 Oct 26 03:14 build-req
-rwxr-xr-x 1 root root   160 Oct 26 03:14 build-req-pass
-rwxr-xr-x 1 root root   430 Oct 26 03:14 clean-all
-rwxr-xr-x 1 root root  1459 Oct 26 03:14 inherit-inter
-rwxr-xr-x 1 root root   297 Oct 26 03:14 list-crl
-rw-r--r-- 1 root root   422 Oct 26 03:14 Makefile
-rwxr-xr-x 1 root root  7768 Oct 26 03:14 openssl-0.9.6.cnf
-rwxr-xr-x 1 root root  8230 Oct 26 03:14 openssl.cnf
-rwxr-xr-x 1 root root 12068 Oct 26 03:14 pkitool
-rw-r--r-- 1 root root  8864 Oct 26 03:14 README
-rwxr-xr-x 1 root root   894 Oct 26 03:14 revoke-full
-rwxr-xr-x 1 root root   180 Oct 26 03:14 sign-req
-rwxr-xr-x 1 root root  1602 Oct 26 03:14 vars
-rwxr-xr-x 1 root root   190 Oct 26 03:14 whichopensslcnf

在终端后台运行

在终端后台启动和运行 OpenVPN 时, 程序没有办法从终端获取密码输入, 我们只能使用文件的方式来提供密码. 将密码保存到文本文件里:

# echo "mypass" > /root/hongling/hongling.pass

接下来可以在任意目录执行以下命令启动 OpenVPN

# openvpn --config /root/hongling/hongling.conf --cd /root/hongling--daemon --askpass /root/hongling/hongling.pass

OpenVPN 的日志会出现在系统日志中.

结果是程序以及脚本,这个简要的说明一下

作为系统服务启动

将客户端配置文件, 证书和密钥都复制到 /etc/openvpn/client 目录下, 如果没有 client 目录, 可以手工创建. 然后再将客户端密钥密码保存到 /etc/openvpn/client/hongling.pass 文件中. 具体文件名前缀和配置文件保存一致.

/lib/systemd/system 目录下查找 openvpn-client@.service 文件. 如果没有, 复制 openvpn@.service 文件为 openvpn-client@.service 文件, 然后将文件中的使用 /etc/openvpn 目录的地方都改为 /etc/openvpn/client 目录. 同时, 在启动命令中添加密码文件参数 --askpass %i.pass . 如下例如示:

WorkingDirectory=/etc/openvpn/client
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn/client --script-security 2 --config /etc/openvpn/client/%i.conf --writepid /run/openvpn/%i.pid --askpass /etc/openvpn/client/%i.pass

然后就可以激活并启动服务了:

# systemctl enable openvpn-client@hongling
# systemctl start openvpn-client@hongling

OpenVPN 的日志会出现在系统日志中.

以以上三种方式的任一一种连接VPN成功以后, 可以查看到OpenVPN创建的TUN设备, 类似:

2: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.10 peer 10.8.0.9/24 scope global tun0
       valid_lft forever preferred_lft forever

同时, 也可以PING通VPN网关, 如默认配置下:

# ping -c 5 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=5.78 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=5.48 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=5.54 ms
64 bytes from 10.8.0.1: icmp_seq=4 ttl=64 time=6.83 ms
64 bytes from 10.8.0.1: icmp_seq=5 ttl=64 time=5.55 ms

--- 10.8.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 5.481/5.841/6.831/0.512 ms

vars         脚本,是用来创建环境变量,设置所需要的变量的脚本
clean-all    脚本,是创建生成CA证书及密钥 文件所需要的文件和目录
build-ca     脚本,生成CA证书(交互)
build-dh     脚本,生成Diffie-Hellman文件(交互)
build-key-server 脚本,生成服务器端密钥(交互)
build-key    脚本,生成客户端密钥(交互)
pkitool      脚本,直接使用vars的环境变量设置直接生成证书(非交互)

Mac OS

VPS之openVPN的安装配置。在Mac OS上, 我们需要安装 Tunnelblick客户端来连接VPN.

安装完成后找开 Tunnelblick , 进入 配置 窗口, 再同时打开访达, 进入存放配置, 证书和密钥文件的目录, 然后将配置文件拖入 Tunnelblick 的配置列表

澳门新萄京官方网站 5

添加完配置后, 选中配置, 然后点击右下角的 连接 来连接到VPN Server

澳门新萄京官方网站 6

连接成功, 同样可以在终端PING通VPN网关. 如果连接不成功, 可以查看 Tunnelblick 上的日志排查问题.

2.生成CA证书及密钥

Windows

Windows系统上, 可以在OpenVPN Community Download页面上找到Windows安装程序的下载地址. 下载并根据提示安装成功后, 在用户目录下会多出一个 OpenVPN 目录. 将客户端配置, 密钥和密钥文件复制到这个目录的 config 子目录下. 接着启动 OpenVPN GUI 程序, 然后可以在右下角提示栏, 在弹出窗口中点击 Settings 来修改配置:

澳门新萄京官方网站 7

Advance 窗口中, 将 Extension 项改为期望值. 在本例中, 应当为 conf :

澳门新萄京官方网站 8

保存修改后, 在提示栏中再次点击 OpenVPN 图标, 然后在弹出菜单中点击 Connect 来连接VPN Server:

澳门新萄京官方网站 9

连接成功后, 可以在 cmd 窗口中PING通VPN网关.

# cd /etc/openvpn/easy-rsa/2.0/
# ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

参考资料

  • OpenVPN HOWTO

  • Easy-RSA 3 Quickstart

注:如果你执行了./clean-all,系统将删除/etc/openvpn/easy-rsa/2.0/keys下的文件

修改vars文件
# vi vars

export KEY_COUNTRY="CN"
export KEY_PROVINCE="GZ"
export KEY_CITY="guangzhou"
export KEY_ORG="NCS"
export KEY_EMAIL="dongbule@163.com"

# ./vars 

3.初始化keys文件夹

# ./clean-all #[注:删除/etc/openvpn/easy-rsa/2.0/keys下的文件]
# ./build-ca  #[注:生成一个a 1024 bit RSA的密钥,writing new private key to 'ca.key']

澳门新萄京官方网站 10

一路按回车就可以

# cd keys
# ls
ca.crt  ca.key  index.txt  serial

可以看到生成的ca.crt  ca.key文件

4.生成Diffie-Hellman文件

# cd ..
# ./build-dh #[注:Generating DH parameters, 1024 bit long safe prime]
# ls  keys
ca.crt  ca.key  dh1024.pem  index.txt  serial

注:可以看到生成了1024为的Diffie-Hellman文件

5.生成服务器使用的VPN server ca证书

# ./build-key-server chenyz #[注:其中chenyz是CA证书的一个名字]

澳门新萄京官方网站 11

一路回车,Sign the certificate? [y/n]:y 选择y

然后把刚才生成的CA证书和密钥copy到/etc/openvpn/下

# cd keys
# cp ca.crt ca.key chenyz.crt chenyz.key dh1024.pem /etc/openvpn/

6.生成客户端CA证书及密钥

# ./build-key client-chenyz
一路回车,Sign the certificate? [y/n]:y 选择y

在keys目录下生成了client-chenyz.crt client-chenyz.csr client-chenyz.key三个客户端证书
并且将ca.crt ca.key client-chenyz.crt client-chenyz.csr client-chenyz.key 五个文件打包,以便客户端vpn

使用

# cd keys
# mkdir userkey
# cp ca.crt ca.key client-chenyz.crt client-chenyz.csr client-chenyz.key userkey/
# tar -zcvf userkey.tar.gz userkey/
userkey/
userkey/ca.crt
userkey/client-chenyz.csr
userkey/ca.key
userkey/client-chenyz.key
userkey/client-chenyz.crt

# sz userkey.tar.gz
Starting zmodem transfer.  Press Ctrl C to cancel.
Transferring userkey.tar.gz澳门新萄京官方网站 12
  100%       4 KB    4 KB/s 00:00:01       0 Errors

使用sz将其下载到windows客户端

7.openvpn配置文件

# cp /home/download/openvpn-2.0.9/sample-config-files/server.conf  /etc/openvpn/openvpn.conf
将vpenvpn的原始样例文件复制到/etc/openvpn下,并改名为openvpn.conf,我们将在样例文件上进行修改

澳门新萄京官方网站 13
使用的端口,默认1194

澳门新萄京官方网站 14
使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议

澳门新萄京官方网站 15
ca:使用build-ca生成的,用于验证客户是证书是否合法
cert:使用build-key-server,Server使用的证书对应的key,注意安全,防止被盗

澳门新萄京官方网站 16
dh:生成的加密文件

澳门新萄京官方网站 17
通过VPN Server往Client push路由,client通过pull指令获得Server push的所有选项并应用

澳门新萄京官方网站 18
可以让客户端之间相互访问直接通过openvpn程序转发

澳门新萄京官方网站 19
如果Client使用的CA的Common Name有重复了,或者说客户都使用相同的CA #和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN

澳门新萄京官方网站 20
对数据进行压缩

澳门新萄京官方网站 21
定义用户

澳门新萄京官方网站 22
openvpn状态log

澳门新萄京官方网站 23
每次重新启动openvpn后保留原有的log信息,新信息追加到文件最后

8.启动OpenVPN

修改完毕后,即可以启动vpn,--daemon为后台守护进程模型启动
/usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/openvpn.conf

澳门新萄京官方网站 24

使用netstat -ln 查看1194openvpn的端口是否已经起来

二.win客户端的安装和配置

下载openvpn客户端 安装完毕
把刚刚打包的userkey.tar.gz下载解压到 C:Program FilesOpenVPNconfig 目录下
将/home/download/openvpn-2.0.9/sample-config-files/client.conf 也下载到 C:Program FilesOpenVPNconfig 目录下

接着是配置这个client.conf客户端配置文件

主要修改有以下几个地方

dev tun
proto tcp
remote 你的vpn地址 1194
user nobody
group nogroup
ca ca.crt
cert client-chenyz.crt
key client-chenyz.key   ##注:文件名和路径必须对应
comp-lzo
redirect-gateway def1

确保与服务端的配置对应,然后将client.conf修改文件名为client.ovpn,右键点击client.ovpn,选择"Start OpenVPN on this config file"

澳门新萄京官方网站 25
可以看到连接已经成功,并且创建了 [本地连接 6] 一条新的链路

澳门新萄京官方网站 26

澳门新萄京官方网站 27

或者你也可以打开C:Program FilesOpenVPNbinopenvpn-gui-1.0.3.exe进行连接,双击后会在任务栏里有个小连接图标,变成绿色的话就表明你连接成功

openvpn的参数配置,感觉不算很多,也比较容易理解,中文的资料也很齐全,大概这个东西在国内还是广泛应用(FQ^_^)

如果只是简单的应用,配置倒真的很简单,不过如果真的是要用起来,网段设置和访问控制各种问题真的不少,入是否配置dhcp,是否分配dns,vpn如何和内网通讯,很多很多,因为我只是拿来做代理这里就不细说了

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:VPS之openVPN的安装配置

关键词: