能力值:
( LV2,RANK:10 )
|
-
-
2 楼
补充一下,vpn是pptp类型的
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
再补充下,开了虚拟机windows2003, 使用上面的帐号测试,可以同时连接上5个,再多一个就失败.
有点奇怪,不同系统同时连接成功的个数还不同...
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
经过测试修改,800错误原因找到,是因为连接未设置服务器属性,多个连接后默认变成L2TP,结果返回800
经过修改连接属性800错误不见,但仍然多个VPN连接不能同时创建,返回错误633
创建VPN主要代码如下,还请指点下:
BOOL ConnectVpn()
{
//VPN连接代码
memset(&RasDialParams, 0, sizeof(RasDialParams));
RasDialParams.dwSize = sizeof(RASDIALPARAMS);
lstrcpy(RasDialParams.szEntryName, (LPCTSTR)sEntryName);
lstrcpy(RasDialParams.szPhoneNumber, (LPCTSTR)sServerIp);
lstrcpy(RasDialParams.szUserName, (LPCTSTR)sUserName);
lstrcpy(RasDialParams.szPassword, (LPCTSTR)sPassword);
lstrcpy(RasDialParams.szDomain, "");
CreateRasEntry(RasDialParams.szEntryName, RasDialParams.szPhoneNumber,
RasDialParams.szUserName, RasDialParams.szPassword);
// Dial
Ret = RasDial(NULL, NULL, &RasDialParams, 0, NULL/*&RasDialFunc*/, &m_hConnection)
//...
}
BOOL CreateRasEntry(const char *pszEntryName, const char *pszServerName, const char *pszUserName, const char *pszPassWord)
{
RASENTRY rasEntry;
DWORD dwResult;
memset(&rasEntry, 0, sizeof(rasEntry));
rasEntry.dwType = RASET_Vpn;
rasEntry.dwSize = sizeof(rasEntry);
//RASEO_RemoteDefaultGateway 添加默认路由选项
rasEntry.dwfOptions = RASEO_RequireMsEncryptedPw | RASEO_RequireDataEncryption | RASEO_ModemLights | RASEO_ShowDialingProgress;
lstrcpy(rasEntry.szLocalPhoneNumber, pszServerName);
lstrcpy(rasEntry.szDeviceType, RASDT_Vpn);
lstrcpy(rasEntry.szDeviceName, TEXT("RAS VPN Line 0"));
rasEntry.dwFramingProtocol = RASFP_Ppp;
rasEntry.dwfNetProtocols = RASNP_Ip;
rasEntry.dwVpnStrategy = VS_PptpOnly; //设置pptp连接属性
dwResult = RasSetEntryProperties(NULL, pszEntryName, &rasEntry, sizeof(rasEntry), NULL, 0);
if (dwResult != 0)
{
TRACE("RasSetEntryProperties %s failed error=%d\n", pszEntryName, dwResult);
return FALSE;
}
RASDIALPARAMS rdParams;
ZeroMemory(&rdParams, sizeof(RASDIALPARAMS));
rdParams.dwSize = sizeof(RASDIALPARAMS);
lstrcpy(rdParams.szEntryName, pszEntryName);
lstrcpy(rdParams.szUserName, pszUserName);
lstrcpy(rdParams.szPassword, pszPassWord);
DWORD dwRet = RasSetEntryDialParams(NULL, &rdParams, FALSE);
if(dwRet == 0)
return TRUE;
else
return FALSE;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
网上找了一个下午,终于找到原因了,是系统本身有限制.
解决方法就是修改注册表,具体参考如下:
http://www.utt.com.cn/reference.php?id=989
:)
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
工作室挂机必备啊
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
lz 好人,学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
学习了。楼主,如果同时设置了多条VPN,上网时,能否根据需要选择不同的VPN?
比如:程序1 连接时,用VPN1;程序2连接时用VPN2。。。?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
支持LZ这种解决问题后SHARE的精神
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
请问楼主,当连接多条vpn后,程序能不能自己选择通过哪条vpn通信?比如:访问 10.100.1.1 这个ip,程序1走vpn1,程序2走vpn2,,。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
可以在建立连接前进行hook拦截,比如LSP,在连接函数中添加指定路由即可.
不过有个缺陷,如果目标IP相同,通过添加路由方法没法解决.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
VMWare里建个虚拟机,在里面用vpn,可以很好解决这些问题,
它的原理是建立了一个虚拟网卡,在这个网卡上进行vpn拨号,
之后应用程序选取某个网卡进行传输数据,这样更灵活一些,试了几次,
没有成功,有人碰到过类似的问题没?
|