好,我们继续看第3个monitor功能,Matrix,我们叫他矩阵,其实就是主机会话情况,很多人用他来发现病毒,其实用他来评估网络状况,和异常流量,是一个很好用的工具。 大家看,一下子就满了,大多数网络中都是这样的,我们可以按一下崭停。
然后来分析
分析什么呢?
看那一台主机的连接数最多,要注意这个连接数不是传输层的连接数,是指谁跟最多的主机连接
按右建选zoom,放大。
找到对外连接最多的机器,选中,按右建,选show select nodes,大家自己试一下。
我们注意到这台机器跟很多机器通讯,这正常吗?(同学们:不正常)
这要看实际情况,如果这时一台业务主机,太正常了,如果这时一台PC机,或许在作P2P。
究竟在作什么呢
我们注意到这台机器向公网发出大量的ICMP包,那是在作什么?(同学们:在ping)
对!PING采用ICMP协议,ping可以用来扫描,也可以用来***。
扫描就是看那一台机器活着,接着扫描端口,在***,所以扫描是***主机的前奏。
另外,还可以用ping 来冲击路由器,或占用带宽,是一种DOS***。
大家看这个过程更像哪一种类型。
(同学们:扫描,DOS***)
一般情况下,扫描会是比较连续的地址,我们看这个地址并不连续,我们先排除扫描,当然不是绝对的,也有比较聪明的扫描。
有同学说,这是DOS***,那是冲击路由器,还是占用带宽?
(同学们:冲击路由器)
嘿,这次比较统一,我也觉得他在冲击路由器,我们看,他的目标地址基本不在一个网段,这样路由器收到这样的数据包会消耗大量资源在查找路由表上面。所以对路由器有一定冲击。
一般来说,如果他想占用带宽的话,会发大包,我们发现,包的长度不大,并且一秒钟才发10几个包,所以对贷款冲击不大。
或许大家会觉得这没秒10几个包对路由器冲击也不大呀。大家想像一下,如果有很多机器在作这个操作,那影响就会很大。
大家自己在找一找,是否还有其他机器在作同类事情。
(同学们找出7台这样的机器)
好大家找出7台这样的机器,怎么找出来的?有同学用钢材的办法,有同学用过滤,都市好办法。
现在假设在你们的网络中出现这样的情况,我们发现了异常,接下来怎么做?
(同学们:找到这台机器)
然后呢?
我们可以看看这台机器的任务管理器,看看有什么不常见的进程,把他去掉,看是否解决。在看其他的机器,是否有类似的特征。
这是我的一个学员发给我的,当时他发现这7台机器都有一个特殊的进程,但是他的防病毒软件没有查出来。他手工解决了。
这很好说明用Sniffer可以比防病毒软件更快发现病毒,因为防病毒软件是后知后觉得,什么意思?防病毒软件必须有相应的特征才能查病毒。而Sniffer通过流量可以发现一些特征,一些异常。
但是有一点,我们不能拿Sniffer当防病毒软件用,那不是他的特长,同时也太低沽Sniffer的功能了(同学们笑)
好我们在看看扫描是怎么一回事,大家看这个trace file(范老师在演示,我就不写了)
先是ARP扫描,再端口扫描,接下来就是***了。
(编者:接着我们做了一个游戏,范老师让大家用Sniffer***他的机器,结果1台机器就把他的机器搞死了,这个就不细说了)
#p#7、多用鼠标拷贝与粘贴来提高操作速度
Linux系统安装后,每次启动到字符界面时都会自动运行一个叫“gpm”的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动使要拷贝的地方突出显示,这时突出显示的区域已经被拷贝,再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行Linux系统,拷贝与粘贴的操作与在Windows 9x系统下一样。
8、快速启动Linux系统
在DOS下,有一种简单快速启动Linux的方法,那就是load Linux。loadlin.exe是DOS下的可执行程序,它可以在纯DOS环境下迅速启动Linux,而且无需重启计算机,通常我们可以在光盘的“/kernels”目录下找到这个程序。如果不知这个程序被放置于安装盘的何处,可以使用“find -name loadlin*”命令来寻找。找到之后将其复制到DOS分区中,同时还需要复制一份你所使用的Linux内核文件。可以通过Windows直接从光盘复制,也可在Linux环境下使用“mcopy”命令将文件复制到DOS分区;接着再编写一个名为“Linux.bat”的批处理文件,文件内容如下:c:loadlin c:vmlinuz root=/dev/hda1 ro(我们假设loadlin.exe和vmlinuz这两个内核文件都在c盘根目录下,“root”为Linux的根设备,而且Linux处于硬盘第一分区,所以设备名为“/dev/hda1”,“ro”意为readonly)。以后在DOS下要启动Linux时,运行“Linux.bat”就可以了。
9、增加虚拟缓存
使用命令:mkswap /dev/hda(假设Linux的驱动器是/dev/hda),swapon /dev/hda;要自动启动Swap,可以把新的分区加入到etc/fstab中去,照着原来swap的写就行了。用"free"检查swap的大小,Linux支持最多16个交换分区,每个交换分区最大128M,没有空闲分区的时候,可以用个大文件来建立。
下面是执行的一系列命令:
#dd if=/dev/zero of=swapfile bs=1024 count=8192
#mkswap swapfile 8192
#sync
#swapon swapfile
10、巧妙使用Tab键
大家知道在Linux字符界面中输入命令时,有时需要输入很多字符,如果经常这样逐个逐个地输入字符,比较烦琐。假设键入的字符足以确定目录下一个唯一的文件时,我们只须按键盘上的Tab 键就可以自动补齐该文件名的剩下部分,例如要把目录/ccc 下的文件ddddddd-1.2.3.tar.gz 解包时,当我们在命令行中键入到tar xvfz /ccc/d时,如果该文件是该目录下唯一以d起头的文件的话就可以直接按下键盘上的Tab键,这时命令会被自动补齐为:tar xvfz /ccc/ddddddd-1.2.3.tar.gz,从而提高了输入效率。
11、多用拷贝与粘贴来提高操作速度
Linux系统安装后,每次启动到字符界面时都会自动运行一个叫gpm的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动让要拷贝的地方突出显示,这时突出显示的区域已经被拷贝, 再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行Linux系统,拷贝与粘贴的操作与在普通的Win9x系统下一样。
12、提高读盘速度
在Linux下进行一些设置,让Linux在32位输入输出方式和DMA通道方式下进行工作。设置时,在Linux命令界面中输入命令/sbin/hdparm -cl /dev/hda来打开32bit传输方式,输入命令/sbin/hdparm -dl /dev/hda来打开DMA传输方式,接着再输入命令/sbin/hdparm -kl /dev/hda来使硬盘在Reset之后仍然保持上述的设置,通过这些设置,我们就能提高Linux的读盘速度到1倍以上。
#p#我还真想实现唐无敌的假设:
动动网络结构:所有设备都接HUB
假设把PC2的网关设置为10.41.221.2,而PC1的IP改为10.41.222.6,也许能实现唐无敌的设想,PC1发出到PC2的请求,可以获得IP,经过重定向后达到PC2,而PC2并不直接回复PC1,因为不在一个网段,于是发到网关,NAT转发,而PC1由于同“上级”网关(外网网关)同MAC,于是可以得到报文,于是就建立连接了,嬉嬉
对Linux做的NAT实现同一更简单
修改NAT规则,增加这样一行就可以了:
iptables -A POSTROUTING -s 10.41.221.0/255.255.255.0 -d 10.41.221.253 -p tcp -m tcp --dport 80 \
-j SNAT --to-source 10.41.221.2
继续实验:简单分析QQ登陆方式
1,关闭DNS之后
在NAT上关闭DUP53端口出站后QQ依然能登录服务器,这也是有些用户判断DNS解析是否正常的一种手段,显示服务器地址是218.18.95.221
二、QQ3种登录方式
新版QQ不仅仅通过UDP方式登录服务器,还能够以TCP方式登录。本文利用SNIFFER PRO工具监视QQ登录全过程,为了让大家更好的理解QQ登录过程,抓包过程结合防火墙技术,每出现一种登录方式先抓取报文,然后用防火墙关闭该通道,这样QQ就会自动选择其它方式试图登录服务器,反复如此就可以弄清楚QQ所有登录方式和QQ服务器的地址及端口。
1 登录速度最快的UDP方式
报文中61.53.187.229是本地IP地址,219.157.70.130是ISP的DNS服务器IP地址。从报文中可以看到QQ 首先发出7个DNS解析请求,并且顺利获得了相应IP:
sz.tencent.com 61.144.238.145
sz2.tencent.com 61.144.238.146
sz3.tencent.com 202.104.129.251
sz4.tencent.com 202.104.129.254
sz5.tencent.com 61.141.194.203
sz6.tencent.com 202.104.129.252
sz7.tencent.com 202.104.129.253
以上IP也可以通过PING 域名的方法得到。接着,QQ向这7个服务器中的3个发送UDP数据包,它们是发送到
202.104.129.254 的 UDP 数据包
202.104.129.252 的 UDP 数据包
61.144.238.146 的 UDP 数据包
如果服务器在5秒中没有回应,就发如下UDP数据包
202.104.129.251 的 UDP 数据包,
61.141.194.203 的 UDP 数据包,
61.144.238.145 的 UDP 数据包,
再过5秒后发送到 202.104.129.253 的 UDP 数据包
在此过程中如果服务器有回复,QQ选择回复速度最快的一个作为连接服务器,图QQ1中显示分别得到了SZ4/SZ7/SZ6.tencent.com的回应,QQ选择SZ4.tencent.com作为登录服务器。。通过分析可以知道,如果防火墙不允许QQ走UDP方式,那么QQ至少需要10秒才能登录服务器。图QQ1报文清晰的显示本地端口是4000,目的端口是8000。为了以后的实验,这里设置防火墙拦截发往以上7个IP地址的8000端口的UDP数据包。拦截后再也没有发现新的UDP服务器地址。
2 通过80端口的TCP方式
防火墙拦截UDP数据包后,QQ登录服务器的报文。从图中可以看出几点变化:
域名 从类似sz?.tencent.com 改为tcpconn?.tencent.com
协议 不再是UDP而是TCP
端口 目标端口80,本地端口1042(不固定1024-65534)
80端口是HTTP协议默认的端口,浏览网页一般都是走80端口,许多防火墙允许用户浏览网页,所以80端口获准允许通过。tcpconn.tencent.com域名对应的IP是218.17.209.23,继续做实验,发现如下域名与IP对应关系:
tcpconn.tencent.com 218.17.209.23
tcpconn3.tencent.com 218.17.209.23
tcpconn2.tencent.com 218.18.95.153
tcpconn4.tencent.com 218.18.95.153
虽然有4个域名,但是只有2个服务器IP。
3 通过443端口的TCP方式
继续实验,用防火墙拦截上面提到的服务器80端口通道,继续探索QQ的登录方式。
QQ是通过TCP协议连接到服务器的443端口,443是HHTPS协议的默认端口,HTTPS也是提供用户网页浏览服务的,不过是加密了。
图QQ3中看到的QQ服务器IP是218.18.95.153,实验中还发现218.17.209.23也可以提供服务。反复实验只发现这两个IP地址。
,把实验环境换到WINDOWS 2000做NAT方式下的网络中,防火墙安装在服务器上,封堵上面提到的IP和相应端口。局域网内部所有QQ用户都无法登录服务器了。也可以把这些地址加入安全策略中的“IP安全策略”,并选择BLOCK通讯即能有效作到禁止LAN内用户登陆使用QQ。
还有一类软件需要提一下,就是以MYIM为代表的兼容多种即时通信软件的聊天软件。MYIM可以在QQ卸载后独立运行,而且可以使用多个QQ帐号登录,是不是它的登录过程不同于QQ呢?实验中安装最新版的MYIM (版本:MyIM 1.0 Beta build 0225),防火墙成功的封堵了MYIM的登录,这也好理解,毕竟QQ服务器是相同的。
#p#4 用防火墙封QQ广告
流行的木子版QQ客户端具备去广告功能,本文提供另外的方法,使用防火墙也可以达到禁止QQ广告的目的。用防火墙拦截所有来自下面网址的数据报文,QQ就无法访问服务器的广告网页了。这些地址是QQ成功登录后在QQ通讯过程中通过SNIFFER PRO抓到的。
61.172.249.133
61.172.249.134
61.172.249.135
218.17.217.105
218.17.217.106
219.133.40.154
219.133.40.152
219.133.40.153
219.133.40.155
219.133.40.15 qqshow-ufs.tencent.com
219.133.40.157 qqring.clent.tencent.com
不过,QQ仍然弹出系统消息等窗口也非常讨厌,找到QQ的安装目录(默认在C:\Program Files\Tencent\qq),把其中的可执行文件QQexternal.exe文件改名为QQexternalb.exe。再登录QQ就没有窗口弹出来了。以上实验在腾讯QQ2003III Build0117简体中文版下通过。
5 关于QQ安装目录下的Config.db文件
用记事本打开Config.db文件,发现跟上面提到的域名极为相似的域名:
61.144.238.146:8000
sz.tencent.com:8000
sz2.tencent.com:8000
sz3.tencent.com:8000
sz4.tencent.com:8000
sz5.tencent.com:8000
sz6.tencent.com:8000
sz7.tencent.com:8000
tcpconn.tencent.com:80
tcpconn2.tencent.com:80
tcpconn3.tencent.com:80
tcpconn4.tencent.com:80
tcpconn2.tencent.com:80
tcpconn3.tencent.com:80
tcpconn4.tencent.com:80
http2.tencent.com:80
http.tencent.com:443
也许这就是QQ记录服务器地址的文件,不过,最后两项用普通QQ帐号没有涉及到,根本就没有发起连接包。也许是收费用户的服务器吧,这里也提供出他们的IP地址:
http.tencent.com 218.17.209.42
http2.tencent.com 61.144.238.149
结束语
如果腾讯增加新的QQ服务器,QQ也还是可以登录的。另外,用第三方的代理软件如NEC E-BORDER等,支持Anonymous的Socks5代理还是可能绕过去,登陆使用QQ。
终结实验,温故知新,网关的作用
在实验中,利用ping命令来检验主机间能否进行正常的双向通信。在“ping”的过程中,源主机向目标主机发送ICMP的Echo Request报文,目标主机收到后,向源主机发回ICMP的Echo Reply报文,从而可以验证源与目标主机能否进行正确的双向通信。
A与B为实验用的PC机,使用Windows2000 Professional作操作系统。
实验方案:
步骤1:
设置两台主机的IP地址与子网掩码:
A: 10.2.2.2 255.255.254.0
B: 10.2.3.3 255.255.254.0
两台主机均不设置缺省网关。
用arp -d命令清除两台主机上的ARP表,然后在A与B上分别用ping命令与对方通信,在A与B上分别显示,
A: Reply from 10.2.3.3: bytes=32 time<10ms TTL=128
B: Reply from 10.2.2.2: bytes=32 time<10ms TTL=128
用arp -a命令可以在两台PC上分别看到对方的MAC地址。
分析:由于主机将各自通信目标的IP地址与自己的子网掩码相“与”后,发现目标主机与自己均位于同一网段(10.2.2.0),因此通过ARP协议获得对方的MAC地址,从而实现在同一网段内网络设备间的双向通信。
步骤2:
将A的子网掩码改为:255.255.255.0,其他设置保持不变。
操作1:用arp -d命令清除两台主机上的ARP表,然后在A上ping B,在A上显示结果为:Destination host unreachable
用arp -a命令在两台PC上均不能看到对方的MAC地址。
分析1:A将目标设备的IP地址(10.2.3.3)和自己的子网掩码(255.255.255.0)相“与”得10.2.3.0,和自己不在同一网段(A所在网段为:10.2.2.0),则A必须将该IP分组首先发向缺省网关。由于A的缺省网关没有配置,无法对分组进行正确发送,因此显示“目标主机不可到达”。
操作2:接着在B上ping A,在B上显示结果为:Request timed out
此时用arp -a命令可以在两台PC上分别看到对方的MAC地址。
分析2:B将目标设备的IP地址(10.2.2.2)和自己的子网掩码(255.255.254.0)相“与”,发现目标主机与自己均位于同一网段(10.2.2.0),因此,B通过ARP协议获得A的MAC地址,并可以正确地向A发送Echo Request报文。但由于A不能向B正确地发回Echo Reply报文(原因见分析1),故B上显示ping的结果为“请求超时”。在该实验操作中,通过观察A与B的ARP表的变化,可以验证:在一次ARP的请求与响应过程中,通信双方就可以获知对方的MAC地址与IP地址的对应关系,并保存在各自的ARP表中。
步骤3:
在前面实验的基础上,把A的缺省网关设为:10.2.2.1,网关的子网掩码为:255.255.0.0。
在A与B上分别用ping命令与对方通信,各自的显示结果为:
A: Reply from 10.2.3.3: bytes=32 time<10ms TTL=128
B: Reply from 10.2.2.2: bytes=32 time<10ms TTL=127
在A与B上分别用tracert命令追踪数据的传输路径,结果分别为:
A: tracert 10.2.3.3
Tracing route to 10.2.3.3 over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 10.2.2.1
2 <10 ms <10 ms <10 ms 10.2.3.3
Trace complete.
B: tracert 10.2.2.2
Tracing route to 10.2.2.2 over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 10.2.2.2
Trace complete.
分析:如步骤2中的分析,由于A认为B与其不在同一个网段,故从A发向B的报文需要经过网关转发;而B认为A与其在同一个网段,故B不需要经过网关直接向A发送报文,从而可以观察到A与B双向通信时传输路径的不对称性。由于ping命令结果显示的是从目标主机返回的Echo Reply报文的TTL的值,而B收到从A返回的Echo Reply报文经过了网关的转发,所以在B中显示该IP报文的TTL值降为了127(从A发出的IP分组的TTL的初始值为128,每经过一个网关,TTL值减1)。
步骤4:
用arp -d命令清除A中的ARP表,在A上ping一台外网段的主机,如中大的WWW Server(202.116.64.8),再用arp -a可观察到A的ARP表中只有缺省网关的MAC地址信息。
分析:当源主机要和外网段的主机进行通信时,它并不需要获取远程主机的MAC地址,而是把IP分组发向缺省网关,由网关IP分组的完成转发过程。如果源主机没有缺省网关MAC地址的缓存记录,则它会通过ARP协议获取网关的MAC地址,因此在A的ARP表中只观察到网关的MAC地址记录,而观察不到远程主机的MAC地址。
步骤5:
使用典型的NAT结构
ADSL----NAT(10.41.221.2/24)-----PC
在PC上做如下改变:
网关:无网关/网关为自己/网关为未使用的本网段IP/网关为未使用的网段IP(10.42.22.10或/11.22.33.44)
Y表示能通讯,N表是不能建立通讯
改变MASK 内部 外部
10.41.221.10/24/30/16 Y N
10.41.222.10/8/24/16/25 N N
网关为10.41.221.2/24
改变MASK 内部 外部
10.41.221.10/24/30/16 Y Y
10.41.222.10/8/24/16/25 N N
网关为10.41.221.2/255.255.0.0
改变MASK 内部 外部
10.41.221.10/24/30/16 Y Y
10.41.222.10/8/16/24/25 Y Y
以最后一个例子分析,当PC的MASK设置为8和24时,虽然它们都可以上网,但是走路的方式1却不同
以8位做MASK时,10.41.222.10经过与运算认为10.41.221.2在一个网段,于是直接发起连接,经过NAT,回应的报文经过10.41.221.2时,它经过运算也认为PC在自己的网段,通讯就建立了。
以24位做MASK时,PC10.41.222.10经过与运算认为10.41.221.2不在一个网段,于是发起ARP请求得到网关的MAC,并把报文发送给网关,经过NAT,回应的报文经过10.41.221.2时,它经过运算认为PC在自己的网段,通讯就建立了。
#p#
毫无疑问,一个好的及时通讯软件必须具备良好的穿越防火墙的能力,随着微软加强MSN的开发步伐,MSN的用户对其闯关能力提出了更高的要求,了解MSN怎样
本节内容介绍了对受NAT和防火墙问题影响的Windows Messenger功能,这些功能包括:即时消息和出席(Presence) 、音频和视频、应用程序共享和白板、文件传输以及远程协助。
一、防火墙或者NAT组件的具备通用即插即用(UpnP)能力
如果通信双方使用的是具有通用即插即用(UpnP)能力的防火墙或者NAT组件,所有的Windows Messenger功能都可以正常使用。如果使用的是WINME/XP/2003的ICS共享,那么具备UpnP功能,而2000的NAT共享就不具备UpnP功能。
具有UPnP能力的防火墙 比如Windows XP防火墙,即Internet Connection Firewall(Internet连接防火墙),便是具有UPnP能力的防火墙。 Windows XP 中的Windows Messenger可以通过打开数据发送、连接或媒体流所需的端口对这种能力加以利用。
这是由于UPnP规格中具有"NAT Traversal"功能,使用该功能可以使WindowsXP中标准安装的聊天软件"Windows Messenger"在运行中不会出现任何问题。 所谓的NAT(network address translation),是指在因特网中使用的全球IP地址可以同在LAN内使用的私人IP地址互换的功能。所谓连续Traversal,则意味着"完全搜索"。Windows Messenger虽然具IP电话及视频聊天功能,但这种功能无法经由使用NAT的宽带路由器使用。这是由于在使用此项功能时,Windows Messenger在数据部分也嵌入了IP地址的缘故。在NAT功能中,虽然位于IP数据包头部的收信方及发信方的IP地址可以更换,但数据内的地址无法更换,因此前后不统一,无法进行通信。NAT Traversal 由路由器将服务提供商分配的全球IP地址等信息通知给LAN内的计算机。LAN内的个人电脑收到来自路由器的信息后,可以向因特网应用方传送WAN方面的IP地址等信息。如果因特网应用方采用这一结构,可以在一开始就将WAN方面分配到的IP地址写入分组的数据中,所以在通过NAT进行通信时,IP数据包头部和数据部可以使用相同的全球IP地址,从而便可以进行通信。
Windows Messenger使用了Windows XP及较早期Windows版本中的UPnP架构。随着越来越多的Internet网关设备开始为UPnP提供支持,这种解决方案的可用性将变得越来越强。
实验:验证ICS的UPnP自动端口映射功能(来自info521)
MSN Messenger中已经使用了UPnP自动端口映射,我们不妨先来看看MSN Messenger中的UPnP自动端口映射究竟是什么样子的。
网络络环境:
网关:192.168.0.1,Windows XP Professional SP1,中国电信ADSL,速率1M,使用ICS让内网电脑共享上网。内网电脑192.168.0.99,Windows XP Professional SP1,使用MSN Messenger 6.1。
图截于网关,注意我们关闭了“允许其他网络用户控制禁用共享的Internet连接”。与此同时,我们在内网电脑192.168.0.99上运行MSN Messenger 6.1的截图。
请注意,在关闭了网关上“允许其他网络用户控制禁用共享的Internet连接”的情况下,内网电脑192.168.0.99上MSN Messenger 6.1的高级连接信息显示为“您是通过非UPnP IP受限的NAT连接到Internet的。”
如果我们打开网关上的“允许其他网络用户控制禁用共享的Internet连接”,情况又将如何?
打开网关上的“允许其他网络用户控制禁用共享的Internet连接”后,内网电脑192.168.0.99上MSN Messenger 6.1的高级连接信息显示为“您是通过UPnP IP受限的NAT连接到Internet的。”
这时候,如果你使用内网电脑上的MSN Messenger 6.1与其他朋友语音聊天或传输文件的同时,再看看网关上的ICS的高级选项,请注意奇妙的变化,如图4(在4楼)。
我们可以惊奇地发现在ICS的“高级设置”中,比图1多了一项“msnmsgr(192.168.0.99:2292)16328 TCP”。etuotech以BTFans的人格担保,这一项并非我手动加上去的,而是由内网电脑192.168.0.99上运行的MSN Messenger 6.1向网关发出的UPnP自动端口映射指令自动添加的。
经由这项实验,可以得出以下几个结论:
1、ICS确实支持UPnP自动端口映射;
2、ICS中有权限设置,可以手动设置网关是否接受内网电脑发起的端口映射的请求;
3、MSN Messenger 6.1的确具备UPnP自动端口映射功能,而且不用在MSN Messenger 6.1中进行任何设定。
二、防火墙或者NAT组件不具备通用即插即用(UpnP)能力
1、在防火墙同一侧的通信双方可以使用Windows Messenger的所有特性。
2、不同的应用需要映射不同的端口
即时消息和出席(Presence)功能,不需要映射任何端口。
一般来说,防火墙和NAT设备对IM和出席功能不会有任何的影响。如果Windows XP客户机可以创建并维护一条到服务器的连接,那么其它的IM和出席也能够沿着相同的途径进行通信。如果在SIP客户端与服务器间存在一个NAT设备,那么,反映在SIP消息中的端口和地址可能会与实际的端口和地址有所不同。Windows Messenger拥有的某些机制可以解决这些问题。
音频和视频
在协商进行一个音频-视频会话的时候,音频-视频流会选择使用动态端口。在使用动态端口时,应用程序无需考虑系统中还运行了哪些其它的应用程序以及这些程序都使用哪些端口资源即可正常工作。
用来传输应用程序共享(AS)和白板(WB)数据的TCP连接使用1503端口,您需要启用该端口,以便数据能够通过所有的防火墙。 因为TCP数据连接使用一个特定的端口(1503),如果客户端位于一个不具备UPnP能力的NAT设备之后,该端口必须被映射到该客户端上。以确保能够通过最常见的NAT设备进行通信。这还意味着:该端口一般不能被NAT设备后面的其它客户端所使用;在一个时间中,只有位于相同NAT设备后面的一个客户端能够拥有一个AS或WB会话。
文件传输
外来和外出的TCP连接都使用6891到6900间的端口。这使得每个发送方最多只能建立10条文件传输连接。在通信双方之间的所有防火墙上,这些端口都必须被开放。如果您仅仅开放6891端口,用户每次只能建立起一条文件传输连接。
远程协助
远程协助使用远程桌面协议(Remote Desktop Protocol,RDP);与Microsoft Terminal Services使用同一个协议。RDP建立在TCP连接之上。Windows Messenger使用基于服务器的会话邀请逻辑(与FT类似)建立远程协助会话。所以,它同样会因为NAT产生与FT同样的问题。
远程协助包括了一个附加逻辑,以应对可能遇到的NAT环境。该逻辑会简单地尝试从会话双方两个方向上建立TCP连接。如果只有一个客户端位于NAT设备之后,那么连接仍然可以建立,远程协助会话也依然可以进行。如果两个客户端都位于(不具备UPnP能力)NAT设备的后面,那么连接将不能建立。只有在远程协助中加入了语音会话时,这个附加的SIP邀请逻辑才会被加入。
除了由NAT地址转换产生的问题(只有在通信路径中存在多个NAT设备才会出现问题)之外,远程协助协议需要 使用3389端口建立TCP连接。这意味着,通信双方之间的所有防火墙都必须开放3389端口。
三、总结
IM 和出席功能在大多数防火墙配置中都可以使用。
要想为处于防火墙两侧的通信双方提供AV支持,5004到65535之间的所有UDP端口都必须打开,以允许SIP和媒体流(RTP)数据通过防火墙。这种设置是必需的,因为这些操作使用动态端口。AS 和 WB也使用动态端口进行通信。
Ft可以通过在防火墙上开放6891到6900间的端口得以实现。使用远程协助功能需要开放3389端口。
为了使Windows Messenger的语音和视频通信能够通过一个不支持UPnP的防火墙,您需要对防火墙进行配置,使其允许UDP端口5004 – 65535间的外来流量能够通过防火墙。
对于其它通信目的,您可以相应启用以下端口:
文件传输:tcp 6891(如果想实现10条并发的文件传输连接,您需要开放6891到6900间的所有端口)
应用程序和白板共享:tcp1503
远程协助:3389
缩略术语表
ALG–应用程序层网关
AS–应用程序共享
AV–音频和视频
FT–文件传输
ICF–Internet连接防火墙
ICS–Internet连接共享
IM–即时消息
ISA–Internet Security and Acceleration
ISP–Internet 服务提供商 NAT–网络地址转换
RDP–远程桌面协议
RTC–实时通信
RTP–实时传输协议
SDP–会话描述协议
SIP–会话初始化协议
SSL–安全套接字层
TCP–传输控制协议
UDP–用户数据报协议
UPnP–通用即插即用
WB–白板(共享)
#p#好,我们再看第四个monitor功能,ART,Application Response Time,应用响应时间。
应用响应时间是分析应用的一个很好工具,主要用来分析应用的性能。
ART是指一个客户端发出一个请求,到服务器响应回来的时间差。
一般来说,应用响应的快慢,是应用性能的一个重要指标。
应用性能主要决定于几个因素:网络因素、服务器因素、客户端因素、应用协议因素
我们先看看如何操作,再来看看应用这个功能。
我们打开ART,大家看到Http的应用响应时间分析,这里有几个列,server Address,Client Address.
他是怎么知道谁是Server,谁是Client?其实也就是看端口号和IP的对应关系,比如如果一个数据包的目的IP是1.1.1.1,目的端口是80,Sniffer就会认为1.1.1.1就是Http服务器。对应的源IP就是Client。
AvgRsp—平均响应时间
90%Rsp—90%响应时间,去掉头尾个5%,其实我个人觉得去掉最大的10%更合理一些。
还有最大最小的响应时间,这些都是以毫秒为单位。
接着就是TotalRsp,这个是响应次数,单位是次。
接着是0到25毫秒的响应有多少次,25到50毫秒的响应有多少次。。等等。
后面还有server发送子节数,client发送子节数,timeout次数等等,5秒不响应则Timeout。
我们再看看怎么增加其他应用,按属性,选择display protocol,添加你关心的协议,再确定,ART会重新刷新(范老师在演示)
你看我这里就有了telnet,Oracle。
(同学们:我们没有Oracle)
我知道,其实平时我们更关心的是我们关键业务,所以我们要把我们关键业务的端口添加进来,怎么添加?大家跟我来,
选菜单上的toolsàoptionsàprotocol,拉到下面,添加一种应用,比如Oracle,端口1521。
再在属性里把这个新协议选上,有了吗?(跑去解答问题去了)
好,大家都做出来了,我们平常分析关键业务就行了,有一点要说明,一种业务可能有多个应用,也就是多个端口,需要同时分析。
有些同学喜欢把所有well known的协议添加到协议列表里,我在共享目录上有两个注册表注入工具,大家只要运行以下就可以将这些常用端口都注入到协议列表里,就不用一个一个敲了。其实我个人觉得不太必要,多了反而乱。
大家打开注册表,我们看一下协议列表,找到这两项:
HKEY_LOCAL_MACHINE\SOFTWARE\Network Associates, Inc.\Sniffer\4.7\1CommonSettings\Protocols\IP Protocols\TCP
HKEY_LOCAL_MACHINE\SOFTWARE\Network Associates, Inc.\Sniffer\4.7\1CommonSettings\Protocols\IP Protocols\UDP
这就是协议列表。注意不要有重复的,否则会报错。
(编者:这是范老师的板书)
应用响应时间是评估影响应用性能因素的一种很好的工具。我们看这样一个例子。
比如通过client通过广域网连接到服务器。
我们同时在AB两点部署Sniffer,分析某一业务的响应时间。
假设Sniffer在A点,他所看到的响应时间包括网络消耗时间和服务器处理时间
在B点的Sniffer看到的响应时间主要是服务器处理时间。这样我们比较AB两点的响应时间,来判断影响性能的主要因素是网络还是服务器。
假设A点的响应时间是400毫秒,B点的响应时间是100毫秒,我们就知道A点的400毫秒中有300毫秒是消耗在网络上的,我们可以认为对于这个业务,性能的主要瓶颈在网络上,如果我们在深入分析是距离因素还是贷款因素,我们就可以判断是否有改善空间。这个细节我们在第二门课讲。
如果B点的响应时间达到250毫秒,我们可以认为改善服务器的性能对于这个应用来说会更明显一些。
如果我们Sniffer用多了。我们就可以做一个AB点的响应时间的基准线,假设正常情况下A点的响应时间是400毫秒,有一天你发现平均响应时间达到600毫秒,你就应该关注了,或许用户还没有抱怨,如果你这时分析应用性能下降的原因,你就可以避免故障的产生,同时避免用户投诉。当然你也会有B点的基准线,比较跟平时有何不同,很快就知道应该检查网络还是服务器。
对于ART还有什么不清楚地吗?或者大家平常还有其他用法?
然后来分析
分析什么呢?
看那一台主机的连接数最多,要注意这个连接数不是传输层的连接数,是指谁跟最多的主机连接
按右建选zoom,放大。
找到对外连接最多的机器,选中,按右建,选show select nodes,大家自己试一下。
我们注意到这台机器跟很多机器通讯,这正常吗?(同学们:不正常)
这要看实际情况,如果这时一台业务主机,太正常了,如果这时一台PC机,或许在作P2P。
究竟在作什么呢
我们注意到这台机器向公网发出大量的ICMP包,那是在作什么?(同学们:在ping)
对!PING采用ICMP协议,ping可以用来扫描,也可以用来***。
扫描就是看那一台机器活着,接着扫描端口,在***,所以扫描是***主机的前奏。
另外,还可以用ping 来冲击路由器,或占用带宽,是一种DOS***。
大家看这个过程更像哪一种类型。
(同学们:扫描,DOS***)
一般情况下,扫描会是比较连续的地址,我们看这个地址并不连续,我们先排除扫描,当然不是绝对的,也有比较聪明的扫描。
有同学说,这是DOS***,那是冲击路由器,还是占用带宽?
(同学们:冲击路由器)
嘿,这次比较统一,我也觉得他在冲击路由器,我们看,他的目标地址基本不在一个网段,这样路由器收到这样的数据包会消耗大量资源在查找路由表上面。所以对路由器有一定冲击。
一般来说,如果他想占用带宽的话,会发大包,我们发现,包的长度不大,并且一秒钟才发10几个包,所以对贷款冲击不大。
或许大家会觉得这没秒10几个包对路由器冲击也不大呀。大家想像一下,如果有很多机器在作这个操作,那影响就会很大。
大家自己在找一找,是否还有其他机器在作同类事情。
(同学们找出7台这样的机器)
好大家找出7台这样的机器,怎么找出来的?有同学用钢材的办法,有同学用过滤,都市好办法。
现在假设在你们的网络中出现这样的情况,我们发现了异常,接下来怎么做?
(同学们:找到这台机器)
然后呢?
我们可以看看这台机器的任务管理器,看看有什么不常见的进程,把他去掉,看是否解决。在看其他的机器,是否有类似的特征。
这是我的一个学员发给我的,当时他发现这7台机器都有一个特殊的进程,但是他的防病毒软件没有查出来。他手工解决了。
这很好说明用Sniffer可以比防病毒软件更快发现病毒,因为防病毒软件是后知后觉得,什么意思?防病毒软件必须有相应的特征才能查病毒。而Sniffer通过流量可以发现一些特征,一些异常。
但是有一点,我们不能拿Sniffer当防病毒软件用,那不是他的特长,同时也太低沽Sniffer的功能了(同学们笑)
好我们在看看扫描是怎么一回事,大家看这个trace file(范老师在演示,我就不写了)
先是ARP扫描,再端口扫描,接下来就是***了。
(编者:接着我们做了一个游戏,范老师让大家用Sniffer***他的机器,结果1台机器就把他的机器搞死了,这个就不细说了)
#p#7、多用鼠标拷贝与粘贴来提高操作速度
Linux系统安装后,每次启动到字符界面时都会自动运行一个叫“gpm”的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动使要拷贝的地方突出显示,这时突出显示的区域已经被拷贝,再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行Linux系统,拷贝与粘贴的操作与在Windows 9x系统下一样。
8、快速启动Linux系统
在DOS下,有一种简单快速启动Linux的方法,那就是load Linux。loadlin.exe是DOS下的可执行程序,它可以在纯DOS环境下迅速启动Linux,而且无需重启计算机,通常我们可以在光盘的“/kernels”目录下找到这个程序。如果不知这个程序被放置于安装盘的何处,可以使用“find -name loadlin*”命令来寻找。找到之后将其复制到DOS分区中,同时还需要复制一份你所使用的Linux内核文件。可以通过Windows直接从光盘复制,也可在Linux环境下使用“mcopy”命令将文件复制到DOS分区;接着再编写一个名为“Linux.bat”的批处理文件,文件内容如下:c:loadlin c:vmlinuz root=/dev/hda1 ro(我们假设loadlin.exe和vmlinuz这两个内核文件都在c盘根目录下,“root”为Linux的根设备,而且Linux处于硬盘第一分区,所以设备名为“/dev/hda1”,“ro”意为readonly)。以后在DOS下要启动Linux时,运行“Linux.bat”就可以了。
9、增加虚拟缓存
使用命令:mkswap /dev/hda(假设Linux的驱动器是/dev/hda),swapon /dev/hda;要自动启动Swap,可以把新的分区加入到etc/fstab中去,照着原来swap的写就行了。用"free"检查swap的大小,Linux支持最多16个交换分区,每个交换分区最大128M,没有空闲分区的时候,可以用个大文件来建立。
下面是执行的一系列命令:
#dd if=/dev/zero of=swapfile bs=1024 count=8192
#mkswap swapfile 8192
#sync
#swapon swapfile
10、巧妙使用Tab键
大家知道在Linux字符界面中输入命令时,有时需要输入很多字符,如果经常这样逐个逐个地输入字符,比较烦琐。假设键入的字符足以确定目录下一个唯一的文件时,我们只须按键盘上的Tab 键就可以自动补齐该文件名的剩下部分,例如要把目录/ccc 下的文件ddddddd-1.2.3.tar.gz 解包时,当我们在命令行中键入到tar xvfz /ccc/d时,如果该文件是该目录下唯一以d起头的文件的话就可以直接按下键盘上的Tab键,这时命令会被自动补齐为:tar xvfz /ccc/ddddddd-1.2.3.tar.gz,从而提高了输入效率。
11、多用拷贝与粘贴来提高操作速度
Linux系统安装后,每次启动到字符界面时都会自动运行一个叫gpm的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动让要拷贝的地方突出显示,这时突出显示的区域已经被拷贝, 再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行Linux系统,拷贝与粘贴的操作与在普通的Win9x系统下一样。
12、提高读盘速度
在Linux下进行一些设置,让Linux在32位输入输出方式和DMA通道方式下进行工作。设置时,在Linux命令界面中输入命令/sbin/hdparm -cl /dev/hda来打开32bit传输方式,输入命令/sbin/hdparm -dl /dev/hda来打开DMA传输方式,接着再输入命令/sbin/hdparm -kl /dev/hda来使硬盘在Reset之后仍然保持上述的设置,通过这些设置,我们就能提高Linux的读盘速度到1倍以上。
#p#我还真想实现唐无敌的假设:
动动网络结构:所有设备都接HUB
假设把PC2的网关设置为10.41.221.2,而PC1的IP改为10.41.222.6,也许能实现唐无敌的设想,PC1发出到PC2的请求,可以获得IP,经过重定向后达到PC2,而PC2并不直接回复PC1,因为不在一个网段,于是发到网关,NAT转发,而PC1由于同“上级”网关(外网网关)同MAC,于是可以得到报文,于是就建立连接了,嬉嬉
对Linux做的NAT实现同一更简单
修改NAT规则,增加这样一行就可以了:
iptables -A POSTROUTING -s 10.41.221.0/255.255.255.0 -d 10.41.221.253 -p tcp -m tcp --dport 80 \
-j SNAT --to-source 10.41.221.2
继续实验:简单分析QQ登陆方式
1,关闭DNS之后
在NAT上关闭DUP53端口出站后QQ依然能登录服务器,这也是有些用户判断DNS解析是否正常的一种手段,显示服务器地址是218.18.95.221
二、QQ3种登录方式
新版QQ不仅仅通过UDP方式登录服务器,还能够以TCP方式登录。本文利用SNIFFER PRO工具监视QQ登录全过程,为了让大家更好的理解QQ登录过程,抓包过程结合防火墙技术,每出现一种登录方式先抓取报文,然后用防火墙关闭该通道,这样QQ就会自动选择其它方式试图登录服务器,反复如此就可以弄清楚QQ所有登录方式和QQ服务器的地址及端口。
1 登录速度最快的UDP方式
报文中61.53.187.229是本地IP地址,219.157.70.130是ISP的DNS服务器IP地址。从报文中可以看到QQ 首先发出7个DNS解析请求,并且顺利获得了相应IP:
sz.tencent.com 61.144.238.145
sz2.tencent.com 61.144.238.146
sz3.tencent.com 202.104.129.251
sz4.tencent.com 202.104.129.254
sz5.tencent.com 61.141.194.203
sz6.tencent.com 202.104.129.252
sz7.tencent.com 202.104.129.253
以上IP也可以通过PING 域名的方法得到。接着,QQ向这7个服务器中的3个发送UDP数据包,它们是发送到
202.104.129.254 的 UDP 数据包
202.104.129.252 的 UDP 数据包
61.144.238.146 的 UDP 数据包
如果服务器在5秒中没有回应,就发如下UDP数据包
202.104.129.251 的 UDP 数据包,
61.141.194.203 的 UDP 数据包,
61.144.238.145 的 UDP 数据包,
再过5秒后发送到 202.104.129.253 的 UDP 数据包
在此过程中如果服务器有回复,QQ选择回复速度最快的一个作为连接服务器,图QQ1中显示分别得到了SZ4/SZ7/SZ6.tencent.com的回应,QQ选择SZ4.tencent.com作为登录服务器。。通过分析可以知道,如果防火墙不允许QQ走UDP方式,那么QQ至少需要10秒才能登录服务器。图QQ1报文清晰的显示本地端口是4000,目的端口是8000。为了以后的实验,这里设置防火墙拦截发往以上7个IP地址的8000端口的UDP数据包。拦截后再也没有发现新的UDP服务器地址。
2 通过80端口的TCP方式
防火墙拦截UDP数据包后,QQ登录服务器的报文。从图中可以看出几点变化:
域名 从类似sz?.tencent.com 改为tcpconn?.tencent.com
协议 不再是UDP而是TCP
端口 目标端口80,本地端口1042(不固定1024-65534)
80端口是HTTP协议默认的端口,浏览网页一般都是走80端口,许多防火墙允许用户浏览网页,所以80端口获准允许通过。tcpconn.tencent.com域名对应的IP是218.17.209.23,继续做实验,发现如下域名与IP对应关系:
tcpconn.tencent.com 218.17.209.23
tcpconn3.tencent.com 218.17.209.23
tcpconn2.tencent.com 218.18.95.153
tcpconn4.tencent.com 218.18.95.153
虽然有4个域名,但是只有2个服务器IP。
3 通过443端口的TCP方式
继续实验,用防火墙拦截上面提到的服务器80端口通道,继续探索QQ的登录方式。
QQ是通过TCP协议连接到服务器的443端口,443是HHTPS协议的默认端口,HTTPS也是提供用户网页浏览服务的,不过是加密了。
图QQ3中看到的QQ服务器IP是218.18.95.153,实验中还发现218.17.209.23也可以提供服务。反复实验只发现这两个IP地址。
,把实验环境换到WINDOWS 2000做NAT方式下的网络中,防火墙安装在服务器上,封堵上面提到的IP和相应端口。局域网内部所有QQ用户都无法登录服务器了。也可以把这些地址加入安全策略中的“IP安全策略”,并选择BLOCK通讯即能有效作到禁止LAN内用户登陆使用QQ。
还有一类软件需要提一下,就是以MYIM为代表的兼容多种即时通信软件的聊天软件。MYIM可以在QQ卸载后独立运行,而且可以使用多个QQ帐号登录,是不是它的登录过程不同于QQ呢?实验中安装最新版的MYIM (版本:MyIM 1.0 Beta build 0225),防火墙成功的封堵了MYIM的登录,这也好理解,毕竟QQ服务器是相同的。
#p#4 用防火墙封QQ广告
流行的木子版QQ客户端具备去广告功能,本文提供另外的方法,使用防火墙也可以达到禁止QQ广告的目的。用防火墙拦截所有来自下面网址的数据报文,QQ就无法访问服务器的广告网页了。这些地址是QQ成功登录后在QQ通讯过程中通过SNIFFER PRO抓到的。
61.172.249.133
61.172.249.134
61.172.249.135
218.17.217.105
218.17.217.106
219.133.40.154
219.133.40.152
219.133.40.153
219.133.40.155
219.133.40.15 qqshow-ufs.tencent.com
219.133.40.157 qqring.clent.tencent.com
不过,QQ仍然弹出系统消息等窗口也非常讨厌,找到QQ的安装目录(默认在C:\Program Files\Tencent\qq),把其中的可执行文件QQexternal.exe文件改名为QQexternalb.exe。再登录QQ就没有窗口弹出来了。以上实验在腾讯QQ2003III Build0117简体中文版下通过。
5 关于QQ安装目录下的Config.db文件
用记事本打开Config.db文件,发现跟上面提到的域名极为相似的域名:
61.144.238.146:8000
sz.tencent.com:8000
sz2.tencent.com:8000
sz3.tencent.com:8000
sz4.tencent.com:8000
sz5.tencent.com:8000
sz6.tencent.com:8000
sz7.tencent.com:8000
tcpconn.tencent.com:80
tcpconn2.tencent.com:80
tcpconn3.tencent.com:80
tcpconn4.tencent.com:80
tcpconn2.tencent.com:80
tcpconn3.tencent.com:80
tcpconn4.tencent.com:80
http2.tencent.com:80
http.tencent.com:443
也许这就是QQ记录服务器地址的文件,不过,最后两项用普通QQ帐号没有涉及到,根本就没有发起连接包。也许是收费用户的服务器吧,这里也提供出他们的IP地址:
http.tencent.com 218.17.209.42
http2.tencent.com 61.144.238.149
结束语
如果腾讯增加新的QQ服务器,QQ也还是可以登录的。另外,用第三方的代理软件如NEC E-BORDER等,支持Anonymous的Socks5代理还是可能绕过去,登陆使用QQ。
终结实验,温故知新,网关的作用
在实验中,利用ping命令来检验主机间能否进行正常的双向通信。在“ping”的过程中,源主机向目标主机发送ICMP的Echo Request报文,目标主机收到后,向源主机发回ICMP的Echo Reply报文,从而可以验证源与目标主机能否进行正确的双向通信。
A与B为实验用的PC机,使用Windows2000 Professional作操作系统。
实验方案:
步骤1:
设置两台主机的IP地址与子网掩码:
A: 10.2.2.2 255.255.254.0
B: 10.2.3.3 255.255.254.0
两台主机均不设置缺省网关。
用arp -d命令清除两台主机上的ARP表,然后在A与B上分别用ping命令与对方通信,在A与B上分别显示,
A: Reply from 10.2.3.3: bytes=32 time<10ms TTL=128
B: Reply from 10.2.2.2: bytes=32 time<10ms TTL=128
用arp -a命令可以在两台PC上分别看到对方的MAC地址。
分析:由于主机将各自通信目标的IP地址与自己的子网掩码相“与”后,发现目标主机与自己均位于同一网段(10.2.2.0),因此通过ARP协议获得对方的MAC地址,从而实现在同一网段内网络设备间的双向通信。
步骤2:
将A的子网掩码改为:255.255.255.0,其他设置保持不变。
操作1:用arp -d命令清除两台主机上的ARP表,然后在A上ping B,在A上显示结果为:Destination host unreachable
用arp -a命令在两台PC上均不能看到对方的MAC地址。
分析1:A将目标设备的IP地址(10.2.3.3)和自己的子网掩码(255.255.255.0)相“与”得10.2.3.0,和自己不在同一网段(A所在网段为:10.2.2.0),则A必须将该IP分组首先发向缺省网关。由于A的缺省网关没有配置,无法对分组进行正确发送,因此显示“目标主机不可到达”。
操作2:接着在B上ping A,在B上显示结果为:Request timed out
此时用arp -a命令可以在两台PC上分别看到对方的MAC地址。
分析2:B将目标设备的IP地址(10.2.2.2)和自己的子网掩码(255.255.254.0)相“与”,发现目标主机与自己均位于同一网段(10.2.2.0),因此,B通过ARP协议获得A的MAC地址,并可以正确地向A发送Echo Request报文。但由于A不能向B正确地发回Echo Reply报文(原因见分析1),故B上显示ping的结果为“请求超时”。在该实验操作中,通过观察A与B的ARP表的变化,可以验证:在一次ARP的请求与响应过程中,通信双方就可以获知对方的MAC地址与IP地址的对应关系,并保存在各自的ARP表中。
步骤3:
在前面实验的基础上,把A的缺省网关设为:10.2.2.1,网关的子网掩码为:255.255.0.0。
在A与B上分别用ping命令与对方通信,各自的显示结果为:
A: Reply from 10.2.3.3: bytes=32 time<10ms TTL=128
B: Reply from 10.2.2.2: bytes=32 time<10ms TTL=127
在A与B上分别用tracert命令追踪数据的传输路径,结果分别为:
A: tracert 10.2.3.3
Tracing route to 10.2.3.3 over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 10.2.2.1
2 <10 ms <10 ms <10 ms 10.2.3.3
Trace complete.
B: tracert 10.2.2.2
Tracing route to 10.2.2.2 over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 10.2.2.2
Trace complete.
分析:如步骤2中的分析,由于A认为B与其不在同一个网段,故从A发向B的报文需要经过网关转发;而B认为A与其在同一个网段,故B不需要经过网关直接向A发送报文,从而可以观察到A与B双向通信时传输路径的不对称性。由于ping命令结果显示的是从目标主机返回的Echo Reply报文的TTL的值,而B收到从A返回的Echo Reply报文经过了网关的转发,所以在B中显示该IP报文的TTL值降为了127(从A发出的IP分组的TTL的初始值为128,每经过一个网关,TTL值减1)。
步骤4:
用arp -d命令清除A中的ARP表,在A上ping一台外网段的主机,如中大的WWW Server(202.116.64.8),再用arp -a可观察到A的ARP表中只有缺省网关的MAC地址信息。
分析:当源主机要和外网段的主机进行通信时,它并不需要获取远程主机的MAC地址,而是把IP分组发向缺省网关,由网关IP分组的完成转发过程。如果源主机没有缺省网关MAC地址的缓存记录,则它会通过ARP协议获取网关的MAC地址,因此在A的ARP表中只观察到网关的MAC地址记录,而观察不到远程主机的MAC地址。
步骤5:
使用典型的NAT结构
ADSL----NAT(10.41.221.2/24)-----PC
在PC上做如下改变:
网关:无网关/网关为自己/网关为未使用的本网段IP/网关为未使用的网段IP(10.42.22.10或/11.22.33.44)
Y表示能通讯,N表是不能建立通讯
改变MASK 内部 外部
10.41.221.10/24/30/16 Y N
10.41.222.10/8/24/16/25 N N
网关为10.41.221.2/24
改变MASK 内部 外部
10.41.221.10/24/30/16 Y Y
10.41.222.10/8/24/16/25 N N
网关为10.41.221.2/255.255.0.0
改变MASK 内部 外部
10.41.221.10/24/30/16 Y Y
10.41.222.10/8/16/24/25 Y Y
以最后一个例子分析,当PC的MASK设置为8和24时,虽然它们都可以上网,但是走路的方式1却不同
以8位做MASK时,10.41.222.10经过与运算认为10.41.221.2在一个网段,于是直接发起连接,经过NAT,回应的报文经过10.41.221.2时,它经过运算也认为PC在自己的网段,通讯就建立了。
以24位做MASK时,PC10.41.222.10经过与运算认为10.41.221.2不在一个网段,于是发起ARP请求得到网关的MAC,并把报文发送给网关,经过NAT,回应的报文经过10.41.221.2时,它经过运算认为PC在自己的网段,通讯就建立了。
#p#
毫无疑问,一个好的及时通讯软件必须具备良好的穿越防火墙的能力,随着微软加强MSN的开发步伐,MSN的用户对其闯关能力提出了更高的要求,了解MSN怎样
本节内容介绍了对受NAT和防火墙问题影响的Windows Messenger功能,这些功能包括:即时消息和出席(Presence) 、音频和视频、应用程序共享和白板、文件传输以及远程协助。
一、防火墙或者NAT组件的具备通用即插即用(UpnP)能力
如果通信双方使用的是具有通用即插即用(UpnP)能力的防火墙或者NAT组件,所有的Windows Messenger功能都可以正常使用。如果使用的是WINME/XP/2003的ICS共享,那么具备UpnP功能,而2000的NAT共享就不具备UpnP功能。
具有UPnP能力的防火墙 比如Windows XP防火墙,即Internet Connection Firewall(Internet连接防火墙),便是具有UPnP能力的防火墙。 Windows XP 中的Windows Messenger可以通过打开数据发送、连接或媒体流所需的端口对这种能力加以利用。
这是由于UPnP规格中具有"NAT Traversal"功能,使用该功能可以使WindowsXP中标准安装的聊天软件"Windows Messenger"在运行中不会出现任何问题。 所谓的NAT(network address translation),是指在因特网中使用的全球IP地址可以同在LAN内使用的私人IP地址互换的功能。所谓连续Traversal,则意味着"完全搜索"。Windows Messenger虽然具IP电话及视频聊天功能,但这种功能无法经由使用NAT的宽带路由器使用。这是由于在使用此项功能时,Windows Messenger在数据部分也嵌入了IP地址的缘故。在NAT功能中,虽然位于IP数据包头部的收信方及发信方的IP地址可以更换,但数据内的地址无法更换,因此前后不统一,无法进行通信。NAT Traversal 由路由器将服务提供商分配的全球IP地址等信息通知给LAN内的计算机。LAN内的个人电脑收到来自路由器的信息后,可以向因特网应用方传送WAN方面的IP地址等信息。如果因特网应用方采用这一结构,可以在一开始就将WAN方面分配到的IP地址写入分组的数据中,所以在通过NAT进行通信时,IP数据包头部和数据部可以使用相同的全球IP地址,从而便可以进行通信。
Windows Messenger使用了Windows XP及较早期Windows版本中的UPnP架构。随着越来越多的Internet网关设备开始为UPnP提供支持,这种解决方案的可用性将变得越来越强。
实验:验证ICS的UPnP自动端口映射功能(来自info521)
MSN Messenger中已经使用了UPnP自动端口映射,我们不妨先来看看MSN Messenger中的UPnP自动端口映射究竟是什么样子的。
网络络环境:
网关:192.168.0.1,Windows XP Professional SP1,中国电信ADSL,速率1M,使用ICS让内网电脑共享上网。内网电脑192.168.0.99,Windows XP Professional SP1,使用MSN Messenger 6.1。
图截于网关,注意我们关闭了“允许其他网络用户控制禁用共享的Internet连接”。与此同时,我们在内网电脑192.168.0.99上运行MSN Messenger 6.1的截图。
请注意,在关闭了网关上“允许其他网络用户控制禁用共享的Internet连接”的情况下,内网电脑192.168.0.99上MSN Messenger 6.1的高级连接信息显示为“您是通过非UPnP IP受限的NAT连接到Internet的。”
如果我们打开网关上的“允许其他网络用户控制禁用共享的Internet连接”,情况又将如何?
打开网关上的“允许其他网络用户控制禁用共享的Internet连接”后,内网电脑192.168.0.99上MSN Messenger 6.1的高级连接信息显示为“您是通过UPnP IP受限的NAT连接到Internet的。”
这时候,如果你使用内网电脑上的MSN Messenger 6.1与其他朋友语音聊天或传输文件的同时,再看看网关上的ICS的高级选项,请注意奇妙的变化,如图4(在4楼)。
我们可以惊奇地发现在ICS的“高级设置”中,比图1多了一项“msnmsgr(192.168.0.99:2292)16328 TCP”。etuotech以BTFans的人格担保,这一项并非我手动加上去的,而是由内网电脑192.168.0.99上运行的MSN Messenger 6.1向网关发出的UPnP自动端口映射指令自动添加的。
经由这项实验,可以得出以下几个结论:
1、ICS确实支持UPnP自动端口映射;
2、ICS中有权限设置,可以手动设置网关是否接受内网电脑发起的端口映射的请求;
3、MSN Messenger 6.1的确具备UPnP自动端口映射功能,而且不用在MSN Messenger 6.1中进行任何设定。
二、防火墙或者NAT组件不具备通用即插即用(UpnP)能力
1、在防火墙同一侧的通信双方可以使用Windows Messenger的所有特性。
2、不同的应用需要映射不同的端口
即时消息和出席(Presence)功能,不需要映射任何端口。
一般来说,防火墙和NAT设备对IM和出席功能不会有任何的影响。如果Windows XP客户机可以创建并维护一条到服务器的连接,那么其它的IM和出席也能够沿着相同的途径进行通信。如果在SIP客户端与服务器间存在一个NAT设备,那么,反映在SIP消息中的端口和地址可能会与实际的端口和地址有所不同。Windows Messenger拥有的某些机制可以解决这些问题。
音频和视频
在协商进行一个音频-视频会话的时候,音频-视频流会选择使用动态端口。在使用动态端口时,应用程序无需考虑系统中还运行了哪些其它的应用程序以及这些程序都使用哪些端口资源即可正常工作。
用来传输应用程序共享(AS)和白板(WB)数据的TCP连接使用1503端口,您需要启用该端口,以便数据能够通过所有的防火墙。 因为TCP数据连接使用一个特定的端口(1503),如果客户端位于一个不具备UPnP能力的NAT设备之后,该端口必须被映射到该客户端上。以确保能够通过最常见的NAT设备进行通信。这还意味着:该端口一般不能被NAT设备后面的其它客户端所使用;在一个时间中,只有位于相同NAT设备后面的一个客户端能够拥有一个AS或WB会话。
文件传输
外来和外出的TCP连接都使用6891到6900间的端口。这使得每个发送方最多只能建立10条文件传输连接。在通信双方之间的所有防火墙上,这些端口都必须被开放。如果您仅仅开放6891端口,用户每次只能建立起一条文件传输连接。
远程协助
远程协助使用远程桌面协议(Remote Desktop Protocol,RDP);与Microsoft Terminal Services使用同一个协议。RDP建立在TCP连接之上。Windows Messenger使用基于服务器的会话邀请逻辑(与FT类似)建立远程协助会话。所以,它同样会因为NAT产生与FT同样的问题。
远程协助包括了一个附加逻辑,以应对可能遇到的NAT环境。该逻辑会简单地尝试从会话双方两个方向上建立TCP连接。如果只有一个客户端位于NAT设备之后,那么连接仍然可以建立,远程协助会话也依然可以进行。如果两个客户端都位于(不具备UPnP能力)NAT设备的后面,那么连接将不能建立。只有在远程协助中加入了语音会话时,这个附加的SIP邀请逻辑才会被加入。
除了由NAT地址转换产生的问题(只有在通信路径中存在多个NAT设备才会出现问题)之外,远程协助协议需要 使用3389端口建立TCP连接。这意味着,通信双方之间的所有防火墙都必须开放3389端口。
三、总结
IM 和出席功能在大多数防火墙配置中都可以使用。
要想为处于防火墙两侧的通信双方提供AV支持,5004到65535之间的所有UDP端口都必须打开,以允许SIP和媒体流(RTP)数据通过防火墙。这种设置是必需的,因为这些操作使用动态端口。AS 和 WB也使用动态端口进行通信。
Ft可以通过在防火墙上开放6891到6900间的端口得以实现。使用远程协助功能需要开放3389端口。
为了使Windows Messenger的语音和视频通信能够通过一个不支持UPnP的防火墙,您需要对防火墙进行配置,使其允许UDP端口5004 – 65535间的外来流量能够通过防火墙。
对于其它通信目的,您可以相应启用以下端口:
文件传输:tcp 6891(如果想实现10条并发的文件传输连接,您需要开放6891到6900间的所有端口)
应用程序和白板共享:tcp1503
远程协助:3389
缩略术语表
ALG–应用程序层网关
AS–应用程序共享
AV–音频和视频
FT–文件传输
ICF–Internet连接防火墙
ICS–Internet连接共享
IM–即时消息
ISA–Internet Security and Acceleration
ISP–Internet 服务提供商 NAT–网络地址转换
RDP–远程桌面协议
RTC–实时通信
RTP–实时传输协议
SDP–会话描述协议
SIP–会话初始化协议
SSL–安全套接字层
TCP–传输控制协议
UDP–用户数据报协议
UPnP–通用即插即用
WB–白板(共享)
#p#好,我们再看第四个monitor功能,ART,Application Response Time,应用响应时间。
应用响应时间是分析应用的一个很好工具,主要用来分析应用的性能。
ART是指一个客户端发出一个请求,到服务器响应回来的时间差。
一般来说,应用响应的快慢,是应用性能的一个重要指标。
应用性能主要决定于几个因素:网络因素、服务器因素、客户端因素、应用协议因素
我们先看看如何操作,再来看看应用这个功能。
我们打开ART,大家看到Http的应用响应时间分析,这里有几个列,server Address,Client Address.
他是怎么知道谁是Server,谁是Client?其实也就是看端口号和IP的对应关系,比如如果一个数据包的目的IP是1.1.1.1,目的端口是80,Sniffer就会认为1.1.1.1就是Http服务器。对应的源IP就是Client。
AvgRsp—平均响应时间
90%Rsp—90%响应时间,去掉头尾个5%,其实我个人觉得去掉最大的10%更合理一些。
还有最大最小的响应时间,这些都是以毫秒为单位。
接着就是TotalRsp,这个是响应次数,单位是次。
接着是0到25毫秒的响应有多少次,25到50毫秒的响应有多少次。。等等。
后面还有server发送子节数,client发送子节数,timeout次数等等,5秒不响应则Timeout。
我们再看看怎么增加其他应用,按属性,选择display protocol,添加你关心的协议,再确定,ART会重新刷新(范老师在演示)
你看我这里就有了telnet,Oracle。
(同学们:我们没有Oracle)
我知道,其实平时我们更关心的是我们关键业务,所以我们要把我们关键业务的端口添加进来,怎么添加?大家跟我来,
选菜单上的toolsàoptionsàprotocol,拉到下面,添加一种应用,比如Oracle,端口1521。
再在属性里把这个新协议选上,有了吗?(跑去解答问题去了)
好,大家都做出来了,我们平常分析关键业务就行了,有一点要说明,一种业务可能有多个应用,也就是多个端口,需要同时分析。
有些同学喜欢把所有well known的协议添加到协议列表里,我在共享目录上有两个注册表注入工具,大家只要运行以下就可以将这些常用端口都注入到协议列表里,就不用一个一个敲了。其实我个人觉得不太必要,多了反而乱。
大家打开注册表,我们看一下协议列表,找到这两项:
HKEY_LOCAL_MACHINE\SOFTWARE\Network Associates, Inc.\Sniffer\4.7\1CommonSettings\Protocols\IP Protocols\TCP
HKEY_LOCAL_MACHINE\SOFTWARE\Network Associates, Inc.\Sniffer\4.7\1CommonSettings\Protocols\IP Protocols\UDP
这就是协议列表。注意不要有重复的,否则会报错。
(编者:这是范老师的板书)
应用响应时间是评估影响应用性能因素的一种很好的工具。我们看这样一个例子。
比如通过client通过广域网连接到服务器。
我们同时在AB两点部署Sniffer,分析某一业务的响应时间。
假设Sniffer在A点,他所看到的响应时间包括网络消耗时间和服务器处理时间
在B点的Sniffer看到的响应时间主要是服务器处理时间。这样我们比较AB两点的响应时间,来判断影响性能的主要因素是网络还是服务器。
假设A点的响应时间是400毫秒,B点的响应时间是100毫秒,我们就知道A点的400毫秒中有300毫秒是消耗在网络上的,我们可以认为对于这个业务,性能的主要瓶颈在网络上,如果我们在深入分析是距离因素还是贷款因素,我们就可以判断是否有改善空间。这个细节我们在第二门课讲。
如果B点的响应时间达到250毫秒,我们可以认为改善服务器的性能对于这个应用来说会更明显一些。
如果我们Sniffer用多了。我们就可以做一个AB点的响应时间的基准线,假设正常情况下A点的响应时间是400毫秒,有一天你发现平均响应时间达到600毫秒,你就应该关注了,或许用户还没有抱怨,如果你这时分析应用性能下降的原因,你就可以避免故障的产生,同时避免用户投诉。当然你也会有B点的基准线,比较跟平时有何不同,很快就知道应该检查网络还是服务器。
对于ART还有什么不清楚地吗?或者大家平常还有其他用法?
转载于:https://blog.51cto.com/zhjiasheng/159452