购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 交换机的基本设置

在1.1节中,我们对很多与交换型以太网有关的概念进行了回顾和介绍。在本节中,我们从具体操作的角度,用一台交换机介绍两个与交换机接口有关的技术概念以及它们的设置方法。接下来,我们会在这台交换机上验证1.1节中介绍的交换机学习MAC地址条目的过程,以及管理员手动在交换机MAC地址表中添加静态MAC地址的方法。最后,我们会针对这种交换机学习MAC地址的做法,介绍一种可以在局域网中发起网络攻击的方法。

注释:

交换机接口也可以称为端口,本章将会混用这两个术语。读者不要把它们与传输层协议(TCP/UDP)用来标识上层应用的端口混淆。

1.2.1 速率与双工

对于一个交换机的接口来说,它的转发效率在很大程度上取决于它的速率(Speed)和双工模式(Duplex)。

交换机接口的速率是指这个接口每秒能够转发的比特数,这个参数的单位是bit/s。 显然,管理员能够设置的交换机接口速率上限,是这个交换机接口的物理带宽,比如,一个百兆以太网接口能够设置的速率上限就是 100Mbit/s。此外,管理员可以将交换机接口速率设置为哪些数值与接口的类型有关。

双工模式是指接口传输数据的方向性。如果一个接口工作在全双工模式(FullDuplex)下,表示该接口的网络适配器(即网卡或网络接口卡)可以同时在收发两个方向上传输和处理数据。而如果一个接口工作在半双工模式(Half-Duplex)下,则代表数据的接收和发送不能同时进行 。显然,数据收发是一个双边的问题,因此一个传输介质所连接的所有端口必须设置为同一种双工模式。

既然提到双工模式,我们在这里必须对冲突与冲突域的话题进行一点重要的补充。在本章的图1-6、图1-7和图1-8中,交换机的每个端口均与该端口的直连设备(网络适配器)处于同一个冲突域中。而我们在前文中就曾经明确提到,连接在同一个冲突域中的网络适配器是不能同时发送数据的,否则就会产生冲突。那么,既然在这3张图中,任何一个交换机的端口不能与自己的直连终端同时发送数据(即当其中一方在发送数据时另一方只能接收数据),那么读者应该能够结合双工模式的概念推断出这一点,即图1-6、图1-7和图1-8中所描述的每个交换机端口都工作在半双工模式下。

我们在这里必须指出的是,图1-6、图1-7和图1-8只是我们为了向读者传递冲突、冲突域和广播域的概念而刻意设计出来的环境。在当前实际的交换型以太网环境中,除非管理员手动将设备的端口设置为半双工模式,否则所有交换机端口都会自动工作在全双工模式下。所谓全双工模式,表示交换机的端口与其连接的那台终端设备可以不相干扰地同时发送数据,既然交换机端口与其直连终端的网络适配器可以同时发送数据而不会出现冲突,交换机端口与其直连设备的网络适配器也就不会如图1-6、图1-7和图1-8所示那样处于同一个冲突域中。如果对这两个自然段的内容进行一下概括,可以说, 在交换型以太网中,只通过线缆连接了一台设备(网络适配器)的交换机端口默认工作在全双工模式下,而这种工作在全双工模式下端口是没有冲突域的,它们也可以与对端适配器同时发送数据而不用担心线缆上因信号叠加而产生冲突,此时这个端口的载波侦听多路访问机制也不会启用;如果一个交换机端口连接的是共享型介质,那么这个交换机端口就只能工作在半双工模式下,这个共享型介质所连接的所有网络适配器(其中也包括这个交换机端口)共同构成了一个冲突域,此时这个交换机端口的载波侦听多路访问机制也会启用。

除双工模式外,传输介质两侧端口的工作速率也要相互一致,否则无法实现通信。

如果网络中链路两端的设备都是华为交换机,则管理员通常不需要因为速率和双工的匹配问题而对交换机接口进行配置。在默认情况下,华为交换机的以太网接口会执行自动协商机制。链路两端的接口会相互协商通信可以采用的最佳速率和双工模式。

若管理员因某种原因(如华为交换机某个端口的对端设备已经设定了某种速率和双工模式,或者管理员希望修改协商的速率和双工模式结果等),希望强制为华为交换机的某个端口设置速率和双工模式,则应首先使用命令undo negotiation auto关闭该接口的自动协商功能,然后通过命令duplex {full | half}将该接口的双工模式静态设置为全双工或半双工模式,并通过命令speed speed 静态设置接口的速率。

注释:

