Centos下yum安装配置OpenVPN服务器及客户端全攻略

首先来讲一下什么是VPN。
VPN虚拟专用网络(Virtual Private Network ,简称VPN)指的是在公用网络上建立专用网络的技术。
通常我们可以用来干什么?
1、翻墙
2、翻墙
3、翻墙

案例一:
某国机房需要层层备案审批,且机房软硬防火墙都会过滤未备案的域名。而某人有感觉使用国外服务器有不少局限性。那么某人决定采用Apache的代理模式+组建VPN来进行翻墙(机房防火墙)处理。
案例二:
某国国家防火墙考虑国民安全需要对外境网站进行过滤,然而某人需要访问一些境外娱乐站点,所以某人决定使用境外VPN服务器进行翻墙上网。
案例三:
…..

废话不多说了。直接开整:
而且也有众多vpn软件,这里我们着重介绍openvpn。
OpenVPN是一款开源的VPN软件,使用ssl加密交换数据,数据比较安全,可使用TCP/UDP协议,自定义端口,不易被ISP控制,是替代PPTPD很好的选择。
在Centos下安装VPN是比较方便的,Centos官方源无OpenVPN软件,可先安装EPEL源。
安装:

rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum install openvpn

配置:

cp -R /usr/share/openvpn/easy-rsa/ /etc/openvpn/ #也有可能是下面的目录
cp -R /usr/share/doc/openvpn-*/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa/2.0
chmod +x ./*
source ./vars 此文件内变量可编辑,默认即可

生成密钥,默认回车即可。不过这里需要提醒一下诸位,如果在你的系统中找不到easy-rsa,就是找不到那个文件夹,说明你没有安装easy-rsa。使用yum命名安装一下即可。

yum install easy-rsa
./clean-all 
./build-ca server #生成CA证书
./build-key-server server #生成服务器证书
./build-key client1 #生成客户端证书,多个请多次执行
./build-key client2
./build-dh #生成Diffie Hellman参数
openvpn --genkey --secret ta.key #使用tls-auth验证加强安全

编辑服务端配置文件:

vim /etc/openvpn/server.conf  #添加以下内容
port 1194 #默认监听端口,可修改
proto udp #默认udp协议,网络状况不好可选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
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
tls-auth /etc/openvpn/easy-rsa/2.0/keys/ta.key 0
server 10.8.0.0 255.255.255.0 #客户端分配IP
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /etc/openvpn/easy-rsa/2.0/keys/openvpn-status.log
verb 4
duplicate-cn #一个证书可多次登录
push "dhcp-option DNS 10.8.0.1" #同步DNS
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

打包并下载密钥

tar zcvf keys.tar.gz keys/

启动OpenVpn并开启内核转发:

service openvpn start #启动openvpn服务
chkconfig openvpn on #设置openvpn开机启动
echo 1 > /proc/sys/net/ipv4/ip_forward #启用转发
echo "echo 1 > /proc/sys/net/ipv4/ip_forward " >/etc/rc.local #加入启动项,也可修改sysctl

开启NAT路由:

iptables -t nat -A POSTROUTING  -o eth0 -j MASQUERADE
service iptalbes save #保存规则

到此服务端安装配置完成,然后安装配置Windows OpenVPN客户端。
安装后将下载的密钥复制到安装目录config下,并新建配置文件client.ovpn,内容如下:

client 
dev tun 
proto udp
remote ip port #IP和端口请自定义填写
persist-key 
persist-tun 
ca ca.crt 
cert client1.crt 
key client1.key 
tls-auth ta.key 1
ns-cert-type server 
comp-lzo 
verb 3 
redirect-gateway def1 
route-method exe
route-delay 2

Ok,漫长的过程终于结束了,畅销您的安全互联网之旅吧。

鉴于诸位现在较多人使用win7,在win7环境下要使用最新的openvpn客户端,令人郁闷的openvpn这个网站被河蟹了。还好我给你准备了一份。拿去吧。

openvpn.32.64

另外我们需要讲一下在linux(Centos)下如何使用openvpn的客户端。毕竟有时候是为了穿越机房防火墙的。
在centos下我们首先如同安装服务端一样把openvpn给安装了。
安装完毕后,我们进入到/etc/openvpn目录下。这里边如果你放了server.conf 则会当自己是服务器。如果你放了client.conf则会当自己是客户端。
客户端的配置和win没什么区别。只需要把crt,key等文件和conf配置文件放入/etc/openvpn中即可。
在我的使用中,我发现一个问题。如果使用client.conf来连接客户端,不会断线重连。每次客户端掉线之后需要/etc/init.d/openvpn restart 才能重新连接。
这明显是没有任何意义的。
所以我们使用如下方法来添加客户端连接。
将client.conf改名字为client.ovpn。此时你再重启openvpn发现不会连接。
然后我们

openvpn /etc/***.ovpn

这时候会输出一些日志。检查日志。如果日志没问题,说明这个配置文件ok。
那我们CTRL+C退出。然后

openvpn /etc/***.ovpn > /dev/null &

这个客户端就后台连接。而且会断线重连!