虚拟机中使用Array SSL VPN拔号后,不能访问主机的问题

2013年7月3日

最近需要在虚拟机里使用Array SSL VPN拔号访问网络资源,但是只要Array SSL VPN拔号后,就不能访问主机了,在网上找到一篇文章,设置成功.

 

××××××××××××××××××××××××××××××××××××××××××××××××××
声明:
VPN客户端是出于安全考虑而将原来内网隔离。此解决方法可能会带来安全隐患,使用前请做出厉害关系判断。作者不承担任何直接或连带责任。
×××××××××××××××××××××××××××××××××××××××××××××××××
公司的Array SSL VPN连接后无法访问己方内网 ,有时候会引起颇多不便。分析后发现Array SSL VPN客户端是通过修改本机上的路由表来达到隔离原内网的功能。那么相应地,我们也可以通过Windows 自带的route命令来添加相应的路由达到访问原来内网的目的。问题现象

使用Windows XP Pro SP2,在使用Array SSL VPN客户端连接到某一客户的网络后无法再访问本地内网及自己公司的其他资源。代理服务器和Exchange服务器甚至本地的dafault gateway等都对ping做出Request timed out回应。

问题分析
根据route print(查看本机路由表的命令)的输出对比了VPN连接前后的路由表后发现,Array VPN客户端是通过修改本机路由表来达到网络隔离的目的。

一台电脑的路由表和路由器上的路由表一样,决定着本地产生的数据包应如何路由,或者说应该选择一条什么样的路径发送到外部网络。如果相应的目标IP不在路由表中,正常情况下机器会将这些数据包发送到配置的默认网关(一般是路由器)上,由它来决定这个数据包应往何处发送。

而Array VPN客户端所安装的虚拟网卡并没有配置默认网关,因此,如果相应的目标IP不在路由表中,数据包将被丢弃处理。

解决方案
如果需要在VPN连接后访问自己网络中的某一台机器,可以使用route add命令添加一条相应的路由到路由表中。route add命令的相应格式为:

route add target_IP mask netework_mask default_gateway metric metric_num IF IF_num

其中:
target_IP: 你想要连接的目标IP地址或者是网段的地址
network_mask:目标IP的网络掩码。如果target_IP是一台主机,network_mask则使用255.255.255.255
default_gateway:在这里应该是你自己物理网卡的IP地址
metric_num:路由优先级。数字越小优先级越高。这里用1
IF_num:网络接口(Interface)号码

其中可以使用ipconfig命令获取本机的IP地址,也就是这里的default_gateway参数。

IF_num一般是2 (1是lookback接口,2一般为物理网卡接口),可以使用route print命令查看/验证:

下面是一个route print命令的输出(我的Dell 390,无VPN连接):

H_Documents and Settings_bsdplus>route print
===========================================================================
Interface List
0x1 ……………………… MS TCP Loopback interface 这个是loopback接口,对应1
0x2 …00 18 8b c4 82 b3 …… Broadcom NetXtreme 57xx Gigabit Controller – Pac
ket Scheduler Miniport 这个是我的物理网卡,对应的IF编号为2
0x3 …00 19 d2 c9 e9 85 …… Intel(R) PRO/Wireless 3945ABG Network Connection
– Packet Scheduler Miniport
0x4 …54 55 43 44 52 12 …… Check Point Virtual Network Adapter For SSL Netw
ork Extender – Packet Scheduler Miniport 这个就是CheckPoint虚拟网卡
0x10006 …00 16 41 b7 da 26 …… Bluetooth Device (Personal Area Network)
===========================================================================以下为路由表:
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.101 30
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 30
192.168.1.101 255.255.255.255 127.0.0.1 127.0.0.1 30
192.168.1.255 255.255.255.255 192.168.1.101 192.168.1.101 30
224.0.0.0 240.0.0.0 192.168.1.101 192.168.1.101 30
255.255.255.255 255.255.255.255 192.168.1.101 2 1
255.255.255.255 255.255.255.255 192.168.1.101 192.168.1.101 1
255.255.255.255 255.255.255.255 192.168.1.101 10006 1
255.255.255.255 255.255.255.255 192.168.1.101 4 1
Default Gateway: 192.168.1.1
===========================================================================
Persistent Routes:
None

关于target_IP和network_mask参数,你需要自己获得。如果是某一天特定的主机,你可以通过 “ping 主机名” 命令获得,这时的network_mask就是255.255.255.255。

比如你想要连接到一个IP地址为 100.200.222. 123,你自己的物理网卡IP地址为200.200.200.200,物理网卡的interface编号为2,则相应的命令为:

route add -p 100.200.222.123 mask 255.255.255.255 200.200.200.200 metric 1 IF 2
–我的主机IP是
192.168.0.109
192.168.0.103
添加路由命令是:
route add -p 192.168.0.109 mask 255.255.255.255 192.168.0.103  metric 1 IF 2
执行命令成功后,虚拟机拔号后,能ping通主机,通过也可以通过网上邻居访问主机.
后记,按此方式,后来始终不能访问,应该是需要结束array ssl vpn 进程,不然,添加路由时,优先始终不是最高.
最新脚本:

taskkill /f /t /im arr_srvs.exe
route add 10.0.0.0 mask 255.0.0.0 10.82.125.235
route change 0.0.0.0 mask 0.0.0.0 192.168.0.1
route add 192.168.0.109 mask 255.255.255.255 192.168.0.103
pause

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: 虚拟机中使用Array SSL VPN拔号后,不能访问主机的问题
本文的评论功能被关闭了.