通过speed命令设置速率时,设置参数的单位为Mbit/s。比如,命令speed 10的作用是将该端口的速率设置为10 Mbit/s。

例1-1所示为管理员使用display interface命令查看交换机接口时,系统显示该接口当前的速率、双工模式和是否允许进行协商。

例1-1 查看交换机接口当前的速率和双工模式

<Huawei>display interface g0/0/21

GigabitEthernet0/0/21 current state : UP

Line protocol current state : UP

Description:

Switch Port, PVID : 1, TPID : 8100(Hex), The Maximum Frame Length is 1600

IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 5439-df1f-f5f0

Current system time: 2016-09-18 16:39:53-05:13

Port Mode: COMMON COPPER

Speed : 100, Loopback: NONE

Duplex: FULL,Negotiation: ENABLE

Mdi  : AUTO,  Flow-control: DISABLE

----------后面输出信息省略---------

上例的阴影部分显示,这个交换机接口的速率为100 Mbit/s,双工模式为全双工,该接口允许自动协商。

接下来,管理员使用命令undo negotiation auto禁用了接口的自动协商功能,然后分别通过命令 speed 和 duplex 将该接口的速率和双工模式分别静态设置为了 10 Mbit/s和半双工模式。具体配置过程见例1-2。

例1-2 设置交换机端口的双工模式和速率

[Huawei-GigabitEthernet0/0/21]undo negotiation auto

[Huawei-GigabitEthernet0/0/21]speed 10

[Huawei-GigabitEthernet0/0/21]duplex half

完成设置后,当管理员再次查看这个接口时可以看到,它的速率、双工模式和协商状态已经修改为了设置之后的参数,见例1-3。

例1-3 验证交换机接口的速率和双工模式

[Huawei]display interface g0/0/21

GigabitEthernet0/0/21 current state : UP

Line protocol current state : UP

Description:

Switch Port, PVID : 1, TPID : 8100(Hex), The Maximum Frame Length is 1600

IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 5439-df1f-f5f0

Current system time: 2016-09-18 16:43:54-05:13

Port Mode: COMMON COPPER

Speed : 10,   Loopback: NONE

Duplex: HALF,Negotiation: DISABLE

Mdi  : AUTO,  Flow-control: DISABLE

----------后面输出信息省略---------

设置交换机接口速率与双工模式的命令与方法相当简单,这些配置也属于交换机最基本的操作方法,每一位读者都应该熟练掌握。

下面,我们通过这台交换机,验证交换机添加MAC地址表的原理以及MAC地址条目老化的原理。

1.2.2 MAC地址表

我们在1.1.4小节(交换机的数据帧转发方式)中,曾经用图示介绍了交换机是如何填充自己的MAC地址表,并且根据MAC地址表条目来转发数据帧的。简而言之,交换机会通过自己接收到的数据帧,建立数据帧源MAC地址和端口之间的对应关系,此后,交换机就可以利用存储这个映射关系的逻辑表,有针对性地转发数据帧了, 交换机上这个存储映射关系的逻辑表叫作MAC地址表或CAM表 。在本小节中,我们会通过实验演示交换机填充MAC地址表的过程,以及管理员可以对MAC地址表进行的一些操作。

图1-16所示为一个最基本的局域网拓扑,管理员用一台交换机连接了3台PC,即PC1、PC2 和 PC3。这 3 台 PC 的 IP 地址则分别为 123.1.1.1/24、123.1.1.2/24 和123.1.1.3/24,它们分别连接在交换机的E0/0/1、E0/0/2和E0/0/3端口上。

图1-16 一个基本的3终端交换局域网

注释:

为了便于读者通过MAC地址识别设备的身份,我们在这里使用了通过eNSP模拟器搭建的模拟测试环境,并将上述 3 台 PC 的 MAC 地址分别设置为了00-9A-CD-11-11-11、00-9A-CD-22-22-22 和 00-9A-CD-33-33-33。eNSP 模拟器的使用方法已经在本系列教材《网络基础》的第2章中进行了详细的介绍,这里不再赘述。

交换机根据入站数据帧的源MAC地址填充自己MAC地址表的做法是自动的,这让交换机基本可以被视为一种即插即用型设备,也就是说,管理员即使将一台交换机不加任何配置地插入网络中,它也可以根据自己设定的转发逻辑来转发数据帧。因此,只要图中3台PC的IP地址设置无误,这3台PC完全可以直接相互通信。

在测试这些终端是否能够相互通信之前,我们可以先在交换机 LSW 上通过命令display mac-address查看交换机当前的MAC地址表,这条命令的输出信息见例1-4。

