CentOS 5.5上安装openvpn全过程

净无邪 2010-11-19

OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,允许参与建立VPN的单点使用公开密钥、电子证书、或者用户名/密码来进行身份验证,能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows上运行,K包含了许多安全性的功能。本文一步一步介绍了在CentOS 5.5上安装openvpn的过程。

一、 下载软件包

# cd /opt
# wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.04.tar.gz
# wget http://openvpn.net/release/openvpn-2.1_rc22.tar.gz

二、解压及安装

# tar zxvf lzo*
# tar zxvf openvpn*

进入相应文件夹下,执行以下命令编译安装:

# ./configure && make && make install

三、服务器端设置:

1. 用easy-rsa生成服务器证书客户端证书

# cp /opt/openvpn-2.1_rc22/easy-rsa/2.0 -r /etc/openvpn
# cd /etc/openvpn/2.0

编辑所需的参数再调用之

# vim vars
# source ./vars

下面这个命令在第一次安装时可以运行,以后在添加客户端时千万别运行,这个命令会清除所有已经生成的

证书密钥。

# ./clean-all

生成服务器端ca证书

# ./build-ca

生成服务器端密钥证书, 后面这个server-name就是服务器名,可以自定义。

# ./build-server-key server-name

一路Enter之后证书生成。

再依次生成所需客户端证书密钥文件:

# ./build-key client-name1
# ./build-key client-name2

再生成 diffie hellman 参数

# ./build-dh

创建并编辑服务器端配置文件

cp /opt/openvpn-2.1_rc22/sample-config-files/server.conf /etc/openvpn/
vi /etc/openvpn/server.conf

修改完成之后,以下面这个命令启动openvpn server

# /usr/local/sbin/openvpn --config /etc/openvpn/server.conf &

每次都运行上面这个命令有点麻烦,这里有一个script,把它复制到 /etc/init.d 文件夹下,可以实现启动,状态查询,重启等。该文件适应于CentOS 5.5, 如果密钥及配置文件位置不一样,也许要作一些小的修改。

再在rcX.d文件夹下作几个软链接就可以实现开机自动启动了。

也可以修改 /etc/rc.local文件实现开机启动。

密钥分发

把ca.crt 及相应client 的三个密钥证书文件一共四个分别分发出去就可以了。注意不需要将ca.key分发出去,

ca.key应该保密。

四、客户端配置

1. Linux

相应比较简单,安装好openvpn后,把收到的ca及lient文件放到相应的位置,配置好client.conf就可以了。

2. Windows

到openvpn官方网站下载windows安装包进行安装,在安装文件夹下有下个config文件夹,把你的ca及client文件放到该文件夹下,从sample-config下拷贝一个client.ovpn并作相应修改即可。

五、固定IP地址分配

在服务器端配置文件(server.conf)里取消下面行的注释:

;client-config-dir ccd
;route 10.8.0.0 255.255.255.252

在 /etc/openvpn文件夹下新建名为ccd文件夹,在ccd 文件夹里以客户名为名新建文件,内容格式如下:

ifconfig-push 10.8.0.20 10.8.0.120

客户端启动后即获得IP地: 10.8.0.20

但要注意上面格式只对linux有效,如果客户端为windows,则客户端会连接不成功。因为openvpn在windows下时,

其local IP 与 remote IP 必须在网址掩码为255.255.255.252的同一网段内,而且不能取头尾两端的IP,因此

一个openvpn连接在windows下最少要占用4个ip地址。

windows 下的 客户端IP配置必须为如下形式:

ifconfig-push 10.8.0.30 10.8.0.29

因为10.8.0.28/30网段包含以下IP: 10.8.0.28-31, 去除头尾,只有29与30可用。其他类推。

六、访问外网设置

开启服务器端路由转发功能

# echo 1 > /proc/sys/net/ipv4/ip_forward
#为了使CentOS重启后仍然开启路由转发功能我们需要再执行下列命令
# sysctl -w net.ipv4.ip_forward=1

添加iptables转发规则

#因为我的CentOS是ADSL拨号上网,所以把出口设置成ppp0,请根据实际情况设置, 如eth0
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ppp0 -j MASQUERADE

相关推荐