首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>本站原创>linux原创>文章内容
OPENVPN安装手册
来源:www.vfocus.net 作者:vfocus 发布时间:2009-08-18  

by:http://blog.vfocus.net

一、在网上下载openvpn的安装包http://openvpn.net/上下载openvpn的最新版,时至今 日是openvpn-2.0.9.tar.gz。

    网上都说还需要lzo这个压缩库。这个包是压缩的,我没有安装,在编译程序的时候只需要加上--disable-lzo就可以了。然后再配置文件里面把这项注释掉就可以了,这样所有要安装的就是一个包openvpn-2.0.9.tar.gz。

二、vpn服务端的网络结构

    vpn服务端是有两个ip 其中eth0 172.16.6.79 提供vpn服务,由外部通过172.31.16.0/24 通过1194端口拨入,然后通过 eth1 192.168.253.79访问192.168.253.0/24去维护服务器

三、安装openvpn

tar zxvf openvpn-2.0.9.tar.gz
cd openvpn-2.0.9
./configure –prefix=/usr/local/openvpn –-disable-lzo
make;make install

四、生成openvpn证书

    1、cd openvpn-2.0.9/ easy-rsa/

    vi vars

    根据自己的情况设置

根据自己的情况设置KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL,比如我的
export KEY_COUNTRY=CN
export KEY_PROVINCE=Beijing
export KEY_CITY=Beijing
export KEY_ORG=abc
export KEY_EMAIL=abc@123.com

然后保存
. ./vars //注意两个点中间有空格
./clean-all
./build-ca
build-ca 命令使用openssl 命令生成certificate authority (CA) certificate 和密钥:
./build-ca
Generating a 1024 bit RSA private key
....++++++
.......++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Beijing]:
Locality Name (eg, city) [Beijing]:
Organization Name (eg, company) [BUAA]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:zhang //这里随便输入即可

    Email Address [zhangwenhao@wanmei.com]:

    这些步骤一直按回车就可以了

    2、为vpn server生成证书与密匙

./build-key-server server
Common Name 处填server,其他默认,为上面编辑vars 文件时设置的值。"Sign the certificate?
[y/n]" 和"1 out of 1 certificate requests certified, commit? [y/n]"两处选y。

    3、为vpn clients 生成证书与密匙

./build-key client1
./build-key client2
./build-key client3
Common Name 处分别填client1 client2 client3,别的同vpn server 设置

    4、生成diffie hellman 参数

./build-dh

现在生成了所需的文件。目录keys 下生成的文件中,ca.crt 是所有vpn 机器都需要的。vpn server 需要ca.crt ca.key dh1024.pem server.crt server.key,拷贝到vpn server 的/etc/openvpn目录。vpn client1 需要ca.crt ca.key lient1.crt client1.key,拷贝到vpn client1 的/etc/openvpn 目录。client2,client3 和client1 同,只是client1.crt 和client1.key 分别用client2 和client3 的对应文件。vpn client2 和vpn client3 也把对应的密钥文件拷贝到各自的/etc/openvpn 目录。

五、配置server端与client端

    1、server.conf 使用代码包目录sample-config-files 里的server.conf 修改即可。配置文件如下()

#################################################
;local a.b.c.d 绑定的IP 地址,可以不填
port 1194 绑定的端口
proto tdp 选择udp 协议,也可用tcp
# "dev tun" will create a routed IP tunnel,
# "dev tap" will create an ethernet tunnel.
;dev tap
#使用tun 设备,路由IP 通道。FreeBSD 默认支持TUN/TAP 驱动。
dev tun
#下面4 处填上面为vpn server 生成的证书和密钥
ca /etc/openvpn/ca.crt (如果启动的时候带了cd路径,则这里不需要绝对路径)

cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/dh1024.pem

#配置vpn 虚拟网段,会在vpn server 建立一条10.0.0.1 >10.0.0.2 的点对点虚拟链路。
server 10.8.0.0 255.255.255.0
#记录client 对应得虚拟地址,默认600 秒更新一次
ifconfig-pool-persist ipp.txt
#等价于ping 10 和ping-restart 120,对于vpn 机器有可能断开外网联线或者重起的,
#或者vpn client 先于vpn server 运行的情况下很重要。Client 会重新连接。
keepalive 10 120
#开启压缩支持。如果编译的时候没有使用LZO 库则注释本行
#comp-lzo
#初始化完成后改变OpenVPN 进程的用户ID 为nobody
user nobody
#同上,改变进程的组ID 为nobody。如果是Windows 系统,注释掉这两行
group nobody
persist-key
persist-tun
#默认每分钟更新状态文件,可以看到client 的真实IP 虚拟IP 等信息。
status openvpn-status.log
verb 3

    2、client端

client1.conf 使用源代码包目录sample-config-files 里的client.conf 修改即可

client
dev tun
proto tcp #和server.conf 一致即可
remote 172.16.6.79 1194 #指定vpn server 的IP 地址和端口
resolv-retry infinite #如果解析vpn server 失败则无限次重试
nobind
user nobody
group nobody
persist-key
persist-tun
ca ca.crt
cert client1.crt #这2 行填给client1 生成的密钥文件。client2 client3 相应更改。
key client1.key
#comp-lzo
keepalive 10 120

如果有其他的客户端需要连过来  也采取同样的配置

    3、分配client端的联入地址