例1-4 查看交换机初始状态下的MAC地址表

<Huawei>display mac-address

<Huawei>

如上所示,由于目前没有终端发送数据帧,因此交换机的MAC地址表中没有任何表项。

下面我们通过从PC1向PC2发起ping测试的方式,来人工生成去往交换机的数据包,ping测试结果如图1-17所示。

图1-17 从PC1向PC2发起ping测试

图1-17的测试结果显示,PC1可以与PC2之间实现双向通信,这也验证了前文中关于二层交换机可以即插即用的说法。下面我们再次回到交换机LSW上查看交换机的MAC地址表,见例1-5。

例1-5 再次查看交换机的MAC地址表

<Huawei>display mac-address

MAC address table of slot 0:

------------------------------------------------------------------------------

MAC Address  VLAN/    PEVLAN CEVLAN Port      Type   LSP/LSR-ID

VSI/SI                       MAC-Tunnel

------------------------------------------------------------------------------

009A-CD22-2222 1      -   -   Eth0/0/2    dynamic  0/

009A-CD11-1111 1      -   -   Eth0/0/1    dynamic  0/

------------------------------------------------------------------------------

Total matching items on slot 0 displayed = 2

如上所示,由于PC1和PC2通过交换机相互发送了ICMP消息,因此交换机接收到了从这两台PC发来的数据帧。于是,交换机在MAC地址表中为这两台PC和它们对应的接口之间建立了映射关系。但由于目前交换机还没有接收过PC3发来的数据帧,因此交换机的MAC地址表中并没有记录PC3和交换机的Eth0/0/3端口之间的对应关系。

不仅如此,通过这条命令,我们也可以看到这两条项目都是交换机动态(dynamic)学习到的。

我们在1.1.4小节(交换机的数据帧转发方式)中也曾经提到,除了动态学习之外,管理员也可以手动向交换机的MAC地址表中添加静态的MAC地址条目。具体的做法是,管理员在系统视图下通过命令mac-address static向交换机的MAC地址表中添加静态条目,见例1-6。

例1-6 向交换机的MAC地址表中添加静态条目

[Huawei]mac-address static 009A-CD11-1111 Ethernet 0/0/1 vlan 1

[Huawei]display mac-address

MAC address table of slot 0:

------------------------------------------------------------------------------

MAC Address  VLAN/    PEVLAN CEVLAN Port      Type   LSP/LSR-ID

VSI/SI                       MAC-Tunnel

------------------------------------------------------------------------------

009A-CD11-1111 1      -   -   Eth0/0/1    static

------------------------------------------------------------------------------

Total matching items on slot 0 displayed = 1

MAC address table of slot 0:

------------------------------------------------------------------------------

MAC Address  VLAN/    PEVLAN CEVLAN Port      Type   LSP/LSR-ID

VSI/SI                       MAC-Tunnel

------------------------------------------------------------------------------

009A-CD22-2222 1      -   -   Eth0/0/2    dynamic  0/

------------------------------------------------------------------------------

Total matching items on slot 0 displayed = 1

如上所示,管理员通过命令 mac-address static 在交换机的 MAC 地址表中建立了PC1和E0/0/1端口之间的静态映射。此后,我们也通过命令display mac-address验证了MAC地址表中的这条静态映射条目。

注释:

关于该命令中的VLAN部分,我们会在本书的第2章中用一章的篇幅进行详细介绍,因此这里暂且略过。

有一点需要注意:在这条命令的输出信息中,MAC地址009A-CD11-1111与交换机的E0/0/1接口之间只有静态映射。这说明 管理员静态配置的MAC地址条目优先级高于交换机动态学习到的MAC地址条目 。当交换机上一个通过静态配置的条目和一个动态学习到的条目MAC地址相同时,交换机会将管理员静态配置的条目保存在MAC地址表中。

静态条目与动态条目之间不仅优先级不同,而且 静态配置的MAC地址表条目不会老化, 而动态学习的MAC地址条目则会因为交换机在MAC地址老化时间内没有再次通过同一个接口接收到以这个MAC地址为源的数据帧,而被交换机从MAC地址表中删除。关于这一点,我们在前文中已经通过图1-10进行了介绍。

管理员可以通过系统视图下的命令mac-address aging-time来设置交换机动态MAC地址条目的老化时间,并且通过命令display mac-address来查看系统当前的MAC地址老化时间。

注释:

MAC地址老化时间设置命令的单位是秒(second)。

在例1-7中,管理员将系统的MAC地址老化时间由默认的300s修改为500s。

