基于linux操作系统架构openvpn总结( 二 )


OpenVPN工作在OSI模型的第2或第3层,使用SSL/TLS协议进行网络传输 。支持多种客户认证方法,如证书、smart cards,加上用户名密码的证书认证等 。除此以外,还有强大的ACL功能限制客户的信息交换 。
OpenVPN可以运行在多种操作系统中,包括:
Linux, Windows 2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris.
使用OpenVpn,可以实现:
● 使用特定udp或tcp端口实现两台主机的之间的vpn连接 。
● 实现C/S结构,实现多台client通过server服务器互连互通 。
● 通过TLS/SSL加密保证数据传输的安全 。
● 通过数据的压缩,提高数据传输的速度 。
(由于其它功能在本文中并不需要使用,如想要详细了解请访问http://openvpn.net)
4.2 下载
从以下网址下载最新版本的openvpn source包 。
http://nchc.dl.sourceforge.net/sourceforge/openvpn/openvpn-2.0_rc16.tar.gz
由于openvpn需要使用数据压缩,所以还需要安装lzo包:
http://www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gz
4.3 安装
Linux:
代码:
软件 编译安装
Lzo ./configure Make && make install
Openvpn ./configure -prefix=/opt/openvpn Make && make install
FreeBSD:
代码:
Lzo ./configure Make && make install
Openvpn ./configure -prefix=/opt/openvpn --with-lzo-headers=/usr/local/include --with-lzo-headers=/usr/local/include Make && make install
参照上面的安装方法分别在linux和freebsd主机上安装好openvpn 。
4.4 你的操作系统支持tun吗?
从我安装过的操作系统看,RedHat9.0和FreeBSD4.9的内核默认已经支持TUN,并且已经安装tun模块 。RedHat AS3则没有该模块,需要重新编译内核支持 。
加载tun模块:
●Linux 2.4 or higher (with integrated TUN/TAP driver):
(1) make device node: mknod /dev/net/tun c 10 200
(2a)add to: echo "alias char-major-10-200 tun" >> /etc/modules.conf
(2b) load driver: modprobe tun
(3) enable routing: echo 1 > /proc/sys/net/ipv4/ip_forward
●FreeBSD 4.1.1 :
kldload if_tap
4.5 配置C/S结构的VPN网络
4.5.1 如何生成ca和cert/key?
代码:
Ca certificate
authority(认证授权),所有的server和client均使用同一个ca文件 。
cert certificate(证书) 。公钥,每一个server和client各自独立生成的公钥 。
key 私钥,每一个server和client工作独立生成的私钥 。
◎ server端只需要知道它自己的cert和key 。它不需要知道每一个可以连接到它的client的cert 。
◎ server端接受的client必须拥有以server的CA产生的cert 。server能使用它自己的CA私钥来确认client的cert中是否带有其CA的记号 。
4.5.1.1 产生MASTER Certificate Authority(CA) 的公钥(certificate)和私钥(key)
#######
In this section we will generate a master CA certificate/key, a server certificate/key, and certificates/keys for 3 separate clients
#######
在本节,我们会尝试建立一对master CA的cert和key,一对server端的cert和key,和3个不同client的年的cert和keys 。
UNIX:
在openvpn的源码中可以找到easy-rsa文件夹 。
cd easy-rsa
. ./vars 建立环境变量 #这个地方很多人会弄错,两点之间是有空间的
./clean-all 清除以前的
./build-ca 建立CA
最后一个命令会调用openssl来创建CA的公钥和私钥:
代码:
Country Name (2 letter code) [KG]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:yourcorp 在此输入公司名
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server"s hostname) []:hbroute 在此输入主机名或随便输一个名字

推荐阅读