本文档主要讲述了关于映翰通InRouter路由器与中心端OpenVPN 服务器构建OpenVPN的方法。InRouter 61X,Inrouter 71X全系列产品均支持VPN功能,并与众多国际主流中心端设备厂商产品兼容。建立起OpenVPN之后便可以实现下位机—InRouter设备LAN端与上位机—中心端设备LAN进行双向
通信。
2. 网络拓扑
2.1 网络拓扑
2.2 网络拓扑说明 中心端边缘设备公网IP地址为222.211.221.48,掩码为255.255.255.255,内网LAN口IP地址为10.5.99.1,掩码为255.255.255.0.备注:如果中心端公网IP采用动态获取,则需要采用DDNS技术辅助Openvpn的搭建(具体操作步骤请查阅相关文档) OpenVPN服务端采用PC服务器,操作系统为Windows XP Professional SP3,IP地址为10.5.99.198,掩码为255.255.255.0,网关为10.5.99.1. 在中心端边缘设备上做端口映射,将所有来自外部的目的地址为221.237.13.34,目的端口为UDP 1194的包转发给10.5.99.125.备注:因各个厂家的中心端边缘设备在端口映射方面配置不一样,所以本手册在此不作介绍(具体配置方法请查阅相关文档) 接入端1设备为InRouter 61X/71X;外部IP地址采用3G拨号,内部IP地址192.168.2.1,掩码255.255.255.0 接入端2设备为InRouter 61X/71X;外部IP地址采用3G拨号,内部IP地址192.168.3.1,掩码255.255.255.02.3 OpenVPN简介OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。OpenVPN使用方便,运行性能优秀,支持Solaris、Linux 2.2+(Linux 2.2+表示Linux 2.2及以上版本,下同)、OpenBSD 3.0+、FreeBSD、NetBSD、Mac OS X、Android和Windows 2000+的操作系统,并且采用了高强度的数据加密,再加上其开源免费的特性,使得OpenVPN成为中小型企业及个人的VPN首选产品。OpenVPN的大致工作原理就是在服务器端和客户端之间搭建一个独立于当前网络环境的加密通道,将服务器端和多个客户端组建成一个独立的虚拟局域网,从而实现服务器端和客户端、客户端和客户端之间的相互通信。可以点击下列链接直接从360云盘下载OpenVPN 2.3.0的官方正式版Windows安装文件(特别值得注意的是:由于Windows自身的限制,Windows版本的OpenVPN只有具备管理员权限的用户才能成功安装。当前最新版本的OpenVPN 2.3.0 只能在Windows XP及以上版本的操作系统上安装)。下载网站:
http://openvpn.ustc.edu.cn/官方网站:
http://openvpn.se/ 3. 配置指导3.1 中心端OpenVPN服务器配置3.1.1 服务端软件安装在安装的时候,必须注意的是:在OpenVPN 2.3.0中,默认是不安装easy-rsa(一个加密证书生成程序)的,因此,我们必须手动勾选如下图所示的两个选项(在OpenVPN 2.2中是默认选中的)。
然后一路Next(如果询问是否安装TAP-Win32驱动程序时,请选择“仍然继续”),就安装成功了。3.1.2 OpenVPN服务端配置概述OpenVPN的配置工作主要分为如下两步:A. 创建加密证书和私钥,其中包括服务器端和客户端都要用到的核心CA证书和私钥,服务器端自身的加密证书(即公钥)和私钥,以及每个客户端对应的加密证书和私钥。B. 为服务器和客户端编写对应的配置文件,然后将其与第一步中生成的相应证书、私钥放在OpenVPN安装目录的config文件夹下。OpenVPN支持基于加密证书的双向认证。在OpenVPN中,不管是服务器还是客户端,所有的证书和私钥都需要由服务器端生成,客户端要先获得服务器端分配给它的加密证书和密钥才能成功连接。这与使用网上银行有些类似,大多数银行网站都会要求先下载并安装一个数字证书,才允许进行网上付款或其他操作。3.1.3 OpenVPN服务端配置步骤一:创建加密证书和私钥3.1.3.1 修改OpenVPN服务器端的vars.bat.sample文件使用记事本或其他文本编辑工具打开OpenVPN安装目录easy-rsavars.bat.sample文件,如下图所示:
备注:变量HOME表示easy-rsa文件夹的路径 (本手册的OpenVPN服务器端安装在D:OpenVPN)。变量KEY_SIZE表示生成的私钥大小,一般填写为1024或2048,默认为1024位,可以根据自己的需要进行修改,本手册使用默认值。由于稍后给客户端生成对应加密证书和私钥时,程序会要求我们输入一些注册信息。如果需要配置多个客户端,并且许多信息都相同(比如国家、省市、地址、公司名称等)还可以修改vars.bat.sample文件后面的一些相关变量的默认值,这样在稍后生成客户端证书的时候,如果该信息项不输入就会采用默认值。
3.1.3.2运行DOS命令,初始化执行环境。在作为服务器端的电脑上打开DOS命令窗口,并进入到%OpenVPN的安装目录%easy-rsa目录。本手册的服务器端安装目录是D:OpenVPN,因此这里进入D:OpenVPNeasy-rsa。然后依次输入并执行以下命令(括号内是附加的注释): init-config(初始化配置,将vars.bat.sample文件的内容复制到vars.bat。实际上,也可以直接双击执行easy-rsa目录下的init-config.bat文件来代替这一步。) vars(设置相应的局部环境变量,就是我们在vars.bat.sample文件中设置的内容) clean-all(相关设置和清理工作)
3.1.3.3 创建CA根证书:build-ca
如上图所示,在build-ca的时候需要输入一些注册信息。在输入信息的时候,如果不输入任何信息,就表示采用默认值(前面中的内容就是默认值);如果输入.,则表示当前信息项留空白。值得注意的是,上图中红色矩形框中的inhand_CA是证书的通用名称(Common Name),相当于我们常说的账号,也可以自行输入其他名称。3.1.3.4 创建服务器端证书:build-key-server server
如上图所示,命令中的参数server指的是生成的证书文件名称,可以按照自己的需要进行修改,不过后面的Common Name也应保持一致。第二个红色矩形框中是输入的密码,也可以根据意愿自行输入。最后程序会询问是否注册并提交证书,两次均输入y即可。3.1.3.5 创建迪菲•赫尔曼密钥:build-dh
迪菲•赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D–H”) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥,这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。3.1.3.6 创建客户端证书:build-key client
如上图所示,命令中的参数client表示生成的证书文件名称,可以按照自己的需要进行修改,不过后面的Common Name也应保持一致。第二个红色矩形框中是输入的密码,也可以根据意愿自行输入。最后程序会询问是否注册并提交证书,两次均输入y即可。如果想创建多个不同的客户端证书,只需要重复此步骤即可。切记,Common Name不要重复,这是OpenVPN用来区分不同客户端的关键所在。创建完证书后,我们会发现easy-rsa目录下多了一个keys文件夹。现在我们将keys文件夹中对应的文件复制到OpenVPN服务器或客户端的安装目录的config文件夹下。
服务器端config目录需要的文件包括: ca.crt ca.key(核心CA证书和私钥) dh1024.pem(如果最初的变量KEY_SIZE设为2048,这里就是dh2048.pem) server.crt server.key(名称server根据个人设置可能有所不同)客户端config目录需要的文件包括: ca.crt client.crt client.key(名称client根据个人设置可能有所不同)非常重要的提醒:以上命令都是在同一个DOS窗口中执行的,如果以后需要打开新窗口来执行命令(比如创建新的客户端证书):不需要再执行init-config命令,除非再次改动了vars.bat.sample文件;每一次打开新窗口时都需要先执行vars命令,后面才能执行其他命令。3.1.4 OpenVPN服务端配置步骤二:编写对应的配置文件上面我们已经创建了OpenVPN配置所需要的各种证书和私钥,现在我们开始为服务器和客户端编写对应的配置文件。在OpenVPN的安装目录的sample-config文件夹中存放有3个示例模板文件:server.ovpn、client.ovpn、sample.ovpn。其中,server.ovpn是服务器的配置模板,client.ovpn是客户端的配置模板(sample.ovpn也可用作客户端配置模板,不过配置比较简单,不够全面。我们就复制server.ovpn到服务器的config目录,并在此基础上进行修改。在OpenVPN的配置文件中,前面带“#”或“;”的表示注释内容。3.1.4.1 编辑服务器端配置文件。server.ovpn的英文注释中已经比较清楚地解释了每一个设置的作用,本手册对配置文件的英文注释作了全文翻译,可以点击查看server.ovpn的配置内容详解,在此不再赘述,下面只提取所有用到的命令。 local 10.5.99.198 #指定监听的本机IP(因为有些计算机具备多个IP地址),该命令是可选的,默认监听所有IP地址。 port 1194 #指定监听的本机端口号 proto udp #指定采用的传输协议,可以选择tcp或udp dev tun #指定创建的通信隧道类型,可选tun或tap ca ca.crt #指定CA证书的文件路径 cert server.crt #指定服务器端的证书文件路径 key server.key #指定服务器端的私钥文件路径 dh dh1024.pem #指定迪菲赫尔曼参数的文件路径 server 172.16.1.0 255.255.255.0 #指定虚拟局域网占用的IP地址段和子网掩码,此处配置的服务器自身占用172.16.1.1。 ifconfig-pool-persist ipp.txt #服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP)。 keepalive 10 120 #每10秒ping一次,连接超时时间设为120秒。 comp-lzo #开启VPN连接压缩,如果服务器端开启,客户端也必须开启 client-to-client #允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接 persist-key persist-tun #持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源。 status openvpn-status.log #指定记录OpenVPN状态的日志文件路径 verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细3.1.4.2实际修改内容截图
3.1.5 创建路由在OpenVPN建立成功后,服务器可以ping通OpenVPN客户端创建的虚拟接口IP,但无法ping通客户端路由器的LAN网段,所以需要在服务器端添加静态路由去往相应客户端LAN网段的路由。1、在config文件夹下创建一个“ccd”文件夹2、在ccd文件夹创建一个文本文件“client”,需要注意不是client.txt,该文件没有后缀。这个文件的名字与证书名字对应,该配置主要功能是,当以客户端clinet为证书连接服务器后,服务器将去往该客户端的路由192.168.2.0/24 添加到服务器本地路由表中。3、若在客户端中使能NAT模式,则不需要创建路由。
3.2 中心端OpenVPN服务器后续操作3.2.1 启动OpenVPN服务点击桌面“开始”菜单,在运行框中输入”services.msc”,然后回车。
双击OpenVPN Service
至此,OpenVPN服务已启动完成。3.2.2 拷贝客户端证书和根证书在中心端OpenVPN服务器配置完成后,需要将为客户端生成的数字证书和根证书拷贝出来便于客户端在证书导入时使用。
3.2 远端IRouter基本配置3.2.1 远端InRouter LAN口配置
3.3 远端OpenVPN配置3.3.1进入IR700证书管理
3.3.2导入客户端的证书首先选择(CA)证书(服务器端所生成的CA.crt文件)点击导入根(CA)证书。选择公钥证书(服务器生成的Client.crt文件)点击导入公钥证书选择私人证书(服务器生成的Client.key文件)点击导入私人证书一定要点导入证书,显示导入成功之后,在点击应用才能生效,注意若没有启用自申请证书功能,手动换证书时,需要将设备恢复出厂值(系统-配置管理,恢复出厂之前可以备份配置)。
3.3.3 配置OpenVPN
选择新增按钮
OPENVPN服务器:222.211.221.48(中心端的IP地址)认证方式:数字证书(多客户端)(通过证书的方式认证)远端子网:10.5.99.0(中心端的子网地址)远端子网掩码:255.255.255.0启用NAT:勾选(vpn内流量将改写源地址,若使用路由模式则不需要勾选)启用LZO压缩(服务器端启用了该选项,所以必须启用)加密算法:Blowfish128(默认)接口类型:TUN(默认)
保存成功以后1分钟内隧道状态会显示已连接
3.4 IR900 OpenVPN客户端配置3.4.1 IR900 LAN端口配置
3.4.2 证书导入分别3次导入CA、公钥、私钥 首先选择(CA)证书(服务器端所生成的CA.crt文件)点击导入根(CA)证书。选择公钥证书(服务器生成的Client.crt文件)点击导入公钥证书、选择私人证书(服务器生成的Client.key文件)点击导入私人证书。一定要点导入证书,显示导入成功之后,在点击应用才能生效。注意若没有启用自申请证书功能,手动换证书时,需要将设备恢复出厂值(系统-配置管理,恢复出厂之前可以备份配置)。
3.4.3 创建OpenVPNOPENVPN服务器:222.211.221.48(中心端的IP地址)认证方式:数字证书 (通过证书的方式认证)远端子网:10.5.99.0(中心端的子网地址)远端子网掩码:255.255.255.0启用NAT:勾选(vpn内流量将改写源地址,若使用路由模式则不需要勾选)启用LZO压缩(服务器端启用了该选项,所以必须启用)加密算法:Blowfish128(默认)接口类型:TUN(默认)
IR900 简易配置手册
http://wenku.baidu.com/view/9c595023284ac850ac0242253.5 验证3.5.1 中心端验证Thu Jun 27 18:14:14 2013 119.4.252.148:17794 TLS: Ini
tial packet from [AF_INET]119.4.252.148:17794, sid=af241491 4ee45d00Thu Jun 27 18:14:19 2013 119.4.252.148:17794 VERIFY OK: depth=1, C=CN, ST=SC, L=ChengDu, O=inhand, OU=TS, CN=inhand_CA, name=inhand, emailAddress=inhand@inhand.com.cnThu Jun 27 18:14:19 2013 119.4.252.148:17794 VERIFY OK: depth=0, C=CN, ST=SC, L=ChengDu, O=inhand, OU=Branch, CN=client, name=inhand, emailAddress=inhand@inhand.com.cnThu Jun 27 18:14:20 2013 119.4.252.148:17794 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit keyThu Jun 27 18:14:20 2013 119.4.252.148:17794 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authenticationThu Jun 27 18:14:20 2013 119.4.252.148:17794 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit keyThu Jun 27 18:14:20 2013 119.4.252.148:17794 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authenticationThu Jun 27 18:14:21 2013 119.4.252.148:17794 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSAThu Jun 27 18:14:21 2013 119.4.252.148:17794 [client] Peer Connection Initiated with [AF_INET]119.4.252.148:17794Thu Jun 27 18:14:21 2013 MULTI: new connection by client 'client' will cause previous active sessions by this client to be dropped. Remember to use the --duplicate-cn option if you want multiple clients using the same certificate or username to concurrently connect.Thu Jun 27 18:14:21 2013 MULTI_sva: pool returned IPv4=172.16.1.6, IPv6=(Not enabled)Thu Jun 27 18:14:21 2013 MULTI: Learn: 172.16.1.6 -> client/119.4.252.148:17794Thu Jun 27 18:14:21 2013 MULTI: primary virtual IP for client/119.4.252.148:17794: 172.16.1.6Thu Jun 27 18:14:23 2013 client/119.4.252.148:17794 PUSH: Received control message: 'PUSH_REQUEST'Thu Jun 27 18:14:23 2013 client/119.4.252.148:17794 send_push_reply(): safe_cap=940Thu Jun 27 18:14:23 2013 client/119.4.252.148:17794 SENT CONTROL [client]: 'PUSH_REPLY,route 172.16.1.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 172.16.1.6 172.16.1.5' (status=1)上述信息显示服务端已将172.16.1.6分配给远端InRouter3.4.2 远端InRouter验证打开远端计算机的cmd工具ping一下中心端的虚拟IP地址172.16.1.1。如果可以ping通则成功