前两天写了搭建 pptp ,今晚抽空一边写搭建 openvpn 一边进行搭建吧。根据记忆去做了。

网上很多源码编译 openvpn 服务器的,我不想折腾,还是继续 centos 6 下 yum 安装 openvpn server 吧。

服务端配置:

1、添加软件源。

现在很多 vps 的 centos 是没有 openvpn 的源的,需要手动添加。

x86-64 wget http://apt.sw.be/redhat/el6/en/x8664/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x8664.rpm rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm #i686 wget http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.i686.rpm rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.i686.rpm #以上两种方法,请按照事情情况进行,当然,你也可以使用如下酱紫的命令进行 rpm -Uvh http://apt.sw.be/redhate/e......

如果访问不了以上源的安装地址,也可以通过我的提供的地址去下载:

https://www.dropbox.com/s/0meopg9d0nsw0da/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
https://www.dropbox.com/s/mtjxvame9i8s6ig/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

2、安装 openvpn

yum install openvpn

3、获取配置初始文件

获取配置建立初始化文件 cp -R /usr/share/openvpn/easy-rsa /etc/openvpn/ #此上命令,可能因为系统不一致而不一样,我的是 centos6 ,命令如下: cp -R /usr/share/doc/openvpn-2.2.2/easy-rsa /etc/openvpn/

4、检查 openssl 版本,确定 ssl 的 cnf

openssl version -a #根据版本,执行一下命令,我的版本是 1.0.0 cd /etc/openvpn/easy-rsa/2.0/ cp openssl-1.0.0.cnf openssl.cn

5、生成客户端证书

cd /etc/openvpn/easy-rsa/2.0/ chmod +x ./* source ./vars ./clean-all #创建CA (根据提示输入,在 keys 文件夹中生成 ca.crt , ca.key) ./build-ca #创建服务端证书 (根据提示输入,在 keys 文件夹中生成 server.crt , server.key) ./build-key-server server #生成Diffie Hellman参数 ./build-dh

6、添加服务器配置文件

cd /etc/openvpn vi server.conf #在配置文件输入以下内容: port 1194 proto tcp dev tun ca ./easy-rsa/2.0/keys/ca.crt cert ./easy-rsa/2.0/keys/server.crt key ./easy-rsa/2.0/keys/server.key dh ./easy-rsa/2.0/keys/dh1024.pem status /var/run/openvpn.status server 10.168.1.0 255.255.255.0 #push "redirect-gateway def1" #push "dhcp-option DNS 8.8.8.8" ifconfig-pool-persist ipp.txt client-config-dir /etc/openvpn/ccd user nobody group nobody client-to-client keepalive 10 120 comp-lzo persist-key persist-tun script-security 2 verb 3 #以上配置文件支持 单server --->> 多client,而且不会修改默认的网关,所以运行后,不会影响现有的不会影响现有的网络路由,这样可以支持多客户端之间的互相连接 #如果服务端强制需要客户端连接服务器之后修改客户端的默认网络都走 vpn 服务器,则将 push 的两条参数注释去掉

7、开启ip转发,设定转发规则,设定启动

vi /etc/sysctl .conf #修改下面的等于1 net.ipv4.ip_forward = 1 #保存退出并另设置生效 sysctl -p #添加转发规则 10.168.0.0/24 为上面设定的网段,xxx.xxx.xxx.xxx 为vps外网ip iptables -t nat -A POSTROUTING -s 10.168.1.0/24 -j SNAT --to-source xxx.xxx.xxx.xxx #保存规则 service iptables save service iptables restart #设定服务开机启动 chkconfig openvpn on

8、启动服务

/etc/init.d/openvpn restart

客户端配置

1、生成客户端证书文件

cd /etc/openvpn/easy-rsa/2.0/ #生成客户端证书 client1 (包含 client1.key 与 client.crt) ./build-key client1 #同样,可以使用 ./build-key client2 给另外以为客户生成一份证书

2、获取客户端所需证书

将 keys 目录下的以下文件获取下来,用于客户端配置。

ca.crt client1.key client1.crt

以上文件至于使用什么方法获取,不再本文讨论范围内。

3、生成客户端配置文件

window下的文件名为 *.ovpn,linux 下的一般为 *.conf,这个证书是给 client1 做的,那就定义为 client1.ovpn 与 client1.conf

配置文件的内容如下:

client dev tun proto tcp remote x.x.x.x 1194 #redirect-gateway def1 #dhcp-option DNS 8.8.8.8 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key comp-lzo script-security 2 verb 3 mssfix 1300 tun-mtu-extra 32 #x.x.x.x为服务端ip,可以使用域名,如服务器没有设置没有更改本地默认网关,而本客户端又想所有流量均走vpn服务器,可以将仅有的两条注释去掉(去掉#)

将配置文件与上面下载下来的服务端下载下来的3个key与crt放在一起,windows下置于openvpn安装目录的conf目录下,linux下随意。

4、启动openvpn客户端连接

windows下面直接启动客户端,选择client1进行连接。

linux下通过以下命令进行客户端连接:

openvpn --config openvpn.conf #(注意路径)

以上分为两个部分,分别写了服务端与客户端的配置,如果今后需要添加用户,生成新的用户证书,重新执行下面部分的内容即可。

到此,我的 openvpn 服务器成功搭建并且连接成功。