张宏伟 朱凯全
摘 要:本文以实际工作中的网络结构为分析对象,首先,阐述了网络的基本配置情况和网络设备中的相关的概念。其次,描述了在上述网络中两台主机通信过程以及所产生的问题,分析了数据在数据链路层和网络层的数据帧和数据包的形成过程和传输的原理。最后,指出了问题出现的原因以及定位问题主机的方法,并最终给出了解决方案。
关键词:MAC ARP OSI参考模型 SVI
中图分类号:TP393.1 文献标识码:A 文章编号:1672-3791(2014)02(c)-0022-02
引起网络故障的原因很多,基本可分为软件故障和硬件故障。作为计算机网络维护人员,在日常工作中对网络故障的正确分析和判断对计算机网络的稳定性起着重要的作用。本文从实际出发,将应用数据在OSI参考模型中的数据链路层和网络层结的封装和解封装的传输过程进行了详细的分析,并对数据包不能从源主机到目的主机的原因进行了解析,并最终确定造成网络故障的原因是软件故障,即ARP病毒,从原理上分析了ARP病毒的成因和危害,介绍了处理此类问题的一些实用、高效、快捷的方法。本文运用网络知识将实际工作中遇到的网络故障和网络原理相结合进行讨论,从故障现象透彻的进行故障分析,最终判断出是那种类型的故障以及基于故障提出解决方法。
1 网络结构如下
图1中PC机安装的是WINDOWS XP,其它两台服务器安装的是UNIX。PC机位于三层交换机的VLAN6;服务器A(以下简称A)和服务器B(以下简称B)位于VLAN2 并且VLAN6和VLAN2上的设备均配置了对应VLAN的正确网关。在三层交换机和路由器上均没有做访问控制。三层交换机的物理接口既可以配置为2层接口,也可以配置为三层接口,除了交换机物理接口外,交换机还可以将某个VLAN配置为3层接口,称为SVI(switch virtual interface)。一般来讲,所有的三层虚接口都是同一个MAC地址。在上图中VLAN2的IP地址是172.26.2.254;VLAN6的IP地址是192.6.1.254。以图中的三层交换机为例,通过如下命令可以得到它的三层虚接口对应的MCA,也就是SVI。先查看有哪些VLAN,然后看SVI,命令如下:
ZYTX-C-4506-1#show vlan bri
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Gi1/1, Gi1/2, Gi2/1, Gi2/2, Gi2/3, Gi2/4, Fa3/25, Fa3/31, Fa3/32, Fa3/33, Fa3/34
Fa3/35, Fa3/36, Fa3/37
2 coreserver active Gi2/5, Gi2/6, Fa3/2, Fa3/3, Fa3/4, Fa3/5, Fa3/6, Fa3/7, Fa3/8, Fa3/9, Fa3/10, Fa3/11
Fa3/12, Fa3/13, Fa3/14, Fa3/15, Fa3/16, Fa3/17, Fa3/18, Fa3/19, Fa3/20, Fa3/21
Fa3/22
3 firewall-in active Fa3/48
6 oldnetwork active Fa3/23, Fa3/24
100 3725-bj active Fa3/47
ZYTX-C-4506-1#sh inter vlan2
Vlan2 is up, line protocol is up
Hardware is Ethernet SVI, address is 000f.238f.fb7f (bia 000f.238f.fb7f)
Description: dataserver vlan
Internet address is 172.26.2.254/24
……
ZYTX-C-4506-1#sh inter vlan3
Vlan3 is up, line protocol is up
Hardware is Ethernet SVI, address is 000f.238f.fb7f (bia 000f.238f.fb7f)
Description: firewall inside vlan
Internet address is 172.26.3.14/28
……
ZYTX-C-4506-1#sh inter vlan6
Vlan6 is up, line protocol is up
Hardware is Ethernet SVI, address is 000f.238f.fb7f (bia 000f.238f.fb7f)
Internet address is 192.6.1.254/24
……
ZYTX-C-4506-1#sh inter vlan100
Vlan100 is up, line protocol is up
Hardware is Ethernet SVI, address is 000f.238f.fb7f (bia 000f.238f.fb7f)
Internet address is 172.26.0.14/28endprint
……
由显示结果可以获得三层交换机的SVI: 000f.238f.fb7f。
2 主要的通信过程解析
以B为例,假设它要发送一个文件给服务器C(以下简称C)。
首先,在B的应用层上,应用程序已经准备好了从B的原端口到C的目的端口的数据流。并将数据流向下传给传输层处理,传输层将应用层传来的数据流进行分段,并将每个数据段赋予一个顺序号以及封装上原端口号和目的端口号。传输层将封装的数据段传给网络层。在网络层,将数据段封装IP包头,即封装了源IP地址172.26.2.2和目的IP地址172.20.4.1。此时数据段被封装成了数据包。在数据链路层上,数据包被封装上帧头,其中源MAC地址是B的MAC地址,但目的地址并不是C的MAC地址,而是与B相邻的交换机的虚MAC地址。交换机收到数据帧后,发现数据帧的目标MAC是自己的才会接受,否则会丢弃该帧。然后,交换机将解封装的帧向上交给网络层。将数据帧传给路由器的过程和B传给交换机的过程类似,只是封装的源和目的MAC不同。这里不再赘述。实际上在整个数据传输中,源IP地址和目的IP地址自始自终不会改变(在没有NAT转换的情况下),数据在相邻的网络设备之间传输是靠不断变换的MAC地址进行的。
3 出现的问题及问题分析
A和PC机可以与服务器C交换信息,这说明三层交换机和路由器上均配置了正确的路由。但是服务器B无法与服务器C通信,也无法与PC通信。但可以和本网段其他服务器通信。这说明A的硬件是没有问题的。只是发出的数据包无法穿过交换机。通过查看B、A和PC的ARP表,显示如下:
3.1 B的ARP表
[root@ZYTXMON ~]# arp -a
(172.26.2.254) at 00:0F:44:89:FB:FF [ether] PERM on eth0
(172.26.2.1) at 00:02:55:33:5E:D4 [ether] on eth0
3.2 A的ARP表
ZYTX-S-P650-1.1$ arp -a
ZYTXMON (172.26.2.39) at f0:4d:a2:c:30:43 [ethernet] stored in bucket 16
(172.26.2.254) at 0:f:23:8f:fb:7f [ethernet] stored in bucket 82
3.3 PC的ARP表
C:\Documents and Settings\Administrator>arp -a
Interface: 192.6.1.19 --- 0x10004
Internet Address Physical Address Type
192.6.1.254 00-0f-23-8f-fb-7f dynamic
从ARP表中的网关和MAC地址的对应关系可以看出,A和PC的网关对应的MAC地址和B网关对应的MAC是不一样的,也就是说B网关对应的MAC不是三层交换机的MAC,一定是本网段的另一台机器(假设定义为K)的MAC。B以为K是自己的网关,不断地向K发送数据包,所以并没有跟交换机通信,所以信息包不能穿过交换机到达C。那么我们可以判断这是ARP病毒的症状。这种情况一般都是内网的某台机器中了ARP病毒,然后这台机器便不断的发送欺骗包给所有机器来冒充网关,这样其他机器就会把这个中毒的机器当作网关而把数据包发给它,而它在接到数据包后又没有转发数据包到真正的网关去,ARP病毒使用欺骗的手段是为了窃听内网中所有的通信数据以达到它的某种目的。
4 定位发起ARP攻击的主机
首先定位发出病毒的机器。我们这里只对发起ARP攻击的主机的MAC不变的情况进行讨论。由前面可知,通过查找B的ARP表可以查到不正确的MAC,再使用NBTSCAN工具可以取到本网段的真实IP地址、机器名和MAC地址,如果有ARP攻击,可以找到装有ARP攻击的主机的IP、机器名和MAC地址。
5 结语
(1)指定ARP对应关系。其实该方法就是强制指定ARP对应关系。由于绝大部分ARP欺骗病毒都是针对网关MAC地址进行攻击的,使本机上ARP缓存中存储的网关设备的信息出现紊乱,这样当机器要上网发送数据包给网关时就会因为地址错误而失败,在B服务器上执行arpd将ARP缓存中的内容请空,使用arp-s命令来添加一条ARP地址对应关系,执行如下:arp s 172.26.2.254 00:01:02:03:04:05,这样就将网关地址的IP与正确的MAC地址绑定好了,本机网络连接将恢复正常了。
(2)除上述方法外,还可以用以下方法。先用arp -d删除本机arp表中的172.26.2.254对应的MAC地址,再用arping 172.26.2.254,之后就能在B中得到一个正确的172.26.2.254映射的MAC地址。
(3)对于有些ARP病毒在发送欺骗包时会修改自身的MAC地址,这使我们在快速排查中毒机器有一定困难。但这可以通过MAC与IP绑定的方式解决,即所有内网机器的IP都通与MAC绑定的方式分配,这样所有未登记的不合法MAC就无法连接到内网了。
(4)安装杀毒软件并及时升级,例如:Avria和ClamAV都是比较受欢迎的杀毒软件而且是免费的。
参考文献
[1] 张宏.网络安全基础[M].机械工业出版社.endprint
……
由显示结果可以获得三层交换机的SVI: 000f.238f.fb7f。
2 主要的通信过程解析
以B为例,假设它要发送一个文件给服务器C(以下简称C)。
首先,在B的应用层上,应用程序已经准备好了从B的原端口到C的目的端口的数据流。并将数据流向下传给传输层处理,传输层将应用层传来的数据流进行分段,并将每个数据段赋予一个顺序号以及封装上原端口号和目的端口号。传输层将封装的数据段传给网络层。在网络层,将数据段封装IP包头,即封装了源IP地址172.26.2.2和目的IP地址172.20.4.1。此时数据段被封装成了数据包。在数据链路层上,数据包被封装上帧头,其中源MAC地址是B的MAC地址,但目的地址并不是C的MAC地址,而是与B相邻的交换机的虚MAC地址。交换机收到数据帧后,发现数据帧的目标MAC是自己的才会接受,否则会丢弃该帧。然后,交换机将解封装的帧向上交给网络层。将数据帧传给路由器的过程和B传给交换机的过程类似,只是封装的源和目的MAC不同。这里不再赘述。实际上在整个数据传输中,源IP地址和目的IP地址自始自终不会改变(在没有NAT转换的情况下),数据在相邻的网络设备之间传输是靠不断变换的MAC地址进行的。
3 出现的问题及问题分析
A和PC机可以与服务器C交换信息,这说明三层交换机和路由器上均配置了正确的路由。但是服务器B无法与服务器C通信,也无法与PC通信。但可以和本网段其他服务器通信。这说明A的硬件是没有问题的。只是发出的数据包无法穿过交换机。通过查看B、A和PC的ARP表,显示如下:
3.1 B的ARP表
[root@ZYTXMON ~]# arp -a
(172.26.2.254) at 00:0F:44:89:FB:FF [ether] PERM on eth0
(172.26.2.1) at 00:02:55:33:5E:D4 [ether] on eth0
3.2 A的ARP表
ZYTX-S-P650-1.1$ arp -a
ZYTXMON (172.26.2.39) at f0:4d:a2:c:30:43 [ethernet] stored in bucket 16
(172.26.2.254) at 0:f:23:8f:fb:7f [ethernet] stored in bucket 82
3.3 PC的ARP表
C:\Documents and Settings\Administrator>arp -a
Interface: 192.6.1.19 --- 0x10004
Internet Address Physical Address Type
192.6.1.254 00-0f-23-8f-fb-7f dynamic
从ARP表中的网关和MAC地址的对应关系可以看出,A和PC的网关对应的MAC地址和B网关对应的MAC是不一样的,也就是说B网关对应的MAC不是三层交换机的MAC,一定是本网段的另一台机器(假设定义为K)的MAC。B以为K是自己的网关,不断地向K发送数据包,所以并没有跟交换机通信,所以信息包不能穿过交换机到达C。那么我们可以判断这是ARP病毒的症状。这种情况一般都是内网的某台机器中了ARP病毒,然后这台机器便不断的发送欺骗包给所有机器来冒充网关,这样其他机器就会把这个中毒的机器当作网关而把数据包发给它,而它在接到数据包后又没有转发数据包到真正的网关去,ARP病毒使用欺骗的手段是为了窃听内网中所有的通信数据以达到它的某种目的。
4 定位发起ARP攻击的主机
首先定位发出病毒的机器。我们这里只对发起ARP攻击的主机的MAC不变的情况进行讨论。由前面可知,通过查找B的ARP表可以查到不正确的MAC,再使用NBTSCAN工具可以取到本网段的真实IP地址、机器名和MAC地址,如果有ARP攻击,可以找到装有ARP攻击的主机的IP、机器名和MAC地址。
5 结语
(1)指定ARP对应关系。其实该方法就是强制指定ARP对应关系。由于绝大部分ARP欺骗病毒都是针对网关MAC地址进行攻击的,使本机上ARP缓存中存储的网关设备的信息出现紊乱,这样当机器要上网发送数据包给网关时就会因为地址错误而失败,在B服务器上执行arpd将ARP缓存中的内容请空,使用arp-s命令来添加一条ARP地址对应关系,执行如下:arp s 172.26.2.254 00:01:02:03:04:05,这样就将网关地址的IP与正确的MAC地址绑定好了,本机网络连接将恢复正常了。
(2)除上述方法外,还可以用以下方法。先用arp -d删除本机arp表中的172.26.2.254对应的MAC地址,再用arping 172.26.2.254,之后就能在B中得到一个正确的172.26.2.254映射的MAC地址。
(3)对于有些ARP病毒在发送欺骗包时会修改自身的MAC地址,这使我们在快速排查中毒机器有一定困难。但这可以通过MAC与IP绑定的方式解决,即所有内网机器的IP都通与MAC绑定的方式分配,这样所有未登记的不合法MAC就无法连接到内网了。
(4)安装杀毒软件并及时升级,例如:Avria和ClamAV都是比较受欢迎的杀毒软件而且是免费的。
参考文献
[1] 张宏.网络安全基础[M].机械工业出版社.endprint
……
由显示结果可以获得三层交换机的SVI: 000f.238f.fb7f。
2 主要的通信过程解析
以B为例,假设它要发送一个文件给服务器C(以下简称C)。
首先,在B的应用层上,应用程序已经准备好了从B的原端口到C的目的端口的数据流。并将数据流向下传给传输层处理,传输层将应用层传来的数据流进行分段,并将每个数据段赋予一个顺序号以及封装上原端口号和目的端口号。传输层将封装的数据段传给网络层。在网络层,将数据段封装IP包头,即封装了源IP地址172.26.2.2和目的IP地址172.20.4.1。此时数据段被封装成了数据包。在数据链路层上,数据包被封装上帧头,其中源MAC地址是B的MAC地址,但目的地址并不是C的MAC地址,而是与B相邻的交换机的虚MAC地址。交换机收到数据帧后,发现数据帧的目标MAC是自己的才会接受,否则会丢弃该帧。然后,交换机将解封装的帧向上交给网络层。将数据帧传给路由器的过程和B传给交换机的过程类似,只是封装的源和目的MAC不同。这里不再赘述。实际上在整个数据传输中,源IP地址和目的IP地址自始自终不会改变(在没有NAT转换的情况下),数据在相邻的网络设备之间传输是靠不断变换的MAC地址进行的。
3 出现的问题及问题分析
A和PC机可以与服务器C交换信息,这说明三层交换机和路由器上均配置了正确的路由。但是服务器B无法与服务器C通信,也无法与PC通信。但可以和本网段其他服务器通信。这说明A的硬件是没有问题的。只是发出的数据包无法穿过交换机。通过查看B、A和PC的ARP表,显示如下:
3.1 B的ARP表
[root@ZYTXMON ~]# arp -a
(172.26.2.254) at 00:0F:44:89:FB:FF [ether] PERM on eth0
(172.26.2.1) at 00:02:55:33:5E:D4 [ether] on eth0
3.2 A的ARP表
ZYTX-S-P650-1.1$ arp -a
ZYTXMON (172.26.2.39) at f0:4d:a2:c:30:43 [ethernet] stored in bucket 16
(172.26.2.254) at 0:f:23:8f:fb:7f [ethernet] stored in bucket 82
3.3 PC的ARP表
C:\Documents and Settings\Administrator>arp -a
Interface: 192.6.1.19 --- 0x10004
Internet Address Physical Address Type
192.6.1.254 00-0f-23-8f-fb-7f dynamic
从ARP表中的网关和MAC地址的对应关系可以看出,A和PC的网关对应的MAC地址和B网关对应的MAC是不一样的,也就是说B网关对应的MAC不是三层交换机的MAC,一定是本网段的另一台机器(假设定义为K)的MAC。B以为K是自己的网关,不断地向K发送数据包,所以并没有跟交换机通信,所以信息包不能穿过交换机到达C。那么我们可以判断这是ARP病毒的症状。这种情况一般都是内网的某台机器中了ARP病毒,然后这台机器便不断的发送欺骗包给所有机器来冒充网关,这样其他机器就会把这个中毒的机器当作网关而把数据包发给它,而它在接到数据包后又没有转发数据包到真正的网关去,ARP病毒使用欺骗的手段是为了窃听内网中所有的通信数据以达到它的某种目的。
4 定位发起ARP攻击的主机
首先定位发出病毒的机器。我们这里只对发起ARP攻击的主机的MAC不变的情况进行讨论。由前面可知,通过查找B的ARP表可以查到不正确的MAC,再使用NBTSCAN工具可以取到本网段的真实IP地址、机器名和MAC地址,如果有ARP攻击,可以找到装有ARP攻击的主机的IP、机器名和MAC地址。
5 结语
(1)指定ARP对应关系。其实该方法就是强制指定ARP对应关系。由于绝大部分ARP欺骗病毒都是针对网关MAC地址进行攻击的,使本机上ARP缓存中存储的网关设备的信息出现紊乱,这样当机器要上网发送数据包给网关时就会因为地址错误而失败,在B服务器上执行arpd将ARP缓存中的内容请空,使用arp-s命令来添加一条ARP地址对应关系,执行如下:arp s 172.26.2.254 00:01:02:03:04:05,这样就将网关地址的IP与正确的MAC地址绑定好了,本机网络连接将恢复正常了。
(2)除上述方法外,还可以用以下方法。先用arp -d删除本机arp表中的172.26.2.254对应的MAC地址,再用arping 172.26.2.254,之后就能在B中得到一个正确的172.26.2.254映射的MAC地址。
(3)对于有些ARP病毒在发送欺骗包时会修改自身的MAC地址,这使我们在快速排查中毒机器有一定困难。但这可以通过MAC与IP绑定的方式解决,即所有内网机器的IP都通与MAC绑定的方式分配,这样所有未登记的不合法MAC就无法连接到内网了。
(4)安装杀毒软件并及时升级,例如:Avria和ClamAV都是比较受欢迎的杀毒软件而且是免费的。
参考文献
[1] 张宏.网络安全基础[M].机械工业出版社.endprint