论文部分内容阅读
在构建VPN时,我们经常会遇到这样的困惑:配置简单的VPN往往不太安全(如PPTP);配置安全的VPN往往过于复杂(如IPSec),而且基于IPSec的VPN无法很好地解决NAT的穿透问题。但是用OpenVPN就能构建既安全又高效的VPN,从而解决以上问题。
OpenVPN是一套全功能的SSL VPN解决方案,它包含多种配置应用,包括远程访问、站对站虚拟私网、WiFi安全,以及负载均衡、容错性好的企业级远程访问方案。它具有跨平台的可移植性、良好的稳定性、成千上万个客户端支持的可伸展性、支持动态IP地址及NAT等主要特征。
本文介绍一个应用开放源码软件OpenVPN构建基于SSL/TLS的校园VPN案例。客户端将通过校园服务端的防火墙,穿透NAT,建立基于TLS认证方式的VPN。该案例在我校的校园网中应用,稳定性很好。
一、软件环境
VPN服务端采用Windows2003 Server OpenVPN for Windows 2000/XP and higher。客户端采用WindowsXP-SP2 OpenVPN for Windows 2000/XP and higher。
二、网络环境
VPN Server→Firewall→Internet→ADSL→Client,即服务端的VPN服务器通过一台防火墙连接到因特网,客户端多采用ADSL方式上网。
服务端主要网络设备IP分配情况:防火墙的对外网卡(eth0)IP为61.1.1.1(公网地址),对内的网卡(eth1)IP为192.168.10.1/24。VPN服务器上有一块物理网卡,IP为192.168.10.2/24。
三、安装OpenVPN for Windows 2000/XP and higher
OpenVPN for Windows 2000/XP and higher 安装包下载地址是http://openvpn.net/download.html。服务端和客户端安装使用相同的软件包。
在服务端按默认方式安装OpenVPN,安装系统会自动创建一个名为TAP-Win32 Adapter V8的虚拟网络设备,安装完成后可以在C:\Program Files\OpenVPN看到以下几个目录:bin (放置OpenVPN的主程序)、config(放置配置文件)、driver(放置设备驱动文件)、easy-rsa(放置快速生成密钥的批处理文件)、log (放置Server的日志文件)、sample-config(放置配置文件模板)。
四、配置VPN Server
在命令提示符下进入C:\Program Files\OpenVPN\easy-rsa目录,以下操作如没有特别说明均在此目录中进行。
(一)进行初始化
1.运行init-config.bat。
2.修改vars文件,为了缩小篇幅,只保留了实际修改部分。
set KEY_COUNTRY= CN #定义你所在的国家,2个字符
set KEY_PROVINCE=JX #定义你所在的省份
set KEY_CITY=DAYU #定义你所在的城市
set KEY_ORG=DYZX #定义你所在的组织
set KEY_EMAIL=jxlibin@163.com #定义你的邮件地址
(二) 生成CA和Cert/Key
1.创建CA的公钥和私钥
(1)运行vars,使上述修改的变量生效。
(2)运行clean-all,初始化Keys目录,创建Keys目录和所需要的文件。
(3)运行build-ca,生成Root CA证书,用于签发Server和Client证书。
完成以上步骤后系统会在keys目录中创建ca.crt、ca.key、index.txt、serial四个文件。
2.建立Diffie Hellman文件
执行build-dh,生成TLS server需要使用的文件dh1024.pem。
3.创建Server端的cert和key文件
执行build-key-server server,server为创建后的文件名,分别为server.crt、server.key。
4.创建Client端的cert和key文件
执行build-key client,为其他Client颁发证书,签发新证书直接使用build-key命令。
以上生成的密钥文件均放在Keys目录中。将ca.crt、server.crt、server.key、dh1024.pem四个文件从Keys目录拷贝到Server的C:\Program Files\OpenVPN \config目录中。
(三)写Server端配置文件server.ovpn
详细配置请查看文件C:\Program Files\OpenVPN \ sample-config\ server.ovpn,以下为本案例server.ovpn文件关键配置项。
port 5000 #申明使用的端口
proto udp #申明使用的协议,默认使用UDP。
dev tap #申明使用的设备,可选tap或tun。tap是第二层设备,支持链路层协议;tun是Ip层的点对点协议。
ca ca.crt #申明使用的ROOT CA
cert server.crt #申明Server使用的证书文件
key server.key #申明Server使用的证书对应的key
dh dh1024.pem #申明使用的Diffie-Hellman文件
server 192.168.0.0 255.255.255.0 #设置server模式,192.168.0.1自动分配给VPN Server,VPN客户可动态获取其他地址。
push "route 192.168.10.0 255.255.255.0" #通过VPN Server往Client push路由
把配置的电子文件Server.ovpn保存到C:\Program Files\OpenVPN\config 目录中。
五、配置VPN Client
在客户端同样按默认方式安装OpenVPN,把在VPN服务器中生成的ca.crt、client.crt、client.key三个文件一并拷贝到客户机的C:\Program Files\OpenVPN\config 目录中。
写客户端配置文件client.ovpn,以下是本案例client.ovpn文件关键配置项。
client #申明是一个client
dev tap #申明使用的设备
proto udp #申明使用的协议
remote 61.1.1.1 5000 #设置远程Server的IP地址和端口
ca ca.crt #申明使用的ROOT CA
cert client.crt #申明Client使用的证书文件
key client.key #申明Client使用的证书对应的key
把配置文件client.ovpn保存到C:\Program Files\OpenVPN\config 目录中。
六、设置Firewall和NAT
1.在服务端防火墙上开启外网IP(61.1.1.1)的 UDP 端口5000。
2.把防火墙外网IP(61.1.1.1)、UDP端口5000映射到VPN服务器IP(192.168.10.2)、UDP端口5000。
七、调试网络
为了提高调试的效率,可以先在服务端进行本地调试,待本地调试成功后再到远程客户端进行远程调试。注意:启动OpenVPN 服务之前要先启动VPN服务器的LAN路由服务。
调试步骤:
1.启动服务端OpenVPN :右击Server.ovpn,选择菜单 Start OpenVPN on this config file。
2.启动客户端OpenVPN :右击Client.ovpn,选择菜单Start OpenVPN on this config file。
3.启动OpenVPN时注意观察屏幕的提示信息,如果在配置文件中开启了Log选项可以查看Log文件记录。在启动过程中如果屏幕出现错误提示,请根据出错提示排错。
4.如果服务端和客户端均启动正常,在客户端中可以Ping通192.168.0.1和192.168.10.2 两个地址。如果前一个地址Ping不通,说明VPN隧道没有建立,请仔细对照本文,逐一对照排查故障。如果后一个地址Ping不通,则是客户端的路由问题,请检查Server.ovpn配置项push "route 192.168.10.0 255.255.255.0"是否开启。
八、设置自动启动OpenVPN服务
在VPN调试成功后,为了省去手工运行OpenVPN的麻烦,可以在VPN服务端和VPN客户端设置自动启动OpenVPN Service。设置方法是依次打开Windows 2003和XP的管理工具→服务→OpenVPN Service服务属性,在“启动类型”栏选择“自动”,确定后退出。以后系统每次启动时将自动调用配置文件启动OpenVPN服务。
至此,基于点对多点的OpenVPN配置及调试完成。OpenVPN也可以实现基于点对点的VPN,如应用在教育城域网中,有条件的读者可以自己试一试。
(作者单位:江西大余中学)
OpenVPN是一套全功能的SSL VPN解决方案,它包含多种配置应用,包括远程访问、站对站虚拟私网、WiFi安全,以及负载均衡、容错性好的企业级远程访问方案。它具有跨平台的可移植性、良好的稳定性、成千上万个客户端支持的可伸展性、支持动态IP地址及NAT等主要特征。
本文介绍一个应用开放源码软件OpenVPN构建基于SSL/TLS的校园VPN案例。客户端将通过校园服务端的防火墙,穿透NAT,建立基于TLS认证方式的VPN。该案例在我校的校园网中应用,稳定性很好。
一、软件环境
VPN服务端采用Windows2003 Server OpenVPN for Windows 2000/XP and higher。客户端采用WindowsXP-SP2 OpenVPN for Windows 2000/XP and higher。
二、网络环境
VPN Server→Firewall→Internet→ADSL→Client,即服务端的VPN服务器通过一台防火墙连接到因特网,客户端多采用ADSL方式上网。
服务端主要网络设备IP分配情况:防火墙的对外网卡(eth0)IP为61.1.1.1(公网地址),对内的网卡(eth1)IP为192.168.10.1/24。VPN服务器上有一块物理网卡,IP为192.168.10.2/24。
三、安装OpenVPN for Windows 2000/XP and higher
OpenVPN for Windows 2000/XP and higher 安装包下载地址是http://openvpn.net/download.html。服务端和客户端安装使用相同的软件包。
在服务端按默认方式安装OpenVPN,安装系统会自动创建一个名为TAP-Win32 Adapter V8的虚拟网络设备,安装完成后可以在C:\Program Files\OpenVPN看到以下几个目录:bin (放置OpenVPN的主程序)、config(放置配置文件)、driver(放置设备驱动文件)、easy-rsa(放置快速生成密钥的批处理文件)、log (放置Server的日志文件)、sample-config(放置配置文件模板)。
四、配置VPN Server
在命令提示符下进入C:\Program Files\OpenVPN\easy-rsa目录,以下操作如没有特别说明均在此目录中进行。
(一)进行初始化
1.运行init-config.bat。
2.修改vars文件,为了缩小篇幅,只保留了实际修改部分。
set KEY_COUNTRY= CN #定义你所在的国家,2个字符
set KEY_PROVINCE=JX #定义你所在的省份
set KEY_CITY=DAYU #定义你所在的城市
set KEY_ORG=DYZX #定义你所在的组织
set KEY_EMAIL=jxlibin@163.com #定义你的邮件地址
(二) 生成CA和Cert/Key
1.创建CA的公钥和私钥
(1)运行vars,使上述修改的变量生效。
(2)运行clean-all,初始化Keys目录,创建Keys目录和所需要的文件。
(3)运行build-ca,生成Root CA证书,用于签发Server和Client证书。
完成以上步骤后系统会在keys目录中创建ca.crt、ca.key、index.txt、serial四个文件。
2.建立Diffie Hellman文件
执行build-dh,生成TLS server需要使用的文件dh1024.pem。
3.创建Server端的cert和key文件
执行build-key-server server,server为创建后的文件名,分别为server.crt、server.key。
4.创建Client端的cert和key文件
执行build-key client,为其他Client颁发证书,签发新证书直接使用build-key命令。
以上生成的密钥文件均放在Keys目录中。将ca.crt、server.crt、server.key、dh1024.pem四个文件从Keys目录拷贝到Server的C:\Program Files\OpenVPN \config目录中。
(三)写Server端配置文件server.ovpn
详细配置请查看文件C:\Program Files\OpenVPN \ sample-config\ server.ovpn,以下为本案例server.ovpn文件关键配置项。
port 5000 #申明使用的端口
proto udp #申明使用的协议,默认使用UDP。
dev tap #申明使用的设备,可选tap或tun。tap是第二层设备,支持链路层协议;tun是Ip层的点对点协议。
ca ca.crt #申明使用的ROOT CA
cert server.crt #申明Server使用的证书文件
key server.key #申明Server使用的证书对应的key
dh dh1024.pem #申明使用的Diffie-Hellman文件
server 192.168.0.0 255.255.255.0 #设置server模式,192.168.0.1自动分配给VPN Server,VPN客户可动态获取其他地址。
push "route 192.168.10.0 255.255.255.0" #通过VPN Server往Client push路由
把配置的电子文件Server.ovpn保存到C:\Program Files\OpenVPN\config 目录中。
五、配置VPN Client
在客户端同样按默认方式安装OpenVPN,把在VPN服务器中生成的ca.crt、client.crt、client.key三个文件一并拷贝到客户机的C:\Program Files\OpenVPN\config 目录中。
写客户端配置文件client.ovpn,以下是本案例client.ovpn文件关键配置项。
client #申明是一个client
dev tap #申明使用的设备
proto udp #申明使用的协议
remote 61.1.1.1 5000 #设置远程Server的IP地址和端口
ca ca.crt #申明使用的ROOT CA
cert client.crt #申明Client使用的证书文件
key client.key #申明Client使用的证书对应的key
把配置文件client.ovpn保存到C:\Program Files\OpenVPN\config 目录中。
六、设置Firewall和NAT
1.在服务端防火墙上开启外网IP(61.1.1.1)的 UDP 端口5000。
2.把防火墙外网IP(61.1.1.1)、UDP端口5000映射到VPN服务器IP(192.168.10.2)、UDP端口5000。
七、调试网络
为了提高调试的效率,可以先在服务端进行本地调试,待本地调试成功后再到远程客户端进行远程调试。注意:启动OpenVPN 服务之前要先启动VPN服务器的LAN路由服务。
调试步骤:
1.启动服务端OpenVPN :右击Server.ovpn,选择菜单 Start OpenVPN on this config file。
2.启动客户端OpenVPN :右击Client.ovpn,选择菜单Start OpenVPN on this config file。
3.启动OpenVPN时注意观察屏幕的提示信息,如果在配置文件中开启了Log选项可以查看Log文件记录。在启动过程中如果屏幕出现错误提示,请根据出错提示排错。
4.如果服务端和客户端均启动正常,在客户端中可以Ping通192.168.0.1和192.168.10.2 两个地址。如果前一个地址Ping不通,说明VPN隧道没有建立,请仔细对照本文,逐一对照排查故障。如果后一个地址Ping不通,则是客户端的路由问题,请检查Server.ovpn配置项push "route 192.168.10.0 255.255.255.0"是否开启。
八、设置自动启动OpenVPN服务
在VPN调试成功后,为了省去手工运行OpenVPN的麻烦,可以在VPN服务端和VPN客户端设置自动启动OpenVPN Service。设置方法是依次打开Windows 2003和XP的管理工具→服务→OpenVPN Service服务属性,在“启动类型”栏选择“自动”,确定后退出。以后系统每次启动时将自动调用配置文件启动OpenVPN服务。
至此,基于点对多点的OpenVPN配置及调试完成。OpenVPN也可以实现基于点对点的VPN,如应用在教育城域网中,有条件的读者可以自己试一试。
(作者单位:江西大余中学)