OpenVPN安装配置

来源:互联网 发布:linux运维需要会什么 编辑:程序博客网 时间:2024/05/09 18:14

2. 安装


2.1
安装前准备


系统:centos5.4
i686 i686 i386 GNU/Linux


把系统的Forward打开,可以通过如下命令实现
echo 1 > /proc/sys/net/ipv4/ip_forward
或者使用
sysctl -w net.ipv4.ip_forward=1
或者修改/etc/sysctl.conf文件,增加
net.ipv4.ip_forward = 1

首先检查系统是否安装lzo实时压缩工具
$rpm -qa | grep lzo
如果没有安装可以在http://www.oberhumer.com/opensource/lzo/找到并安装,安装方法详见压缩包中的 INSTALL文件,当然也可以用rpm包安装,记住一定要安装lzo-devel开头的那个包,因为OpenVPN需要使用lzo的头文件。




2.2
获取软件


Wget http://down1.chinaunix.net/distfiles/openvpn-2.0.7.tar.gz


Wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz



2.3
安装

tar -xzvf lzo-2.03tar.gz 

cd lzo-2.03

./configure 

make

make install

安装openvpn

$tar -zxvf openvpn-2.07tar.gz
$cd openvpn-2.07

#./configure --with-lzo-lib=/usr/local/lib --with-lzo-headers=/usr/local/include



3.
配置

3.1创建证书配置文件

拷贝源码文件到/etc下(当然也可以生成完密钥后将kes拷过来也可)

Cd / openvpn-2.07

cp -ar easy-rsa/etc/openvpn

编辑vars文件

找到如下内容

定义你所在的国家,2个字符
export KEY_COUNTRY=CN
你所在的省份
export KEY_PROVINCE=bj
你所在的城市
export KEY_CITY=bj
你所在的组织
export KEY_ORG="OpenVPN ORG"
你的单位
export KEY_OU="OpenVPN"
你的邮件地址
export KEY_EMAIL="feiyang@163.com"

-------------CUT Here-----------------
修改后保存,下面我们开始什成keys,以下为shell命令 "#" 为提示符

然后执行


. ./vars 
(注意. .之间有空格)

NOTE:when you run ./clean-all, I will be doing a rm -rf on/etc/openvpn/easy-rsa/keys(此为正确输出信息)

#./clean-all#初始化keys目录,创建所需要的文件和目录

#./build-ca#生成root CA证书。用于签发serverclient证书
密匙跟openssl紧密结.

如果没有修改的地方一路回车即可

# ls keys
ca.crt ca.key index.txt serial

我们可以看到ca.crt ca.key文件已经什成了。
下面我们为服务器生成 Diffie-Hellman 文件
# ./build-dh #TLS server 需要使用的一个文件
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..+..............................................................+....................................................................+....+........+.........+....................................................+.+..................................................................................................................................................................+.......................................+.................................+.............+.................................................................................+.......................................................+.............................++*++*++*

创建并签发VPN Server使用的CA


3.2建立服务器的认证书和密匙

# ./build-key-server server # server
为创建后的文件名,分别为server.crtserver.key
Generating a 1024 bit RSA private key


输出我就不写了,其中有两个选择的地方,都选择y即可,如果报错comaname的错误时是你的输入的名字错误,或是重名了。修改文件名即可。


3.3建立客户端证书

如果以后要为其他Client颁发证书,直接使用build-key命令签发新证书。
# ./build-key client1
Generating a 1024 bit RSA private key
........++++++
....................++++++
writing new private key to 'elm.key'
-----
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(略)

