发布于 2015-11-07 15:20:33 | 560 次阅读 | 评论: 0 | 来源: PHPERZ
OpenVPN
VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。
安装环境:
系统:centos 6.5
openvpn:openvpn-2.2.1
lzo:lzo-2.09 下载地址:http://www.oberhumer.com/opensource/lzo/download/
openver-server公网:111.111.111.100
openver-server内网:192.168.1.100/24
tun_IP:192.168.111.1/24
关闭防火墙:
#chkconfig iptables off;service iptables stop
关闭Selinux
# setenforce 0 #立即生效
#vi /etc/selinux/config
SELINUX=disabled
1、安装依赖包
#yum -y install openssl openssl-devel gcc
2、安装lzo软件包
#cd /usr/local/src
#wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz
#tar xzvf lzo-2.09.tar.gz
#cd lzo-2.09
#./configure --prefix=/usr
#make
#make install
3、安装openvpn软件包
#cd /usr/local/src/
#tar xzvf openvpn-2.2.1.tar.gz
#cd openvpn-2.2.1
#./configure --with-lzo-lib=/usr
#make
#make install
4、Openvpn服务器端的配置
1、建立CA信息:
#vim /src/local/src/openvpn-2.2.1/easy-rsa/2.0/vars
export KEY_COUNTRY="CN" #定义你所在的国家。2个字符为限
export KEY_PROVINCE="BJ" #表示你所在的省份
export KEY_CITY="Beijing" #表示你所在的尘世
export KEY_ORG="openvpn" #表示你所在的组织
export KEY_EMAIL="openvpn.com" #表示你所在的组织
export KEY_EMAIL="xx@openvpn.com" #表示你的邮箱地址
2、接下来:
#source vars
此命令输出如下结果:
NOTE:when you run ./clean-all, I will be doing a rm -rf on/etc/openvpn/easy-rsa/keys
3、初始化keys目录,创建所需要的文件和目录。如果生成了第一个客户端的证书文件,以后生成第二个客户端证书文件时这不不许在执行,它会清空所有证书。请注意!
#./clean-all
4、生成root CA证书。用来签发server和client证书,密钥跟OpenSSL 紧密结合。如果没有修改的地方,一路回车即可。
#./build-ca
Generatinga 2048 bit RSA private key
......................................................+++
............................................................+++
writingnew private key to 'ca.key'
-----
Youare about to be asked to enter information that will be incorporated
intoyour certificate request.
Whatyou are about to enter is what is called a Distinguished Name or a DN.
Thereare quite a few fields but you can leave some blank
Forsome fields there will be a default value,
Ifyou enter '.', the field will be left blank.
-----
CountryName (2 letter code) [IN]: ----> Press Enter
Stateor Province Name (full name) [TN]: ----> Press Enter
LocalityName (eg, city) [Erode]: ----> Press Enter
OrganizationName (eg, company) [Unixmen]: ----> Press Enter
OrganizationalUnit Name (eg, section) [server]: ----> Press Enter
CommonName (eg, your name or your server's hostname)[...] ----> Press Enter
Name[...] ----> Press Enter
EmailAddress[...] ----> Press Enter
5、查看是否生成文件
#ls -lsart keys |grep ca
4 -rw-------. 1 root root 916 Nov 2 13:06 ca.key
4 -rw-r--r--. 1 root root 1196 Nov 2 13:06 ca.crt
6、生成Diffie-Hellman 文件,后面配置OPenvpn server 需要此文件
#./build-dh
不要打断,不要做任何操作,等待生成完成。
7、为服务器生成证书和密钥
#./build-key-server server
一路回车,最后Sign the certificate? [y/n] 和 1 out of 1 certificate requests certified,commit?[y/n] 输入y。
8、为客户端生成证书和密钥
#./build-key client1
一路回车,最后Sign the certificate? [y/n] 和 1 out of 1 certificate requests certified,commit?[y/n] 输入y。
9、修改Openvpn服务器的配置文件 /etc/openvpn/server.conf
#mkdir /etc/openvpn
#cp /usr/local/src/openvpn-2.2.1/sample-config-files/server.conf /etc/openvpn/server.conf
#vim /etc/openvpn/server.conf
1. 将 proto udp 改成 proro tcp ,即服务启动用TCP 的1194 端口
proto tcp
;proto udp
2.设置 ca、cert、key、dh 的存放路径
ca /usr/local/src/openvpn-2.2.1/easy-rsa/2.0/keys/ca.crt
cert /usr/local/src/openvpn-2.2.1/easy-rsa/2.0/keys/server.crt
key /usr/local/src/openvpn-2.2.1/easy-rsa/2.0/keys/server.key
dh /usr/local/src/openvpn-2.2.1/easy-rsa/2.0/keys/dh1024.pem
3.设置openvpn 启动后的vpn网络(tunal IP),注意不要与实际IP冲突
server 192.168.111.1 255.255.255.0
4.设置openvpn 下发路由:
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"
5.verb 3 改成 verb 5 #方便查看更多的调试信息日志。
6.openvpn server 配置文件其他配置信息还有很多,请自行参考官方文档。
10、openvpn 启动前配确认配置:
1、将ca、cert、key、dh 等文件放至server.conf 中指定的目录。
#mkdir /etc/openvpn/keys
#cp /usr/local/src/openvpn-2.2.1/easy-rsa/2.0/keys/* /etc/openvpn/keys
2、关闭防火墙和 selinux
3、开启内核转发功能:
#echo "1" > /proc/sys/net/ipv4/ip_forward
保持开机自动启动
#vim /etc/sysctl.conf #修改为如下:
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
#sysctl -p (刷新,立即生效)
11、开启openvpn服务
#/usr/local/sbin/openvpn --config /etc/openvpn/server.conf &
12、查看openvpn 服务
# lsof -i:1194
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
openvpn 2294 root 5u IPv4 15486 0t0 TCP *:openvpn (LISTEN)
13、客户端配置:
1、在客户端尽量现在和服务器openvpn 版本一直的客户端 http://swupdate.openvpn.org/community/releases/openvpn-2.2.1-install.exe
2、将生成的客户端ca.crt、 ca.src 、client1.key、client1.csr、client1.crt 放置在客户端 openvpn 安装目录的config目录下。
3、编写客户端文件
#cp /usr/local/src/openvpn-2.2.1/sample-config-files/client.conf /etc/openvpn/client.ovpn #必须为 .ovpn 格式的后缀。
#vim /etc/openvpn/client.ovpn
client
dev tun
proto tcp
remote 111.111.111.100 1194
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 5
redirect-gateway def1 (可以不添加,如果添加,客户端的多有流量都必须从openvpn服务器经过,如果访问外网不希望经过openvpn服务器,此条可以不加)
4、将 client.ovpn 文件也放置客户端 的config 目录下
14、在openvpn服务器上添加到内网 的相应路由:
#route add -net 192.168.100.0/24 gw 192.168.1.1
15、在路由设备上添加路由:
#ip route 192.168.111.0 255.255.255.0 192.168.1.100
16、设置开机自启动:
#vim /etc/rc.loacl
route add -net 192.168.100.0/24 gw 192.168.1.1
/usr/local/sbin/openvpn --config /etc/openvpn/server.conf &