给server.confi添加如下行:
client-config-dir ccd
并在vpn server 的/etc/openvpn 目录建立ccd 子目录,并在ccd 目录下建立文件client1,client2,client3(这里的文件名对应”为vpn clients 产生证书和密钥”步骤里的Common Name),当对应得client 连接时,vpn server 会读去对应文件里的配置信息。文件client1 里输入:
ifconfig-push 10.8.0.5 10.8.0.6,即给vpn client1 指定10.8.0.5,对端10.8.0.6 的虚拟链路。

如果有其他的客户端也同样处理,如

client2 内容:ifconfig-push 10.8.0.9 10.8.0.10
client3 内容:ifconfig-push 10.8.0.13 10.8.0.14

分别拷贝server.conf,client1.conf,client2.conf,client3.conf 到vpn server 和对应的client。

    4、启动vpn

分别在各个vpn 计算机启动vpn server 和vpn client

启动server的时候用 守护进程启动

./openvpn –daemon –config /etc/openvpn/server.conf

启动client的时候 用client的配置文件

./openvpn –daemon –config /etc/openvpn/client.conf

查看端口1194端口是否起来,如果两个都起来则查看ifconfig 看vpn网卡是否起来

到这一步,VPN 客户端和服务端可以相互通讯了。10.8.0.1 应该可以ping 通10.8.0.5,10.8.0.9,10.8.0.13。10.8.0.5,10.8.0.9,10.8.0.13 也可以ping 通10.8.0.1

但是此时还仅仅是vpn 客户端与服务器可以通,但此时,vpn的客户端还不能访问服务器端同网段内机器

    5、 vpn client 访问vpn server 所在172.16.6.0/24 网段内计算机

第一种方法,添加如下行到server.conf
push "route 172.16.6.0 255.255.255.0"
push 选项是把选项内容给连接的vpn 客户端执行,也就是在vpn 客户端执行“route 172.16.6.0 255.255.255.0”,即当client 连接时,添加路由到client 的路由表里。对于vpn client1,该选项相当于在vpn client1 的路由表里添加到网络172.16.6.0/24,下一跳为10.8.0.6的路由,这里10.8.0.6 为给vpn client1 分配的虚拟IP 对的服务器端IP,相当于路由到vpn server。

第二种方法,如果不改变 server.conf,在vpn client1 里route add –net 172.16.6.0 10.8.0.6 255.255.255.0 效果一样,也可route add –net 172.16.6.0 10.8.0.1 255.255.255.0 直接路由到vpn server 的本端IP 也可,但这样需要在所有的vpn 客户端改变路由表。

这样在vpn 客户端可以ping 通172.16.6.0/24 网段内部计算机了。到此,vpn客户端可以访问服务端同网段的服务器了。

    6、总结
在vpn server 的/etc/rc.local 文件添加如下行:
/usr/local/openvpn/openvpn –daemon --config /etc/openvpn/server.conf --cd /etc/openvpn/
在vpn client1 的/etc/rc.local 文件添加如下行:
/usr/local/openvpn/openvpn –daemon --config /etc/openvpn/client1.conf --cd /etc/openvpn/

这样完成了所有的配置。下面总结如下:
vpn server 的目录/etc/openvpn 下有文件ca.crt,ca.key,dh1024.pem,server.crt,server.key和server.conf 以及子目录ccd。/etc/openvpn/ccd 目录下有文件client1,client2 和client3。

/etc/openvpn/server.conf 内容如下:
;local a.b.c.d
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
client-config-dir ccd
#使vpn clients 能访问vpn server 内部网段计算机
push "route 172.16.6.0 255.255.255.0"
#route 172.31.13.0 255.255.255.0 #使vpn server 能访问中文网计算机

/etc/openvpn/ccd/client1 内容如下:
ifconfig-push 10.8.0.5 10.8.0.6
iroute 172.31.13.0 255.255.255.0

vpn client1 的目录/etc/openvpn 下有文件ca.crt,ca.key client1.crt,client1.key 和client1.conf。
/etc/openvpn/client1.conf 内容如下:
##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server. #
##############################################
client
dev tun
proto udp
remote 172.16.6.79 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3
keepalive 10 120


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·ssh-3.2记录sftp日志,并且chroo
·openssh记录sftp详细日志,并chr
·用linux构建仗剑江湖mud游戏服务
·Linux高可用(HA)集群笔记heartbe
·关于日志记录系统设计思想
·unix入侵及防御心得(一)(2)
·unix入侵及防御心得(一)(1)
·linux下的Informix安装配置
·Informix的数据库优化
·Linux下apache运行mysql,cgi,p
·Linux下安装Oracle817完美解决版
·改的一个非GBK的JSP的webshell
  相关文章
·Linux高可用(HA)集群笔记heartbe
·lvs+heard负载均衡文档(DR)
·用mod_gzip对Apache1.3做Web压缩
·openssh记录sftp详细日志,并chr
·在 RHEL3 上安装 Oracle 10g
·Informix的数据库优化
·linux下的Informix安装配置
·Linux下apache运行mysql,cgi,p
·Linux下安装Oracle817完美解决版
·ssh-3.2记录sftp日志,并且chroo
·改的一个非GBK的JSP的webshell
·unix入侵及防御心得(一)(2)
  推荐广告
CopyRight © 2002-2018 VFocuS.Net All Rights Reserved