例1-7 修改MAC地址动态条目的老化时间

[Huawei]display mac-address aging-time

Aging time: 300 seconds

[Huawei]mac-address aging-time 500

[Huawei]display mac-address aging-time

Aging time: 500 seconds

注释:

如果将MAC地址老化时间设置为0,则相当于禁用了交换机的MAC地址老化功能。这也就意味着交换机动态学习到的MAC地址条目也像静态MAC地址条目那样永远不会因为过期而被交换机从MAC地址表中删除。

最后,在 1.1.2(交换机简介)小节中,我们介绍了交换机的一些基本参数。实际上,与MAC地址表有关的参数和特性也是很多技术人员在对交换机进行选型时考虑的因素。表1-2罗列了图1-4所示交换机(即华为S2700-52P-EI-AC交换机)的MAC地址表相关参数特性,并对它们分别进行了说明。

表1-2 华为S2700-52P-EI-AC交换机的MAC地址表参数与特性

在表1-2所示的特性和参数中,除黑洞MAC地址之外,这个阶段的读者应该已经有能力判断出其他项目的表意。

在本节中,我们通过实验演示了交换机填充MAC地址表的过程。下面,我们来对这种做法存在的隐患进行简单的介绍。

*1.2.3 MAC地址泛洪攻击概述

我们在本章中反复介绍过,交换机会自动根据入站数据帧的源MAC地址在自己的MAC地址表中建立MAC地址与自己端口对应关系的条目。具体来说,当交换机接收到一个数据帧时,它会用这个数据帧的源MAC地址与自己MAC地址表中当前保存的MAC地址进行比较。如果发现这个MAC地址已经保存在自己的MAC地址表中,则对MAC地址表这个已有的条目进行更新操作(即更新条目中对应的端口/重置老化计时器);如果发现这个MAC地址在自己的MAC地址表中还没有保存,则将这个MAC地址与包括接收这个数据帧的端口等信息一并作为一个条目,写入自己的MAC地址表中,以备下次转发以这个MAC地址为目的地址的数据帧时使用。

上述这个让交换机得以实现即插即用的操作方式,存在着一种不大不小的隐患。这个隐患的根源在于MAC地址表的存储资源不可能是无限大的。

在图1-18中,终端1的攻击者用软件生成了大量以不同MAC地址作为源MAC地址的数据帧,并且一股脑儿地将这些数据帧发送给了交换机,而交换机当然也会将这些伪造的MAC地址与数据帧入站端口编号记录在自己的MAC地址表中。

图1-18 MAC地址泛洪攻击

图1-18所示的攻击十分容易实现,而且攻击效率很高。Ian Vitek编写的macof只使用了100行Perl代码,但一台普通的PC运行这段代码,每秒就可以生成数十万个不同的MAC地址。按照这种方式继续下去,这台交换机的MAC地址表很快就会被这些伪造的源MAC地址占满。这时,若交换机再接收到以未知MAC地址作为源地址的数据帧时,它已经无法再将这些数据帧的源MAC地址记录到自己的MAC地址表中了,即使这次数据帧的源MAC地址是真实的,如图1-19所示。

图1-19 MAC地址表被占满

此时,攻击者已经达到了鸠占鹊巢的目的。如果这个局域网中有哪些设备的MAC地址交换机还没有学习到,那么交换机对去往这些设备的数据帧就会始终采取类似广播的形式进行处理,即将这个数据帧从接收端口之外的所有端口发送出去。关于交换机这种对待未知目的MAC地址的转发方式,我们已经在图1-11中进行了介绍。显然,“接收端口之外的所有端口”也包括攻击者连接的端口,这样攻击者还可以达到他的另外一个攻击目的——获得局域网中其他设备之间相互发送的数据帧副本,如图1-20所示。

图1-20 MAC地址泛洪攻击实现的另一种效果

MAC 地址泛洪攻击是一种在局域网中比较常见的攻击方式,发起这种攻击的工具唾手可得,因此发起攻击的门槛很低。当然,对于大部分缺乏更深层次理论知识和技术水平的攻击者来说,他们发起攻击只是为了满足一时的好奇心和虚荣心,倒也未必有能力借助MAC地址泛洪攻击来获取到足以对他人构成财产和隐私危害的数据信息,或者对网络通信造成进一步的破坏。 Jc4xiqFN2ZuUjXgyPMdFV+Gd+4gJQdRhxoToicBTOyf17J8kD4dHHkCPPuOyYCYC

点击中间区域
呼出菜单
上一章
目录
下一章
×