网络环境:局域网,前端路由器

系统:windows xp

要求:1.在没有登录56vpn的情况下不能联外网,局域网可用。

           2.在登录56vpn后可以正常上网

           3.批处理或者程序或者脚本实现


一、下载56vpn客户端,用测试账号进行登录后观察:

1.查看ip:ipconfig /all

Ethernet adapter 本地连接:
        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : Realtek PCIe GBE Family Controller
        Physical Address. . . . . . . . . : 00-E0-62-0E-D4-60
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 192.168.1.5
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.1.1
        DNS Servers . . . . . . . . . . . : 61.134.1.4
PPP adapter {89F9496A-98CC-48BD-B608-54DA0608994F}:
        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface
        Physical Address. . . . . . . . . : 00-53-45-00-00-00
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 172.16.11.19
        Subnet Mask . . . . . . . . . . . : 255.255.255.255
        Default Gateway . . . . . . . . . : 172.16.11.19
        DNS Servers . . . . . . . . . . . : 202.106.0.20


2.查看网络连接情况:netstat -an

TCP    192.168.1.5:2869       192.168.1.1:1922       TIME_WAIT
TCP    192.168.1.5:4224       118.180.6.35:80        CLOSE_WAIT
TCP    192.168.1.5:4794       183.60.3.164:80        TIME_WAIT
TCP    192.168.1.5:4799       114.112.57.208:1723    TIME_WAIT
TCP    192.168.1.5:4800       106.120.151.64:80      TIME_WAIT
TCP    192.168.1.5:4801       106.120.151.64:80      TIME_WAIT
TCP    192.168.1.5:4931       113.31.20.67:32768     ESTABLISHED
TCP    192.168.1.5:4932       113.31.20.67:32768     ESTABLISHED
TCP    192.168.1.5:4933       113.31.20.67:32768     ESTABLISHED
TCP    192.168.1.5:4934       113.31.20.67:32768     ESTABLISHED
TCP    192.168.1.5:4939       113.31.20.67:32768     ESTABLISHED
TCP    192.168.1.5:4941       113.31.20.67:32768     ESTABLISHED
TCP    192.168.1.5:4945       114.112.67.75:80       TIME_WAIT
TCP    192.168.1.5:4950       220.181.124.2:80       ESTABLISHED
TCP    192.168.1.5:4991       125.76.224.240:80      ESTABLISHED


通过反复观察发现登录56vpn客户端后,客户端会通过56vpn服务器下载vpn服务器列表,登录vpn服务器后,会获取ip地址,dns服务器。也就是说要能登录56vpn,必须能与外网通信,既然登录vpn服务器后可以获取dns服务器,那也就是说本地dns不设置就可以达到不能浏览网站的要求,但是同时要能登录56vpn,而56vpn客户端是要登录服务器的,那肯定就需要知道服务器地址,于是对56vpn客户端登录过程用科来抓包分析。

分析发现56vpn客户端登录服务器cdn1.passvpn.com(这个是很关键的一步),基本思路就有了。

1.设置本地dns服务器为空,让其不能进行dns解析域名,这样就限制了本地不能通过域名访问网站的要求。

2.修改本地hosts文件,对cdn1.passvpn.com手工做解析,这样可以让56vpn客户端与服务器通信。

3.就是解决QQ、旺旺等通讯软件:

刚开始考虑的是用软件限制策略限制运行,但这不是想要的结果放弃。

考虑过防火墙以及TCP/ip筛选,这些因为是在本地电脑做限制,如果这样限制后同样即使登录vpn服务器,电脑还是受限制的,因此不可取。

在这个问题上纠结了很多天,主要对QQ要求不严,主要是针对旺旺来的,于是开始对旺旺进行分析,结果发现(多次分析漫长的分析),测试过旺旺的网络设置的 使用http方式登录等,都进行过测试,每次发现旺旺登录之前都会验证版本更新,由此引发去看看旺旺安装目录,安装目录发现以下几个文件:

lastlogininfo2.xml、lastlogininfo.xml、logininfo.xml

直觉告诉应该有戏,经过测试了解lastlogininfo2.xml中记录了旺旺成功登录后的服务器ip,最后,在不登陆56vpn的情况下,删除lastlogininfo2.xml后旺旺确实不能登录,基本可以实现了。

1.批处理删除lastlogininfo2.xml文件:

@echo off
del "D:\Program Files\AliWangWang\profiles\system\lastlogininfo2.xml" /q
del "D:\Program Files\AliWangWangmai\profiles\system\lastlogininfo2.xml" /q
ipconfig /flushdns

2.用vbs来运行批处理,其目的是让运行的时候不出现cmd命令框:

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c xz.bat",0

3.设置计划任务让其每分钟执行一次。

经过这样就可以实现:

在不登录56×××的情况下:
1.不能正常访问网站
2.旺旺不能正常登录(提示:连接服务器出现超时)
3.可以使用客户端正常登录56×××
登录56×××之后:
1.可正常连接×××服务器;
2.连接×××服务器后网站可正常访问。
3.旺旺可正常登录。(卖家版和买家版两个版本均通过测试)

但是这样存在一个问题就是:不能达到vpn掉线旺旺就立刻掉线并且再也不能登录,因为:

1.当×××掉线后:旺旺还正在登录中,这个时候还是会显示登录状态。如果旺旺没有登录,这个时候登录旺旺在一分钟内登录的话,旺旺应该还是可以登录的,一分钟后,旺旺就登录不了了。
2.如果当×××掉线的时候没有登录,同样,一分钟内旺旺登录可能能登录上去,如果一分钟后肯定是登录不上去的。

只能重新想办法了,最后就是用批处理监控网络连接,监控vpn是否登录,没有登录的话,立即杀掉旺旺进程,同时删除lastlogininfo2.xml。

批处理内容如下:

@echo off
:begin
for /f "delims=" %%a in ('ipconfig /all ^| find /i /c "PPP"') do set s=%%a
::echo %s%
rem 版本2:
set signDir=%TEMP%
set signStop=%signDir%\1.stop
::del /q %signStop%
if "2"=="%s%" ( goto isRunning ) else goto isStop
goto begin
rem 如果ipconfig /all命令结果中包含ppp说明正在拨号中,则执行这里。
:isRunning
if exist %signStop% goto resume
echo [%date% ]  ×××正常拨号中....
goto begin
rem 如果ipconfig /all命令结果中不包含ppp说明正在拨号中,则执行这里。
:isStop
if not exist %signStop% goto isStopFirst
echo [%date%] ×××断开拨号......
exit
::goto begin
:isStopFirst
echo %date% > %signStop% && echo [%date%] ×××掉线了....
taskkill /f /im aliim.exe
del "D:\Program Files\AliWangWangmai\profiles\system\lastlogininfo2.xml
start "" "D:\Program Files\AliWangWangmai\AliIM.exe"
del /q %signStop%
exit
::goto begin
:resume
del /q %signStop% && echo [%date%] ×××恢复正常....
goto begin