让XP能够正确支持UPnP设备!
注意!由于这篇文章是在WindowsXP SP2简体中文版的环境下写的,XP系统在安装了SP2以后网络设置部分的界面改变很大,我也记不清楚SP1具体是怎么一种情况,所以要麻烦各位看帖子的时候注意看清是SP1的部分还是SP2的部分。
因为很多时候明明设备是支持UPnP的,甚至有时候在MSN Messenger里都能够显示“通过UPnP端口连接”,在BC里面却提示找不到UPnP设备!
那么如何设置才能让系统正确识别UPnP设备呢?
首先XP系统是先决条件(只有XP才默认支持UPnP),不论是否打了SP1、SP2补丁,原理都是一样的。
下面分别就打了SP2补丁、没打SP2补丁或装了其他种类防火墙3种情况讨论。
先说打了SP2补丁,并且没有安装其他防火墙产品的情况下如何设置:
进入控制面板,点安全中心,安全中心界面的下方可以看到Windows防火墙的连接,点进去。
确保防火墙是以下两种状态之一:1、开启,并且没有过钩选“不允许例外”这个选项。2、你的Windows防火墙处于关闭状态。(如果你的防火墙处于第一种状态,你还需要点击“例外”选项卡,确保其中的:“UPnP框架”被钩中(SP2之前的防火墙里没有这一项,需要手动添加,详情看下面关于SP1的设置)。如果看不到这个选项,则说明你没有安装UPnP设备支持,请到“网上领居”窗口左侧的工具栏中点击:“显示联网的UPnP设备的图标”,系统会自动安装UPnP设备文件。)
Windows防火设置必须满足以上任意一个情况,这样系统才能找到UPnP设备。
现在,当你打开BC后,Windows防火墙有可能会提示你是否要阻止该程序,选择“解除阻止”,应该就可以看到远程的连接了。
接下来讨论在没有安装SP2的XP系统上,或者安装了其他网络防火墙产品的系统上,如何实现UPnP设备的识别。
首先,确保您的XP系统安装了UPnP设备支持文件。如果您的系统没有安装SP2补丁,则请到“添加或删除程序”中,选择“添加/删除Windows组件”,进入“网络服务”组群,钩选“UPnP用户界面”以后,点确定、下一步……这个过程可能需要Windows安装盘。(由于长久不用SP1的系统了,以上和以下说的设置都在SP2下测试,不能保证绝对正确,希望大家见谅。另外SP1中“UPnP用户界面”的叫法可能不同,好像是叫做“即插即用支持”之类的东西。)
装好UPnP设备支持以后,如果您没有安装任何防火墙,也没有打开Windows自带的防火墙ICF,应该就可以正确获取远程连接了。
如果你还安装了其他防火墙,或者开启了Windows自带的防火墙,请继续看。
对于非SP2系统的Windows自带防火墙
请在防火墙设置中,点“高级”,然后自行添加如下两个端口:TCP端口类型,端口号为:2869,UDP端口类型,端口号为:1900 。由于你使用了NAT网关,所以你应该设置的是您连接到该网关的网卡的防火墙。而且网关内部均为内网,所以开启这两个端口,不会对系统造成安全隐患(除非你的NAT网关被绕过,否则外部连接无法检测到该端口)。
如果你安装了其他防火墙设备或软件,除非该防火墙默认支持UPnP(事实上很多防火墙只是自身支持UPnP,并不允许UPnP框架通过,即上述两个端口的通信被阻止。这个区别很微妙,在最后说明),否则你就必须对该防火墙进行设置。
同样,这里需要打开UPnP框架的端口,以便让Windows能够检测到网络中的UPnP设备!端口号前面说了,这里不再复述。需要注意的是,很多防火墙如诺顿,ZoneAlarm等高端防火墙,都有很详细的配置功能,这时候一般把上述两个端口设置为仅在内网通信时开放即可——就算对外网开放也无妨,毕竟有个网关作为屏障。
具体设置,由于每个防火墙都不一样,没有办法一一叙述。大家可以找对该防火墙比较了解的人,比如软件的技术支持,或看看帮助文件,找找如何对内网开启上述两个端口。一般来说在防火墙设置中选择“添加防火墙规则”即可。如诺顿和ZoneAlarm都有向导工具,很方便。
做好了以上工作,Windows这里基本上就设置好了。接下来需要设置你的UPnP设备。
实践证明,UPnP设备的IP地址对MSN Messenger没有任何影响,而对于BC,如果UPnP设备的IP地址不是192.168.0.1的话,则很难查找到该设备——也不是完全查找不到,成功率很低而已。
我曾经把我的路由器设置为192.168.1.1和192.168.1.254,以上两个设置在MSN Messenger下都能找到该UPnP设备,但是在BC下却只是偶尔能够找到。可能是微笑写程序的时候过多的考虑了Windows的ICS默认设置了?
所以为了获得更好的兼容性,有改IP地址权限的用户请务必把UPnP设备的IP地址设置为192.168.0.1 !!!
最后说说所谓支持UPnP和允许UPnP框架通过是什么意思。由于我不是专业搞这个的,不求说得准确无误,但求通俗易懂。
支持UPnP,很多地方都有说明,这里就不细说,简而言之就是网关可以不需手动设置即自动为某个软件进行端口映射。如果该网关具有该功能,那么他就可以称作支持UPnP。
而允许UPnP框架通过,则是另一个概念。
操作系统要找到UPnP设备,就需要通过某个端口来监听。这个端口,就是TCP:2869端口和UDP:1900端口了。如果这两个端口受阻,那么操作系统就无法正确找到UPnP设备!所以说,如果系统和该UPnP设备中间如果还有一道防火墙,则该防火墙必须允许系统对上述两个端口进行监听。当防火墙允许该端口时,就称防火墙“允许UPnP框架通过”,反之则为“不允许UPnP框架通过”。
这是以前发的那篇帖子的地址:
http://bbs.btchina.net/showthread.p...15&pagenumber=1谢谢啊~ 灿烂微笑补充几句:
XP需要启动SSDP设备发现服务。
SP1的ICF是不允许UPnP包通过的,所以只要打开SP1下的ICF就很难找到设备了。SP2的ICF默认打开了UPnP通道。
另:我把网关IP设为192.168.1.2 UPnP发现一切正常。你说的问题挺奇怪,有待进一步测试。
dbyh再补充:
现在我换了一个D-Link的无线路由(以前是中兴的ADSL猫),它对UPnP的兼容性设计的很好。也很有创意。
在MSN和Windows里面能够检查到UPnP设备,在BC里面就被识别为Windows网关也就是ICS,奇怪吧。不过这样兼容性就得到了充分的保证。
以下是我的日志:BitComet 0.55 is running on:
CPU : Intel(R) Pentium(R) 4 Mobile CPU 2.00GHz 1993 MHz
RAM size : 766.98 MB
OS Version: Microsoft Windows XP Professional Service Pack 2 (Build 2600)
Default tracker optimization rules file loaded.
IP rules file: ipfilter.dat loaded, 0 entries.
Start Listening at TCP Port:8001
Start Listening at UDP Port:8001
Update Local IP: 192.168.0.*
Windows XP ICF Status: InitializeSecurity failed.
Favourite sites file version checking . . . . up-to-dated now.
Windows XP ICS Status: WAN IP: *.219.52.*
Windows XP ICS Status: PortMapping Successfully Added.
Windows XP UPnP Status: device not found!
注意到没有?BC提示UPnP不存在!可其实他检测到的ICS网关就是那个UPnP路由。
可能BC对UPnP的识别上还是有点点和MSN不同的地方。