OpenVPN部署 安装OpenVPN服务端

1、OpenVPN是基于OpenSSL的,所有要先安装OpenSSL:

1
$ yum install openssl openssl-devel gcc

2、安装lzo软件,用于压缩隧道通信数据加快传输数度(版本lzo-2.06),关于OpenVPN安装所用到的软件包我放在百度网盘http://pan.baidu.com/s/1i3suZOD

1
2
3
$ ./configure --prefix=/usr/local/lzo
$ make
$ make install

3、安装OpenVPN(版本openvpn-2.2.2)

1
2
3
4
$ ./configure --prefix=/usr/local/openvpn \
--with-lzo-lib=/usr/local/lzo/
$ make
$ make install

4、配置OpenVPN
1) 建立CA的详细信息,进入源代码相关目录操作,编辑文件vars设定相关变量值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ cd /root/src/openvpn-2.2.2/easy-rsa/2.0
$ vim vars
###vim vars 需要修该的项###
export KEY_COUNTRY="CN" #定义国家
export KEY_PROVINCE="SH" #定义省份
export KEY_CITY="Shanghai" #定义城市
export KEY_ORG="xincheng1234" #定义组织
export KEY_EMAIL="1989051805@qq.com" #定义邮件地址
###vim vars###
$ source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /root/src/openvpn-2.0.9/easy-rsa/2.0/keys
#初始化keys目录
$ ./clean-all
$

生成根CA证书ca.key、ca,crt,用于签发server和client证书,由于定义了预设值创建过程中一路回车就可以。

1
$ ./build-ca

为服务器生成Diffie-Hellman文件

1
$ ./build-dh

2) 为OpenVPN服务器生成证书和密钥,一般只需要输入A challenge password []、An optional company name []:这两项,其它的默认或”y”,如果不使用默认的预设值填入你想要的即可。

1
$ ./build-key-server server

3) 为OpenVPN客户端生成证书文件,以客户端xiaoma为例,与服务端的步骤一样如果不更改默认预设值,一路回车或”y”就行了。需要说明的是每个客户端的证书文件都是这样生成的(如果结合radius认证就不用这么麻烦了,后面的文章有介绍),每个客户端都要独立生成证书文件。

1
$ ./build-key xiaoma

4) 修改相关配置文件 为了方便,将keys文件夹整个拷贝到OpenVPN的安装目录/usr/local/openvpn/

1
$ cp -rp keys/ /usr/local/openvpn/

拷贝OpenVPN的配置文件/root/src/openvpn-2.2.2/sample-config-files/server.conf到OpenVPN的安装目录

1
2
3
$ mkdir /usr/local/openvpn/etc
$ cd ../../sample-config-files/
$ cp server.conf /usr/local/openvpn/etc/

编辑配置文件/usr/local/openvpn/etc/server.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
$ cd /usr/local/openvpn/etc/
$ vim server.conf
####vim server.conf 新增加或修改的项####
proto tcp #使用TCP协议通信
ca /usr/local/openvpn/keys/ca.crt
cert /usr/local/openvpn/keys/server.crt
key /usr/local/openvpn/keys/server.key
server 10.8.0.0 255.255.255.0 #OpenVPN服务启动时为VPN网络分配的网段
push "dhcp-option DNS 202.96.209.5"
push "route 10.10.10.0 255.255.255.0" #内网
#指定日志文件,默认的日志送给syslog记录在/var/log/message文件
log /var/log/openvpn.log
####vim server.conf####

开启系统IP转发功能,让数据包在不同的网段之间流通

1
2
3
4
5
6
7
8
$ echo "1" > /proc/sys/net/ipv4/ip_forward 
上面只是临时开启IP转发功能,下次开机后失效。
更改文件/etc/sysctl.conf使其永久生效。
$ vim /etc/sysctl.conf
####vim 更改的参数 ####
net.ipv4.ip_forward = 1
#使用sysctl -p使参数立即生效
$ sysctl -p

5) 启动OpenVPN server

1
2
3
4
5
$ /usr/local/openvpn/sbin/openvpn --config \
/usr/local/openvpn/etc/server.conf
#一般放到后台运行的这样
$ nohup /usr/local/openvpn/sbin/openvpn --config \
/usr/local/openvpn/etc/server.conf &

当然也可以使用源码包提供的脚本/root/src/openvpn-2.2.2/sample-scripts/openvpn.init稍加修改就适应当前的环境。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ cp openvpn.init /etc/init.d/openvpn
$ vim /etc/init.d/openvpn
####vim openvpn 需要更改的项####
#添加openvpn可执行文件自定义的安装目录/usr/local/openvpn/sbin/openvpn
openvpn_locations="/usr/sbin/openvpn /usr/local/sbin/openvpn /usr/local/openvpn/sbin/openvpn"
#更改配置文件目录为/usr/local/openvpn/etc
work=/usr/local/openvpn/etc
####vim openvpn ####
#启动openvpn并加入开机启动项

$ /etc/init.d/openvpn start
正在启动 openvpn: [确定]
$ chkconfig openvpn on
$

6) 先安装OpenVPN客户端(我的win7 64位)安装程序也在网盘中,然后将keys文件夹下相关的三个证书ca.crt, xiaoma.crt, xiaoma.key文件放到客服端的C:\Program Files\OpenVPN\config文件夹下。
installopenvpn
然后以OpenVPN服务端提供的client.conf(/root/src/openvpn-2.0.9/sample-config-files/client.conf)文件为模板
建立客户端的配置文件,windows需要将后缀名改成.ovpn
需要更改的项只有4项分别是:remote,ca,cert,key,我的一份配置xiaoma.ovpn如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
client 
dev tun
proto tcp
remote 192.168.5.168 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert xiaoma.crt
key xiaoma.key
comp-lzo
verb 3

配置完成后就可以双击OpenVPN的图标启动客户端程序,然后右击右下角的小图标选择“connect”连接即可。

----------------本文结束 感谢阅读----------------