CentOS6.4下部署OpenVpn服务及使用方法

环境说明

1
2
3
vpn服务器:eth0:120.3.243.54(外网IP) eth1:192.168.5.253(私网IP)
客户端地址:201.1.36.111
软件版本:服务端OpenVPN 2.3.2

实现:访问公司内网及授权vpn地址访问的网段,其他地址均走客户端本地上网

安装步骤

设置YUM源
1
2
3
4
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.2.tar.gz
./configure && make && make install
生成证书
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
证书生成工具
yum -y install easy-rsa
配置OpenVpn:
mkdir /etc/openvpn/etc -p
cp -R /usr/share/easy-rsa/ /etc/openvpn/
源码目录:
cp sample/sample-config-files/server.conf /etc/openvpn/server.conf
生成证书
cd /etc/openvpn/easy-rsa/2.0
. vars
./clean-all
./build-ca
创建vpn server的key
./build-key-server server
创建用户秘钥
./build-key geekwolf
创建Diffie Hellman,用于增强安全性
./build-dh
默认情况所创建的文件会生成在/etc/openvpn/easy-rsa/2.0/keys目录下
配置OpenVpn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
配置server.conf文件
方法1:采用秘钥认证
local 120.3.243.54
port 9001
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key # This file should be kept secret
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push “route 192.168.0.0 255.255.0.0”
push “route 104.172.0.0 255.255.0.0″
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
方法2:采用用户密码认证
A.额外在上面配置文件后面添加[基于PAM身份认证]
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name
服务端本地创建用户
useradd -s /sbin/nologin geekwolf
passwd geekwolf
B.额外在上面配置文件后面添加[基于脚本的身份认证]
auth-user-pass-verify /usr/local/openvpn/etc/checkpsw.sh via-env
client-cert-not-required
username-as-common-name
wget http://openvpn.se/files/other/checkpsw.sh -O /usr/local/openvpn/etc/checkpsw.sh
chmod +x checkpsw.sh
修改脚本PASSFILE和LOG_FILE参数文件位置
PASSFILE=/etc/openvpn/etc/psw-file
LOG_FILE=/etc/openvpn/etc/openvpn-password.log
用户名和密码文件格式:
/etc/openvpn/etc/psw-file(用户和密码之间用空格或者tab隔开)
geekwolf geekwolf
防火墙配置
1
2
3
4
5
6
7
8
9
10
11
12
可参考源码下的配置:
sample/sample-config-files/firewall.sh
本测试的规则为:
-A INPUT -i tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth1 -j ACCEPT
-A FORWARD -i eth1 -o tun+ -j ACCEPT
-A OUTPUT -o tun+ -j ACCEPT
-A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
-A POSTROUTING -d 104.172.0.0/255.255.255.0 -o eth0 -j MASQUERADE
通过以上配置实现了:
访问公司内网192.168.0.0 走vpn的eth1出口,访问104.172.0.0等走vpn的eth0出口,访问其他地址均走客户端本地
客户端配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Windows 7 客户端配置
下载 http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.2-I001-x86_64.exe(或者OpenVPN Client官网下载)
安装后桌面会生成,属性设置
A.若采用秘钥方式认证
客户端做一下事情:
拷贝服务端ca.crt 用户秘钥geekwolf.crt geekwolf.key 到OpenVpn客户端安装根目录下下的config目录内
增加客户端配置文件client.ovpn:
client
dev tun
proto tcp
remote 120.3.243.54 9001
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert geekwolf.crt
key geekwolf.key
comp-lzo
verb 3
最后以管理员身份运行OpenVPN GUI程序,即可连接使用vpn
A.若采用用户密码认证(pam认证)
注释掉用户cert和keys,配置文件增加密码询问auth-user-pass
既:
client
dev tun
proto tcp
remote 120.3.243.54 9001
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
;cert geekwolf.crt
;key geekwolf.key
comp-lzo
verb 3
auth-user-pass
(免输入账号密码方法:auth-user-pass passwd.txt)
passwd.txt 格式
账号
密码

参考

深入OpenVPN的配置 http://www.linuxfly.org/post/86/

坚持原创分享,您的支持将鼓励我继续创作