Name(eg, your name or your server's hostname) []:client1#注意Common Name最好不要相同,如果相同[server要加duplicate-cn选项,那么Email地址也不能相同
Email Address [feiyang@163.com]:

……………….

…………………(略,回车即可)

hecertificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

说明创建成功

为防止恶意攻击(如DOSUDP port flooding),我们生成一个"HMAC firewall"
#openvpn --genkey --secretkeys/ta.key

生成证书吊销链文件,防止日后有人丢失证书,被非法用户接入VPN
#./make-crl vpncrl.pem
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf

到现在为止,一切准备就绪,下面开始写配置文件,为了缩小篇幅,把原有注释都去掉了。


3.4置服务端:

创建server.conf

可以直接将源码下的server.conf拷贝过来修改即可

如:

cp/opt/openvpn/openvpn-2.0.7/sample-config-files/server.conf
/etc/openvpn/

编辑server.conf文件

;locala.b.c.d ##申明本机使用的IP地址,也可以不说明

port1194 ##申明使用的端口,默认1194

prototcp ##申明使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议

protoudp

devtap ##申明使用的设备可选taptuntap是二层设备,支持链路层协议。#tunip层的点对点协议,限制稍微多一些,本人习惯使用TAP设备

;devtun

;dev-nodeMyTap

##OpenVPN使用的ROOT CA,使用build-ca生成的,用于验证客户是证书是否合法

ca
/etc/openvpn/easy-rsa/keys/ca.crt

#Server使用的证书文件

cert/etc/openvpneasy-rsa/keys/server.crt

#Server使用的证书对应的key,注意文件的权限,防止被盗

key/etc/openvpn/ easy-rsa/keys/server.key
#This file should be kept secret

#CRL文件的申明,被吊销的证书链,这些证书将无法登录
crl-verify vpncrl.pem

#上面提到的生成的Diffie-Hellman文件

dh/etc/openvpn /easy-rsa/keys/dh1024.pem

#用于记录某个Client获得的IP地址,类似于dhcpd.lease文件,

;server10.8.0.0 255.255.255.0

server192.168.98.0 255.255.255.0

#防止openvpn重新启动后忘记”Client曾经使用过的IP地址

ifconfig-pool-persistipp.txt

#Bridge状态下类似DHCPD的配置,为客户分配地址,由于这里工作在路由模式,所以不使用

;server-bridge10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

#通过VPN ServerClient push路由,client通过pull指令获得Server push的所有选项并应用(这一点很重要,这样其他服务器添加一下路由就可以登陆了,否则无效,这个最好和你的内网断一至,否则也不生效)

;push"route 192.168.10.0 255.255.255.0"

;push"route 192.168.20.0 255.255.255.0"

push"route 192.168.99.0 255.255.255.0"


;client-config-dirccd

;route192.168.40.128 255.255.255.248

route192.168.99.0 255.255.255.0


;client-config-dirccd

;route10.9.0.0 255.255.255.252

;learn-address./script

;push"redirect-gateway"

#如果可以让VPN Client之间相互访问直接通过openvpn程序转发,

;push"dhcp-option DNS 10.8.0.1"

;push"dhcp-option WINS 10.8.0.1"

#不用发送到tun或者tap设备后重新转发,优化Client to Client的访问效率

client-to-client


;duplicate-cn

#NAT后面使用VPN,如果VPN长时间不通信,NAT Session可能会失效,
#
导致VPN连接丢失,为防止之类事情的发生,keepalive提供一个类似于ping的机制,
#
下面表示每10秒通过VPNControl通道ping对方,如果连续120秒无法ping通,
#
认为连接丢失,并重新启动VPN,重新连接
#
(对于mode server模式下的openvpn不会重新连接)。

keepalive10 120

#没有HMAC signature的控制信息不予处理,注意server端后面的数字肯定使用0client使用1

;tls-authta.key 0 # This file is secret

#对数据进行压缩,注意ServerClient一致

comp-lzo

#定义最大连接数

max-clients100

#定义运行openvpn的用户

usernobody

groupnobody

#通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys

persist-key

#通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,
#
否则网络连接会先linkdown然后linkup

persist-tun

#定期把openvpn的一些状态信息写到文件中,以便自己写程序计费或者进行其他操作

statusopenvpn-status.log

#记录日志,每次重新启动openvpn后删除原有的log信息

log
openvpn.log

;log-append
openvpn.log

#相当于debug level,具体查看manual

verb3

;mute20

创建OpenVPN启动脚本,可以在源代码目录中找到,在sample-scripts目录下的openvpn.init文件,将其复制到/etc/init.d/目录中,改名为openvpn
然后运行:
#chkconfig --add openvpn
#chkconfig openvpn on
立即启动openenvpn
#/etc/init.d/openvpn start

(如果没有openvpn启动程序的话,将源码的拷过来,如:cp/opt/openvpn/openvpn-2.0.7/sample-scripts/openvpn.init /etc/init.d/openvpn



3.5client


client

#dev tun

dev tap

proto udp

#proto tcp

remote ip(你的vpn的公网ip,就是用来连接服务端的ip 1194 (服务端是什么端口这里就是什么端口)

remote-random

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert client1.crt

key client1.key

#tls-auth ta.key 1

comp-lzo

verb 3

# Silence repeating messages

;mute 20

keepalive 5 10


3.9启动服务

/etc/init.d/openvpn start

cd /etc/openvpn/easy-rsa/


openvpn--daemon --config
server.conf #
有没有错误输出

openvpn --daemon --config
server.conf 
&#没有的话后端运行(这项是必须的否则客户端将报告连不上服务器的错误)


netstat-antlp | grep 1194 #(查看端口,如果有的话说明openvpn启动,如果没有继续查配置文件)


4.
其他服务器设置


4.1
添加路由

在其他服务器上添加路由,这一项很重要,否则openvpn不能直接访问。

route add -net192.168.98.0 gw
192.168.99.209 netmask255.255.255.0 dev eth1
gw 后面的ip为你自己内网eth1设置的ip



5.
安装windows客户端



5.1
获取软件


软件下载地址:


http://swupdate.openvpn.net/community/releases/openvpn-2.2-beta3-install.exe


至于安装过程那就简单了不在叙述




5.2
获取服务器生成的证书

将服务器端生成client crt key 还有cacrt 下载到本地

放到openvpn的安装目录的config文件

如我安装的路径为C:\Program Files\OpenVPN\config (就把这些东西放到里边即可)




5.3 
修改客户端配置文件

这里边在我配置客户端文件时已经列出了客户端的配置文件,不在描述


6
验收



61
打开防火墙

关闭linux 服务器上的防火墙或在防火墙上打开1194端口


如:
Iptables - A INPUT -ptcp –dport1194
-j ACCEPT




62 
链接测试


当你的客户端安装完成后,会产生两个两个电脑的图标,一个是网卡和一个是连接终端。如图:

右键点击红色的connect 连接,如果没问题的话就可以连接了,成功后会是绿色的图标。




补充:至于linux下的客户端的配置和window下基本一样,但想连接服务器时直接运行

openvpn --daemon --config client.conf & 即可。(这个也需要安装openvpn




7
常见问题解答

1. 
BIO read tls_read_plaintext error: error:14090086:SSLroutines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed


认证问题key的钥匙是否正确

2

Nov04 16:10:05 2010 C:\WINDOWS\system32\route.exe DELETE 192.168.99.0 MASK255.255.255.0 192.168.98.1

ThuNov 04 16:10:05 2010 Warning: route gateway is not reachable on any activenetwork adapters: 192.168.98.1

ThuNov 04 16:10:05 2010 Route deletion via IPAPI failed [adaptive]

ThuNov 04 16:10:05 2010 Route deletion fallback to route.exe

Theroute specified was not found.

ThuNov 04 16:10:05 2010 Closing TUN/TAP interface

ThuNov 04 16:10:05 2010 SIGTERM[soft,tun-stop] received, process exiting


这是windos 没有tap的网卡 需要安装客户端工具自己生成一个网卡


不习惯的话 自己去下载pdf吧



参考:http://www.xiaohui.com/dev/server/20070514-install-openvpn.htm

原创粉丝点击