基于 Linux OpenVPN 网络
OpenVPN 概述
OpenVPN 是一个开源的加密隧道构建工具,
基于 OpenSSL 的 SSL/TLS 协议, 可以在 Internet 中实现点对点的 SSL VPN 安全连接。使用 OpenVPN 的好处是安全、易用和稳定,且认证方式灵 活,具备实现 SSL VPN 解决方案的完整特性。OpenVPN 可以应用于 Linux、Unix、Mac OS 以及 Windows 等各种操作系统平台。
OpenVPN 提供两种类型的虚拟网络接口:TUN 和 TAP,分别用于建立 IP 隧道、以太网桥接。
在 Linux 中使用这两种虚拟设备,需要对应的内核模块支持。RHEL5 系统默认已编译好 tun 模块,
直接使用即可。
OpenVPN 的 官 方 站 点 是 openvpn , 目 前 发 布 的 最 新 测 试 版 本 为
OpenVPN-2.1_rc13,稳定版为OpenVPN-2.0.9。
本章案例中,需要下载使用的相关软件包参考如下:
最新稳定版源码包:openvpn/release/openvpn-2.0.
Windows 安装包:
openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.
LZO工具包:www.oberhumer/opensource/lzo/download/lzo-2.
OpenVPN 的安装及运行控制
8.2.1
在 RHEL5 系统中的安装
需要先安装 lzo 软件包,用于压缩隧道通讯数据以加快传输速度。lzo 和 openvpn 源码包都可
以按照默认的配置进行编译安装。OpenVPN 需要使用的 openssl 等软件均使用 RHEL5 系统自带 的 rpm 包,安装过程不再赘述。
[root@gw1 ~]# tar zxvf lzo-2.
[root@gw1 ~]# cd lzo-2.03
[root@gw1 lzo-2.03]# ./configure && make && make install
[root@gw1 lzo-2.03]# cd ../
[root@gw1 ~]# tar zxvf openvpn-2.0.
[root@gw1 ~]# cd openvpn-2.0.9
[root@gw1 openvpn-2.0.9]# ./configure && make && make install
在 Windows XP 系统中的安装
东京铁塔的幸福
双击下载的 openvpn-2.0.9-gui-1. 文件,按照向 导提示安装 即可。若只 作 为
OpenVPN客户端使用,安装时可以不勾选定制组件列表中的“OpenVPN Service”(如图 8.1所示) 。
图8.1 安装 OpenVPN-GUI 客户端工具
OpenVPN 服务的运行控制
在 RHEL5 系统中,可以直接复制 openvpn 源码目录中的脚本样例文件,用于控制 openvpn
服务的开启、重启或关闭。
[root@gw1 ~]# cp -p openvpn-2.0.9/sample-scripts/openvpn.init /etc/init.d/openvpn
[root@gw1 ~]# chkconfig --add openvpn
[root@gw1 ~]# chkconfig --level 2345 openvpn on
[root@gw1 etc]# service openvpn status
openvpn: service not started
启动openvpn进程需要建立对应的配置文件,具体配置过程请参考第8.3节的应用案例。
OpenVPN 网络架构应用实例
案例需求分析
本案例主要基于RHEL5 和Windows XP系统环境,跨越不安全的Internet网络,为异地的两个
局域网及远程网管工作站建立安全的SSL VPN连接(如图 8.2所示) 。
其中,北京总部和上海分公司的网关服务器均使用 RHEL5 系统,需要分别配置 OpenVPN,
用于连接两个异地的局域网 LAN1、LAN2。此外,位于 Internet 中的网管工作站使用 Windows XP 系统,需要随时通过 VPN 安全隧道访问总部的局域网 LAN1 和上海分公司的局域网 LAN2。
图8.2 OpenVPN 远程虚拟专用网络架构
基于上述需求,可以将北京总部的网关服务器 GW1 配置为 VPN Server 模式,上海的网关服
务 器 GW2 和 Internet 网 管 工 作 站 PC1 均 使 用 VPN Client 模 式 。 分 别 建 立 两 条 点 对 点 (Point-to-Point)的 SSL VPN 安全隧道——“GW1 <----> GW2”、“GW1 <----> PC1”即可。 由于 Internet 网络的细节不是本案例的重点,因此 GW1、GW2 的公网 IP 地址分别使用 173.74.75.76 和 173.74.75.77 来模拟。其他网络接口地址设置如下:
GW1、GW2 的内网接口 IP 地址分别为 192.168.1.1、192.168.2.1。
GW1 <----> GW2 隧道:分别使用虚拟 IP 地址 10.8.0.1/30、10.8.0.2/30。
GW1 <----> PC1 隧道:分别使用虚拟 IP 地址 10.9.0.1/30、10.9.0.2/30。
另外,两地局域网的客户机需要正确设置好 IP 地址、默认网关等参数: 李思思的胸
LAN1 的主机使用 192.168.1.0/24 网段,默认网关设为 192.168.1.1。
LAN2 的主机使用 192.168.2.0/24 网段,默认网关设为 192.168.2.1。
配置 GW1 <----> GW2 隧道连接
本小节主要阐述如何创建第 1 条 SSL VPN 隧道,用于连接 GW1、GW2 两台服务器,以便实
现北京、上海两地局域网(LAN1、LAN2)的安全互联。
主要实现过程如下。
第一步、配置主服务器(GW1)——北京
1. 配置 Internet 连接及 SNAT、路由转发
1)
配置 IP 地址
eth0 接口(173.74.75.76/24)用于连接 Internet,eth1 接口(192.168.1.1/24)用于连
接局域网(配置过程略) 。
2)
开启路由及 SNAT 转换
[root@gw1 ~]# vi /opt/gw1_nat.sh
sysctl -w net.ipv4.ip_forward=1
/sbin/iptables -t nat -I POSTROUTING -o eth0 -j SNAT --to-source 173.74.75.76
[root@gw1 ~]# chmod a+x /opt/gw1_nat.sh
载歌载舞歌词
[root@gw1 ~]# echo "/opt/gw1_nat.sh" >> /etc/rc.local
[root@gw1 ~]# /opt/gw1_nat.sh
2.安装 OpenVPN 服务
参考第8.2.1、8.2.3小节。
3. 创建证书和密钥文件
证书和密钥文件主要用于点对点客户端的认证,以便增强安全性。为了降低密钥创建过程
孤火的复杂性,可以充分利用 OpenVPN 源码包提供的 easy-rsa/目录,该目录中包含一系列简单
易用的脚本工具(参考“openvpn-2.0.9/easy-rsa/README”文件) 。
3)
配置变量环境
修改 easy-rsa/vars 文件,根据实际情况适当修改预定义变量,或保持默认。在后续
创建相关文件的过程中,将会直接读取这些变量的内容。其中“KEY_DIR”变量的值决定了
新创建的密钥等文件的存放位置。
[root@gw1 openvpn-2.0.9]# cd easy-rsa/
汪苏泷个人资料
[root@gw1 easy-rsa]# vi vars
export D=`pwd`
export KEY_CONFIG=$D/opensslf
export KEY_DIR=$D/keys
echo NOTE: when you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export KEY_SIZE=1024
export KEY_COUNTRY=CN    //粗体部分根据具体应用情况进行修改
export KEY_PROVINCE=BeiJing
export KEY_CITY=BeiJing
export KEY_ORG="BENET.Inc"
export KEY_EMAIL="vpnadm@benet"
[root@gw1 easy-rsa]# source vars  //执行 vars 文件中的代码
NOTE: when you run ./clean-all, I will be doing a rm -rf on /root/openvpn-2.0.9/easy-rsa/keys
[root@gw1 easy-rsa]# ./clean-all  //预先清除$KEY_DIR 目录
罗志祥多人
4)
创建 CA 证书
执行“./build-ca”脚本建立 CA 证书文件,根据脚本提示设置好国家代码、省份、城市、 公司名等信息,如通用识别名称“Common Name”项可以设置为 GW1 的 FQDN 名称。 后续创建的密钥文件需要依据该 CA 文件。
[root@gw1 easy-rsa]# ./build-ca