背景技术
安全套接层(Secure Sockets Layer,SSL)是一套Internet数据安全协议,它已被广泛地用于web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,建立在可靠的传输协议(如TCP协议)之上,为高层协议数据通讯提供数据封装、压缩、加密等安全支持。
虚拟专用网(Virtual Private Network,VPN)被定义为通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。虚拟专用网是对企业公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。
SSL VPN即指采用SSL协议来实现远程接入的一种新型VPN技术,因为SSL协议被内置于IE等浏览器中,使用SSL协议进行认证和数据加密的SSL VPN就可以免于安装客户端。相对于传统的IPSec VPN而言,SSL VPN具有部署简单、无客户端、维护成本低、网络适应强等特点,这两种类型的VPN之间的差别就类似C/S构架和B/S构架的区别。
单纯只有B/S模式的SSL VPN,也叫web代理技术,其最大优点是可以免客户端,直接以浏览器访问VPN内网的web资源。但是,无法访问内网的其他C/S应用,如远程桌面、邮件系统、文件共享、FTP、数据库和ERP等;实际上,甚至有通过客户端访问整个VPN子网资源的需求存在。因此,实际商用中,SSL VPN也需要通过安装客户端控件的方式来实现远程安全传输其他C/S应用,其中最关键技术是网络连接(Network Connection,NC),其原理是SSL VPN客户端连接服务器端认证后,由服务器端分配虚拟IP地址给客户端,以虚拟IP地址来访问内网资源,并被外层SSL安全隧道加密传输。
SSL VPN的这种网络连接技术,类似于IPSec VPN的客户端模式,其本质区别是IPSec VPN使用IKE协商,使用ESP/AH协议传输数据,而SSL VPN使用SSL协议协商和传输数据。在易用性方面,IPSec VPN客户端需要预先安装在使用者的PC中,而SSL VPN的客户端,可以在用户登录到SSL VPN服务器网关上认证后自动以Active控件形式安装和自动运行,省去了预先安装的繁琐和客户端版本升级需要使用者手动卸载安装等步骤,能更方便于移动用户远程办公使用。
SSL VPN的网络连接技术的客户端具体实现,就是每个用户登录认证成功后,SSL VPN客户端以SSL协议连接服务器端,创建安全隧道,发送控制报文,请求分配虚拟IP地址和可访问的内网IP网段资源;每个客户端可以分配到彼此不相同的虚拟IP地址,在客户端所在的操作系统中启用一块虚拟网卡,设置虚拟网卡的IP地址为分配得到的虚拟IP地址;对内网IP网段资源在操作系统中添加出接口为虚拟网卡的路由,让目的IP地址在该网段内的数据查路由后,出接口为虚拟网卡,操作系统会自动为数据报文添加源IP地址为虚拟网卡上对应的IP地址,即从VPN服务端分配的虚拟IP地址,此时的报文,我们称为内层报文。
图1是现有技术中SSL VPN客户端的实现原理图,图中,实线是发出报文加密流程,虚线是接收报文解密流程。如图1所示,当用户访问SSL VPN网关保护的内网IP网段时,如ftp、远程桌面等内网IP资源,其数据流到达网络层后,查找系统路由表走到出接口虚拟网卡;SSL VPN客户端从虚拟网卡读取出这些需保护的内网访问数据(此时的数据其实已经是一个个IP报文,其源IP地址是虚拟网卡上的IP地址,目的IP是具体应用(如FTP)的目的IP地址),把数据进行加密封装上外层报文头,从SSL安全隧道中发送出去。
图2是现有技术中SSL VPN的组网示意图,如图2所示,用户主机(PC)所处内网地址网段是192.168.1.0/24网段,VPN网关(即VPN服务端)内网也是192.168.1.0/24网段,用户通过VPN拨入后,本端内网环境中和VPN网关内网中,可能都存在相同IP地址的设备,如192.168.1.1,这样,势必存在由于地址网段重叠或冲突,带来的无法正常访问VPN内网服务器的问题。
发明内容
有鉴于此,本发明的目的是提供一种访问VPN服务端内网资源的方法及装置,能够解决由于VPN服务端的内网网段与主机侧的内网网段重叠造成的、用户主机无法正常访问VPN服务端内网资源的问题。
为实现上述目的,本发明提供技术方案如下:
一种访问VPN服务端内网资源的方法,应用于用户主机上,所述方法包括:
使用用户主机的真实IP地址与VPN服务端建立隧道连接,并获取VPN服务端发送的虚拟IP地址和可访问的内网网段资源;
如果VPN服务端的内网网段与主机侧的内网网段重叠,则将VPN服务端的内网网段转换为与主机侧的内网网段不重叠的代理网段,并在路由表中添加代理网段的出接口为所述虚拟IP地址的路由;
当用户需要访问VPN服务端的内网网段资源时,提示用户将访问的目的IP地址修改为所述代理网段中的IP地址;
获取到达所述虚拟IP地址的数据报文,数据报文的源IP地址为所述虚拟IP地址,目的IP地址还原为VPN服务端的内网网段中的IP地址,并将修改后的数据报文封装为隧道报文后通过所述隧道发送出去。
上述的方法,其中,还包括:
接收到VPN服务端发送的隧道报文后,获取所述隧道报文的内层报文,将所述内层报文的源IP地址修改为所述代理网段中的IP地址后,将修改后的内层报文发送到所述虚拟IP地址;
获取到达所述虚拟IP地址的所述内层报文,根据路由信息将所述内层报文上送到应用层处理。
一种访问VPN服务端内网资源的装置,应用于用户主机上,所述装置包括:
VPN建立单元,用于使用用户主机的真实IP地址与VPN服务端建立隧道连接,并获取VPN服务端发送的虚拟IP地址和可访问的内网网段资源;
路由处理单元,用于如果VPN服务端的内网网段与主机侧的内网网段重叠,则将VPN服务端的内网网段转换为与主机侧的内网网段不重叠的代理网段,并在路由表中添加代理网段的出接口为所述虚拟IP地址的路由;
提示单元,用于当用户需要访问VPN服务端的内网网段资源时,提示用户将访问的目的IP地址修改为所述代理网段中的IP地址;
VPN处理单元,用于获取到达所述虚拟IP地址的数据报文,数据报文的源IP地址为所述虚拟IP地址,目的IP地址还原为VPN服务端的内网网段中的IP地址,并将修改后的数据报文封装为隧道报文后通过所述隧道发送出去。
上述的装置,其中:
所述VPN处理单元还用于,接收到VPN服务端发送的隧道报文后,获取所述隧道报文的内层报文,将所述内层报文的源IP地址修改为所述代理网段中的IP地址后,将修改后的内层报文发送到所述虚拟IP地址;
所述路由处理单元还用于,获取到达所述虚拟IP地址的所述内层报文,根据路由信息将所述内层报文上送到应用层处理。
与现有技术相比,根据本发明的技术方案,当确定VPN服务端的内网网段与主机侧的内网网段重叠时,可以自动将重叠的地址网段转换为代理网段后在路由表中增加相应的路由信息,并在用户访问VPN服务端的内网资源时,提示用户对目的IP地址进行相应的修改,如此,解决了由于VPN服务端的内网网段与主机侧的内网网段重叠造成的、用户主机无法正常访问VPN服务端内网资源的问题。
本发明的最大优点就是SSLVPN客户端所在PC处在路由器内网中,且其内网IP网段,与VPN网关内网服务器网段重叠或冲突时,本发明可以自动转换重叠的地址网段,并提示用户如何访问内网服务器的功能。
具体实施方式
请继续参照图2,由于PC所在内网和VPN网关内网都是192.168.1.0/24网段,想要同时既能访问PC所处环境中本身的局域网,又能访问VPN虚拟专用网中的相同地址的内网,一种方法是,修改PC端内网网段,把PC和家用或办公用的路由器内网地址,改为其他网段(如192.168.100.0/24),与VPN内网地址不再重叠。但是,这需要用户懂一些相关网络知识,并且,路由器的接口地址也需要允许修改才行,假如用户出差在酒店上网,路由器地址就不能随意更改了。
为此,本发明实施例提供一种访问VPN服务端内网资源的方法及装置,不需要修改PC和路由器的内网地址网段,而是由VPN客户端自动检测本机IP所处网段是否与将要访问的VPN内网资源网段重叠,如果重叠,则在PC上VPN客户端中对VPN内网服务器网段做地址代理转换工作,来解决地址重叠问题。继续以图2为例,如果检测到内网资源网段为192.168.1.0/24,那么自动将其网络地址加一,转换为192.68.2.0/24,再对本机添加路由表条目,目的地址192.168.2.0/24出接口为虚拟网卡,这样,192.168.1.0/24网段查路由后,出接口为真实网卡传输到局域网,192.168.2.0/24网段查路由后,出接口为虚拟网卡,通过VPN隧道发送到服务端,如此便解决了地址冲突的问题。
以下结合附图对本发明进行详细描述。
图3为本发明的访问VPN服务端内网资源的方法流程图,所述方法应用于于图2所示的组网环境中的用户主机(PC)上。参照图2和图3,所述方法可以包括如下步骤:
步骤301,使用用户主机的真实IP地址与VPN服务端建立隧道连接,并获取VPN服务端发送的虚拟IP地址和可访问的内网网段资源;
VPN服务端即图中的VPN网关,用户主机的真实IP地址是指其真实网卡的IP地址。用户主机可以通过建立的隧道来获取所述虚拟IP地址和可访问的内网网段资源。
步骤302,如果VPN服务端的内网网段与主机侧的内网网段重叠,则将VPN服务端的内网网段转换为与主机侧的内网网段不重叠的代理网段,并在路由表中添加代理网段的出接口为所述虚拟IP地址的路由;
用户主机获取到可访问的内网网端资源后,可以通过系统函数获取本机路由表,进行交叉匹配后能够知道VPN服务端的内网网段与主机侧的内网网段重叠是否重叠,如果重叠,则进行网段转换后添加到代理网段的出接口为所述虚拟IP地址的路由;如果不重叠,则可以添加到VPN服务端的内网网段的出接口为所述虚拟IP地址的路由。
步骤303,当用户需要访问VPN服务端的内网网段资源时,提示用户将访问的目的IP地址修改为所述代理网段中的IP地址;
这里,可以提示用户进行IP地址修改的具体方式,该修改方式与步骤302中的网段转换方式相对应。用户根据提示,将访问的目的IP地址修改为所述代理网段中的IP地址后,访问的数据报文由应用层到达网路层查找路由后,发送到所述虚拟IP地址(即虚拟网卡)。
步骤304,获取到达所述虚拟IP地址的数据报文,数据报文的源IP地址为所述虚拟IP地址,目的IP地址还原为VPN服务端的内网网段中的IP地址,并将修改后的数据报文加密封装为隧道外层报文头后通过所述隧道发送出去。
数据报文到达虚拟网卡后,检查目的IP地址,如果所述目的IP地址是代理网段中的IP地址,则需要将其还原为真实的VPN服务端内网地址,这样,才能访问到VPN服务端的内网资源,当然,如果所述目的IP地址不是代理网段中的IP地址,则不需要进行所述转换。一般而言,对数据报文中的IP地址进行修改后,还需要重新计算IP校验和,将新的IP校验和更新到数据报文中;将修改后的数据报文进行加密封装为外层隧道报文。
以上是SSLVPN客户端发送报文的处理流程,接收报文的处理流程为:
步骤S1,接收到VPN服务端发送的隧道报文后,获取所述隧道报文的内层报文,将所述内层报文的源IP地址修改为所述代理网段中的IP地址后,将修改后的内层报文发送到所述虚拟IP地址;
如果内层报文是加密报文,还需要对其进行解密。获取到内层报文后,如果发现其源IP地址与用户侧的内网网段中的IP地址重叠,则需要将其修改为代理网段中的IP地址;当然,对于地址不重叠的情况,则不需要进行上述修改。另外,如前所述,在对内层报文中的IP地址进行修改后,还可以重新计算IP校验和。
步骤S2,获取到达所述虚拟IP地址的所述内层报文,根据路由信息将所述内层报文上送到应用层处理。
其中,所述隧道可以是任意类型的隧道,例如SSL VPN隧道、IPSecVPN等等。如下以SSL VPN隧道为例进行说明。
图4是本发明的访问VPN服务端内网资源的一个具体实例示意图,该图中,实线是发出报文加密流程,虚线是收到报文解密流程,粗线是封装了外层IP报头,细线是封装了内层IP报头。参照图2和图4,用户登录VPN并通过PC执行命令ping 192.168.1.100的过程如下:
第一步,用户登录成功,客户端连接上,获取到由服务器分配的虚拟IP地址172.16.0.2,设置在虚拟网卡上(首次使用SSLVPN时,SSL VPN会自动安装虚拟网卡在用户操作系统中,以后使用时该虚拟网卡由SSL VPN客户端进行读写操作);
第二步,客户端与服务器通信获知用户可访问的VPN内网网段为192.168.1.0/24,通过系统函数获取本机路由表,进行交叉匹配,可知与本机真实接口所处网段192.168.1.0/24网段重叠,于是记录下重叠的地址,并对VPN内网网段的网络号加一操作,得到192.168.2.0/24,在此这个网段叫做代理网段,然后再与本地路由表进行交叉匹配,看是否仍然重叠,此处已经不再重叠,于是在通过路由表中增加该代理网段路由,出接口为虚拟网卡的条目;
第三步,以文字方式,在VPN客户端上弹出信息,提示用户已经检测到地址重叠且已自动修改为不重叠的代理网段地址,提示用户若想访问192.168.1.100,此时应改为访问192.168.2.100,只需要改网络号,后面的主机号保持不变。
第四步,用户根据提示访问VPN内网服务器(如ping 192.168.2.100),ping报文在网络层查路由可得192.168.2.0/24网段出接口为虚拟网卡,于是ping报文的目的IP为192.168.2.100,源IP为虚拟网卡的IP地址172.16.0.2,这个ping报文就是业务数据报文,也是内层报文。
第五步,VPN客户端监听到虚拟网卡中有数据报文,于是读取内层IP报文后,检查目的IP地址,发现是属于代理网段中的地址,于是把目的IP192.168.2.100进行地址转换,还原为原始网段地址192.168.1.100,由于IP头内容发生了改变,于是需要重新计算IP校验和,再进行加密和封装外层IP头处理后(外层IP头源地址192.168.1.200,目的地址2.2.2.2),再次查路由,匹配默认路由走真实出接口发出去,经过路由器源NAT处理改变源IP为1.1.1.1后,传输到因特网,到达VPN网关解密解封装后,传输到对端虚拟专用网中了。
第六步,VPN客户端收到加密报文,解密解封装后,得到内层报文,检查发现源IP为192.168.1.00,目的IP地址为172.16.0.2,查询代理网段得知需要代理,于是把源IP修改为192.168.2.100,并修改IP校验和。然后写入虚拟网卡,报文查路由得知是本机报文,就上送到相应的应用程序处理,此处为ping程序,收到回包了,则代表通信路径正常。
以上是ICMP业务的经过VPN的流程,HTTP,FTP等其他业务流程也基本一致。
与上述方法相对应,本发明还提供一种访问VPN服务端内网资源的装置,应用于用户主机上,所述装置可以包括:
VPN建立单元,用于使用用户主机的真实IP地址与VPN服务端建立隧道连接,并获取VPN服务端发送的虚拟IP地址和可访问的内网网段资源;
路由处理单元,用于如果VPN服务端的内网网段与主机侧的内网网段重叠,则将VPN服务端的内网网段转换为与主机侧的内网网段不重叠的代理网段,并在路由表中添加代理网段的出接口为所述虚拟IP地址的路由;
提示单元,用于当用户需要访问VPN服务端的内网网段资源时,提示用户将访问的目的IP地址修改为所述代理网段中的IP地址;
VPN处理单元,用于获取到达所述虚拟IP地址的数据报文,数据报文的源IP地址为所述虚拟IP地址,目的IP地址还原为VPN服务端的内网网段中的IP地址,并将修改后的数据报文封装为隧道报文后通过所述隧道发送出去。
在接收到报文时:所述VPN处理单元还用于,接收到VPN服务端发送的隧道报文后,获取所述隧道报文的内层报文,将所述内层报文的源IP地址修改为所述代理网段中的IP地址后,将修改后的内层报文发送到所述虚拟IP地址;所述路由处理单元还用于,获取到达所述虚拟IP地址的所述内层报文,根据路由信息将所述内层报文上送到应用层处理。
其中,所述隧道可以为SSL VPN隧道、IPSec VPN隧道等。
综上所述,根据本发明的技术方案,当确定VPN服务端的内网网段与主机侧的内网网段重叠时,可以自动将重叠的地址网段转换为代理网端后在路由表中增加相应的路由信息,并在用户访问VPN服务端的内网资源时,提示用户对目的IP地址进行相应的修改,如此,解决了由于VPN服务端的内网网段与主机侧的内网网段重叠造成的、用户主机无法正常访问VPN服务端内网资源的问题。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。