虽然我知道我已经告诉过你了,不过在这里我还是要再确定一次:默认情况下,交换机分割冲突域而路由器分割广播域。
在以前的网络设计中,往往都是以某样设备作为核心,其它的设备连接上核心设备。今天的网络更趋向于一个平面的结构,即平等结构-----因为有了交换机。那么我们怎样在一个纯交换机环境中分割广播域呢?答案是创建一个虚拟的本地网络(VLAN)!VLAN把网络用户和连接到定义了的交换机端口上的资源进行逻辑分组。通过分配不同的交换机端口给不同的子网来创建VLAN,我们就可以在二层交换网络上创建小的广播域。一个VLAN就象一个子网或者说广播域那样各自处理各自的事情,意思是默认情况下在网络上广播帧只会在同一VLAN中进行,不会传到别的VLAN里。
那么这样意味着我们不再需要路由器了吗?可能是也可能不是,这要看你到底想做什么了。默认情况下在某个VLAN上的主机是不能和其它VLAN上的主机通信的,所以如果你希望在VLAN间通信那么你就还是需要一个路由器。
本章我们将学习什么是VLAN和怎么在交换网络上分配VLAN。同样,我们还要学习VLAN中继协议(VLAN Trunk Protocol ,VTP)是怎样更新交换机的VLAN数据库信息的,以及怎样通过一个中继连接在VLAN内部传输信息。最后还介绍了在你的交换网络上使用路由器构建VLAN间的通信。
VLAN Basics如图8.1所示,二层交换网络通常都设计成一个平面网络。任何广播数据都被传输到网络的所有设备上,跟设备是否需要接收这个数据无关。
默认情况下路由器只允许广播在本地网络上传播,但交换机会把广播发送到所有的网段上。把交换网络称为平面网络(flat network)的原因就是因为它们在同一个广播域里而不是物理上的平面结构。
在图8.1里我们可以看到Host A发送一个广播,所有交换机的所有端口都会转发这个广播(除了发送广播的源端口外)。
现在我们来看看图8.2,图里显示了Host A发送一个数据帧到Host D,当知道Host D所在的位置后,数据就会只在Host A,Host D之间传输。相对以前的集线器网络来说这是一个巨大的进步,除非你真的希望只要一个冲突域。
现在你已经知道了使用二层交换网络能够获得的最大好处就是它为每个端口上接的设备创建了单独的冲突域。这种方案解决了以太网的距离问题,现在我们可以创建更大的网络了。但是,随着每个新的发展往往都会遇到新的问题:用户和设备越多,那么交换机也必须要处理更多的广播和数据包。
还有一点,那就是安全性!这是一个很大的问题:因为在典型的二层交换网络上,默认所有的用户能够发现所有的设备。并且你不能阻止设备发送广播也不能阻止用户接收广播。这样当你设置服务器或者其他设备的密码时,网络的安全性就受到很大的挑战了。
不过如果你使用了VLAN(virtual LAN)的话,就能够解决许多二层交换网络的问题了。下面是VLAN能够简化网络管理的一些途径:
·可以把交换机的端口放到合适的VLAN里以达到增加,移动或改变网络的目的。
·如果一些用户需要高安全性的话可以把他们放到一个VLAN里,这样其它VLAN的用户就不能访问到他们了。
·VLAN可以把用户逻辑地分组,而跟用户的物理或者说地理位置无关。
·VLAN能够增加网络安全性
·VLAN通过缩小原来的大广播域而增加广播域的数量。
在下面的章节我们将讨论交换的特点和交换机为什么可以比集线器提供更好的服务。
Broadcast Control广播在任何协议上都会发生,不过什么时候发生跟下面的三个东西有关:
·协议类型
·网络上运行的应用程序
·怎样使用服务
虽然一些旧的软件已经被重写而减少它们需要的带宽了,但一些新的软件对于带宽的需求简直不可想象,能把能找到的带宽都吞吃掉。这些滥用带宽的家伙就是多媒体软件,它们广泛使用广播和组播。不合适的设备,不完全的分段以及拙劣的防火墙只能把这些软件产生的问题搞得更复杂。所有这些问题使得网络设计要增加新的课题,同样也对管理人员提出了新的挑战。弄清楚网络是否适当地分段对于隔离一个网段的故障使故障不能波及到全部网络来说是很必要的。最有效的办法就是通过使用交换和路由。
因为交换机比集线器更有效,所以最近很多公司都把他们原来的集线器网络更新成纯交换的网络(当然要使用VLAN)了。在一个VLAN上的所有设备都属于一个广播域。默认情况下交换机会过滤不同VLAN的广播,这样就可以让你不用为交换网络的广播而烦恼了。
Security现在我们来谈谈安全性,通常一个平面互连网络的安全性由连接集线器和交换机的路由器负责。不过这样会十分没有效率:首先,连接到物理网络的任何人都可以访问物理局域网上的所有资源。其次,任何人都可以通过简单地在集线器上插一个网络分析器来观察网络上的所有流量。最后,用户可以加入任何工作组,只要简单地把电脑连接上工作组所在的集线器即可。所有这些都得出一个结论:不安全!
而正是这些使VLAN显得那么的棒,通过建立多个广播域(或者工作组)管理员就能够控制每个接口甚至每个用户。这样,用户把电脑连接上设备(交换机或者集线器)端口就可以访问资源的日子已经成为历史。因为现在管理员可以控制每个端口和端口能够访问的资源了。
同样,因为VLAN可以建立一个合适的用户需要的网络资源,这样交换机就可以配置为当出现任何非法访问资源情况时就通知管理工作站。如果你需要VLAN间的通信,那么你可以通过在路由器上面执行限制来到达目的。你也能够在硬件地址,协议或者应用程序上设置限制----现在,这里,我们谈的是安全!
Flexibility and Scalability如果你前面注意学习了,那么你现在会知道二层交换机只根据数据帧来做过滤,交换机并不关心网络层协议。并且,交换机默认会转发所有的广播,但如果你创建了VLANS,那么你实际在二层建立一个小广播域!
这样某个VLAN的广播就只能在VLAN里的节点上传播而不会转发到属于另外VLAN的端口上。这样,就可以在交换机通过分配交换机的端口或者用户到VLAN上来获得更好的弹性:你可以把你指定的用户分配到指定广播域里而不用去管用户的物理位置。这个设置同样可以阻止由一个出现问题的网卡所引起的广播风暴。还可以阻止中间设备把广播风暴传播到整个互连网络上去。虽然这些情况还是会在VLAN里出现,但也只能在单一的VLAN里而不会传染到别人。
另外一个优点是当某个VLAN变得太大了的时候,你能够创建更多的VLAN来保存由于广播所浪费的大量带宽。VLAN里用户越少,那么就越少人会受到广播的影响。
不过你绝对需要牢记并了解的是当你创建你的VLAN时用户是怎样使用网络服务的。一个好的办法就是把除了e-mail和访问因特网外的所有服务都停掉,因为这两个服务基本上是所有人都需要用到的。
为了理解VLAN,首先我们来看看传统的网络是很必要的。图8.3显示了一个互连网络是怎样通过用集线器把物理局域网连接到路由器上的。
这里你能够看到每个网络通过集线器的端口连接到路由器上(虽然在图里没有明显地画出来,不过你应该知道每个集线器上连接有网络),每个连接到特定网络的节点设备都需要匹配网络的号码才能够和互连网络上的其它设备通信。注意每个部门都有独自的LAN,所当你希望增加一个新的用户到Sales部门上你可以把他接入到Sales LAN上这样用户就可以自动成为Sales部门的一员了。这样的设计的确已经好好地工作了许多年了。
但这样有一个重要的缺陷:当你需要加一个用户到Sales部门,而Sales的集线器已经插满了,该怎么办呢?或者这样,在Sales办公室里已经没有多余的空间多挤一个人下来了,那你怎样才能增加一个Sales的新雇员工呢?好,现在我们假设大楼里只有Finance部门才有许多空的房间或者位置,这样那个新的Sales部门员工只能和Finance部门的员工呆在一起,然后再把那可怜的员工的电脑连接上Finance部门的集线器。
很明显这样会在Finance LAN上增加了一个新用户,而这样做有许多坏处:首先(也是最重要的),这样会出现安全隐患,因为这个新用户处在Finance的广播域里,这样他就能够和Finance的部门员工一样访问同样的网络资源。其次,如果这个新员工需要访问Sales部门的网络来进行工作那么需要穿越路由器并登陆到Sales的服务器上,这样很没有效率。
现在我们来看看如果使用交换机会怎么样。图8.4示范了交换机是怎样解决由地理区域所带给你的问题的。
图8.4里有六个VLAN(从2到7),每个部门有单独的广播域。根据主机要属于什么部门,交换机的每个端口被分配到各自的VLAN。
那么现在,如果我需要增加一个用户到Sales VLAN(VLAN 7),我就可以只分配一个端口给VLAN 7,跟那个新的Sales部门员工所在的物理位置无关了,这不是很好吗?这是一个交换网络划分VLAN比旧的核心网络设计要好的例子。现在多简单明了-----想加什么主机到Sales部门只要把主机分配到VLAN 7就可以了。
注意,我是从VLAN 2开始划分VLAN的。虽然VLAN跟号码没有什么关系,但是你可能注意到了:VLAN 1有什么用的呢?这个VLAN是一个管理VLAN,虽然它也可以被用来划分工作部门,但思科建议你还是只把它用到管理目的就好。你不能命名或者删除VLAN 1。并且默认情况下交换机的所有端口都是属于VLAN 1的,直到你改变端口所属为止。
每个VLAN被认为是一个广播域,所以它也必须有自己的子网号码,就象图8.4显示的一样。并且如果你也使用IPX,那么每个VLAN也得分配各自的IPX网络号码。
现在让我们回到“因为有了交换机我们就可以不再需要路由器”这个误区上,在图8.4注意有六个VLAN或者说六个广播域,加上VLAN 1那么就是七个。在每个VLAN上的节点可以和同一VLAN的进行通信,但不能和别的VLAN节点通信!
那么在图8.4里我们需要什么才能使不同VLAN的主机间能彼此通信呢?可能你已经猜到了-------当然是一个路由器啦!这些主机都必须要通过一个路由器或者其它别的三层设备来把它们连接起来。就象我们需要连接不同的物理网络一样,VLAN也必须通过三层设备连接。所以在任何时候,想都别想可以不要路由器。
VLAN MembershipsVLAN通常都是由一个管理员创建的,然后把交换机的端口分配给每个VLAN。这样的VLAN叫做静态VLAN(static VLAN)。如果管理员想少做一点准备工作并分配所有的主机设备的硬件地址到一个数据库里的话,那么可以把交换机配置为当一个主机接上交换机的时候动态地分配VLAN。这叫做动态VLAN(dynamic VLAN)。
Static VLANs静态VLAN是常见的构建VLAN的方法,并且也更安全。当你把交换机端口跟VLAN关联起来后只能通过手动设置来改变关联。这种类型的VLAN设置比较容易并且也容易监控,还可以控制用户在网络上移动的位置。虽然这样对使用网络管理软件配置端口时很有帮助,但这不是强制性的,你可以用也可以不用。
在图8.4里,管理员基于主机所要归属的部门把每个交换机端口划分到相应的VLAN里----跟设备的实际物理位置无关。主机将属于什么广播域是一个管理性的选择。要记住的是每个主机也要设置正确的ip地址!例如,在VLAN2上的所有主机的ip地址必须要在172.16.20.0网络范围内,这点是很重要的。如果你想把一个主机接到交换机端口上,你要先确定这个端口是属于什么VLAN的,如果你把一个VLAN的主机接到了属于另外VLAN的端口上,那么这个主机将不能访问其需要的网络服务,如一台工作组服务器等。
Dynamic VLANs动态VLAN自动检测一个节点的VLAN分配。使用智能的管理软件,你可以基于硬件地址,协议甚至应用程序来进行动态VLAN分配。
举个例子,假设MAC地址被输入到一个集中的VLAN管理软件里,如果一个节点现在连接到一个未分配的交换机端口,VLAN管理软件从数据库里寻找节点硬件地址并分配或配置交换机的端口到正确的VLAN。因为如果一个用户移动了位置,交换机会自动地分配正确的VLAN给用户,这样管理和配置都变得很容易了。但是,你需要做许多的工作来初始化设置数据库。
思科管理员可以使用VMPS(VLAN Management Policy Server)服务来设置一个MAC地址数据库来进行动态分配VLAN。一个VMPS数据库映射MAC地址到VLAN。
Identifying VLANs一个帧被交换地通过网络时,交换机必须留意帧的不同类型,根据硬件地址来操作帧。还有,当帧通过不同类型的线路时,处理方法也不一样。
在交换环境里有两种不同类型的线路连接:
Access links:访问连接,这种类型的连接只能是VLAN的一部分,被认为是端口的本地VLAN。连接到一条访问连接线路的任何设备都没有意识到它已经作为了一个VLAN的成员------设备只是认为加入了一个广播域,但是它并不清楚物理网络的结构。
交换机在把帧发送到一条访问连接前会剥离掉帧的任何VLAN信息。访问连接设备不能和本VLAN外的其它设备进行通信,除非数据包被路由。
Trunk links:中继连接,中继能够在多个VLAN内部传输信息。中继连接线路是在两个交换机,一个交换机和一个路由器或者是一个交换机和一个服务器间的一条100或者1000Mbps的点到点的连接,它能够同时输送1到1005个VLAN的信息。
中继允许你使一个端口同时属于多个VLAN。这是一个很大的优点。例如,你能够在两个广播域间同时设立一个服务器,这样你的用户就可以不用通过三层设备(路由器)来访问服务器了。另外一个优点是当你连接交换机的时候,能够在几个或者所有的VLAN内部通过中继连接来输送信息。但如果你交换机间没有使用中继线路,那么默认只有VLAN 1的信息能够在交换机间的普通线路传递。(记住,VLAN 1是一个管理VLAN)
所有的VLAN默认都使用了一条中继的线路,除非管理员手动清理该线路上的VLAN。
图8.5显示了在一个交换网络上的两种不同类型的连接。交换机上的所有主机能够访问所有VLAN的端口,那是因为交换机中间有一条中继连接了。还有要记住的是,一个VLAN只能允许使用一条访问连接。
Frame Tagging前面已经说过,你可以跨越多个交换机来创建你的VLAN,在图8.4中,分布在多个交换机上的主机可以属于不同的VLAN,这个弹性的,组合的能力是VLAN的主要优点。但这样对于一个交换机来说会有点复杂,所以需要有一个办法来使得在通过交换结构和VLAN时能够区分所有的用户和数据帧。(一个基本的交换结构是一组交换机共享同一个VLAN信息)这样,就产生了帧标记鉴别(frame tagging)。这个鉴别帧标记的办法是给每个帧分配了一个独特的用户定义的ID。通常人们把这个用户定义的ID称做“VLAN ID”或者“COLOR”。
帧标记鉴别是这样工作的:首先,数据帧到达交换机的时候,交换机在帧的标记字段那里检查帧的VLAN ID,然后交换机检查MAC表来确定帧要去哪里。如果交换机有一条中继连接,那么帧将会从中继连接的端口转发出去。
当帧找到一条符合VLAN ID的访问连接时,交换机把帧的VLAN标记去掉,这样接收帧的目标设备就可以不用管帧的VLAN标记了。
VLAN Identification Methods交换机通过附加VLAN标记来区分通过交换结构的中继连接的数据帧,这个标记标明了帧是属于哪个VLAN的,下面是几种附加标记的方法:
Inter-Switch Link (ISL):这是思科交换机所独有(私有)的,并且它只在快速以太网和千兆以太网的线路上使用。ISL能够用在交换机端口,路由器接口和服务器中继接口卡上。如果你创建了功能性VLAN并且你不想打破80/20规则时,这是一种非常好的方法。
等一下,什么是80/20规则?好的,这是一个公式,它指当20%(或者更少)的数据流量在一个分段设备上交叉时,80%(或者更多)的数据流量会在本地网段上流动。
例如,如果一个中继的服务器同时属于所有的VLAN(或者说广播域),那么用户就可以不必通过一个三层设备才能访问服务器了。
IEEE 802.1Q:这是由IEEE创造的一个帧标记鉴别的标准。它在帧里插入一个字段来标记帧所属的VLAN。如果你在一个思科交换机和一个另外厂商的交换机间使用中继连接,那么你必须使用802.1Q。(ISL是思科私有的)
802.1Q是这样工作的:你必须指定每个802.1Q的端口的相关VLAN ID,然后在同一中继上的端口建立一个组叫做本地VLAN的。默认是VLAN 1。
注意:ISL和802.1Q帧标记鉴别方法的基本目的都是提供交换机间的通信。
Inter-Switch Link (ISL) Protocol内部交换连接(Inter-Switch Link ,ISL)是一种在以太网数据帧上做标记的方法,通过这种封装方法(ISL)允许VLAN通过一条中继连接通信,标记信息标明了通过中继线路的数据帧是属于哪个VLAN的。
通过使用ISL,你可以互相连接多个交换机并且还能维持交换机中继连接上的VLAN通信信息。ISL工作在二层(数据链路层),封装一个新的帧头和CRC到数据帧上。
再说一次:ISL协议是思科创造的,所以它只能在思科的设备上使用,如果你需要一个公有的VLAN协议,那么可以使用IEEE的802.1Q。
因为ISL是一个外部的标记进程,所以不会更改原始的数据帧,它只附加了一个新的26字节的ISL帧头到原始数据帧前,以及一个4字节的帧校验序列(FCS)到原始数据帧的结尾处。因为封装了ISL的信息,所以只有支持ISL的设备才能够读取。这些封装过的数据帧可以有1522字节之大。
在multi-VLAN (trunk)端口,进入交换机的数据帧被标记。ISL的网络接口卡(NIC)允许一个服务器发送和接收标记了多个VLAN信息的帧,这样帧就可以在多个VLAN间流动而不用通过一个路由器。这样可以减少延时(因为路由器要处理数据包的IP信息)。ISL使得用户在任何时候访问服务器资源变得更容易,更快和更有效率而不必使用路由器。这个技术也能够用来检测和分析一个具体的网络,管理员则可以用ISL来在多个VLAN间同时包含一个文件服务器。
只有当数据帧被发送到一个中继线路上时才会把ISL VLAN信息添加到数据帧上,当数据帧到达一条访问连接,那么ISL的封装信息将被交换机从数据帧上移掉。这是ISL的一个非常重要的操作,所以你要花点精神来记住它,不要忘记了哦。
VLAN Trunking Protocol (VTP)VTP也是思科创造的,但!这个协议不是私有协议。VLAN中继协议(VLAN Trunking Protocol ,VTP)的基本目的就是管理交换网络上的所有VLAN并维护网络上的VLAN的一致性。VTP允许管理员增加,删除和重命名VLAN等在同一VTP域里的所有交换机上的VLAN信息。
VTP有以下一些优点:
·保持网络上所有交换机的VLAN配置一致。
·可以在混合的网络间进行中继,如Ethernet到ATM LANE甚至是FDDI。
·精确跟踪和监视VLAN。
·动态报告增加的VLAN信息给VTP域里的所有交换机。
·增加的VLAN是即插即用的(Plug-and-Play)。
在你用VTP来管理的你网络上的VLAN前,你需要建立一个VTP服务器,所有设备只能在同名的VTP域里共享VLAN信息,并且一个交换机每次只能有唯一一个VTP域。这样意味着一个交换机只能够和其它配置在同一个VTP域里的交换机分享VTP域信息。当你有多于一个交换机连接在一起构成交换网络时,你可以使用VTP,但是如果你所有的交换机都处在一个VLAN里,那么你可以不需要用VTP。VTP的信息通过两个交换机间的中继端口传送。
交换机通告VTP域管理信息以及配置修正号码和配置所有已知的VLAN的一些特定参数。还有一个叫VTP transparent mode的,在这种模式下,你能够配置交换机通过中继端口转发VTP信息,但是!不能接收更新信息来更新它自己的VTP数据库。
如果你担心用户把交换机加入到你的VTP域里,你可以设置VTP的密码,但是不要忘记了,所有交换机必须要设置同样的密码----这是一个难点。
交换机在VTP通告中获知有新的VLAN加入,然后通过它们的中继端口来接收关于新的VLAN的信息。新发送的更新信息在之前的更新信息版本号上加1。交换机在任何时候看到更高的版本号时它就知道这个更新信息比当前的要新,然后它将用新的信息来覆盖当前的数据库。
VTP Modes of Operation在图8.6中有三种不同的VTP域模式:
Server:这是思科所有Catalyst系列交换机的默认模式。在你的VTP域中至少需要一个sever来传播VLAN信息。在一个VTP域里交换机必须在server模式下才能够创建,增加或者删除VLAN,同样,改变VTP配置信息也必须在server模式下,并且一个在server模式下的交换机的所有变动都会通告到整个VTP域里。
Client:在客户模式下,交换机能够接收来自VTPserver的信息,它们同样能够发送和接收更新。但是它们不能做任何改变。另外,在VTPserver交换机注意到客户模式交换机上增加了新的VLAN之前,客户交换机的任何端口都不能增加新的VLAN。还要知道的是从VTPserver那里接收到的VLAN信息不会保存到客户模式交换机的NVRAM里,这意味着如果客户交换机重启了,那么所有的VLAN信息都会被删掉。这里有个小技巧:如果你希望一个交换机变成server模式,首先让它进入客户模式,等到接收完所有正确的VLAN信息后才把它改成server模式,呵呵,就这么容易。
Transparent:交换机在透明模式下不用加入VTP域,但是它们还是能够从任何配置为中继的连接上转发VTP的通告的。这些交换机不能够增加,删除VLAN,那是因为它们保存有自己的私人数据库,这个数据库是不用分享给其它交换机的。尽管数据库也保存在NVRAM里,不过在VTP透明模式下的数据库仅仅在本地起作用而已,透明模式的目的是允许远程的交换机能够通过透明模式交换机从VTP server交换机那里接收到信息而已。透明模式下的交换机不参与任何VLAN的分配。
Real World Scenario When do I need to worry about VTP?
BOB,一个在Acme公司的高级网络管理员,公司里有25台交换机连接在一起。现在BOB想配置VLAN来分割广播域,当他开始使用VTP的时候什么是需要考虑的呢?
你可以随时在有多于一台交换机及有多个VLAN的时候使用VTP。但如果你只有一个交换机,那么不用考虑VTP的问题。同样,如果你没有使用VLAN,那么也不用考虑VTP。然而,如果你有多个交换机和使用了多个VLAN,那么你就需要正确配置你的VTP server和client了。
当你第一次配置交换网络,你需要配置你的主交换机为VTP server其他的为VTP client。当你在VTP server上创建VLAN的时候,所有的交换机将接收VLAN数据库。 如果你有一个已经存在的交换网络并且你想增加一个新的交换机,那么在你安装新交换机之前要把它配置成VTP client模式。因为如果不是这样的话,那么可能这个新的交换机会发送一个新的VTP数据库到你其他所有的交换机上,会把你以前的VLAN配置给洗白,这是你绝对不希望发生的。 | |
VTP PruningVTP提供了一个办法让你可以保存带宽,通过配置使得减少广播,组播以及单播的数据包数量。这种办法叫做修剪(pruning)。VTP修剪只发送广播到中继连接上。这里有一个例子:如果交换机A没有任何端口配置到VLAN 5,并且一个广播在VLAN 5中传播,那么交换机A将不会接收到这个广播。默认情况下,所有交换机的VTP修剪都是禁用的。
当你在一个VTP server上启动修剪时,整个VTP域都会启动这个功能。默认情况下
VLAN 2到VLAN 1005之间的VLAN都可以修剪,但是VLAN 1从来不会进行修剪,因为VLAN 1是一个管理性的VLAN,怎么能够修剪它的数据包呢?
Routing between VLANs在同一VLAN中(或者说在同一广播域)的主机可以自由地互相通信。VLAN在OSI模型的二层建立了网络划分和流量分离。但如我前面所讲为什么依然需要路由器,如果你希望VLAN间的主机或者任何其它可IP寻址的设备能够互相通信,那么必须要一个三层的设备。
这样,你能够在路由器每个接口分配一个VLAN或者使用一个支持ISL路由的路由器。最便宜的,能支持ISL路由的路由器是2600系列,1600,1700,2500系列都不支持。
如图8.7所示,如果你只有少量的VLAN(2个或3个)那么你可以使用一个有两个或者三个10BaseT接口或者示Fast Ethernet接口的路由器,我建议你使用Fast Ethernet接口,这样会工作得更好。
我们在图8.7中可以看到,路由器的每个接口都接了一条访问连接(access link),这意味着路由器的接口ip地址将会变成每个VLAN的主机的默认网关。
如果我们的VLAN数超过了路由器所能提供的接口数量,那么你可以在一个快速以太网接口上使用ISL路由中继或者买一个三层交换机如思科3550。
不同于每个VLAN使用路由器一个接口,你可以只用一个快速以太网接口来运行ISL和802.1Q进行中继。图8.8显示了用一个快速以太网接口连接多个VLAN的方法。所有的VLAN通过一个接口来通信,思科把这种方法叫做单臂路由(router on a stick)
Configuring VLANs配置VLAN是很容易的,首先勾画出什么主机该在什么VLAN不该在什么VLAN,虽然这会很花时间,不过一旦确定了主机和VLAN的归属关系,那么现在是你建立你第一个VLAN的时候了。
在2950交换机下配置VLAN需要在VLAN数据库中进行:
Switch#vlan database
Switch(vlan)#?
VLAN database editing buffer manipulation commands:
abort Exit mode without applying the changes
apply Apply current changes and bump revision number
exit Apply changes, bump revision number, and exit mode
no Negate a command or set its defaults
reset Abandon current changes and reread current database
show Show database information
vlan Add, delete, or modify values associated with a single VLAN
vtp Perform VTP administrative functions.
Switch(vlan)#
注意,下面的配置VLAN的内容有所变化,看情况选择配置方法
要注意的是在2950中创建VLAN你要在特权模式下进入VLAN数据库,而不是在全局模式下进入。下面是创建三个VLAN的例子,注意当我试图改变VLAN 1的名字时会发生错误: Switch(vlan)#vlan 1 name Sales A default VLAN may not have its name changed. Switch(vlan)#vlan 2 name Marketing VLAN 2 modified: Name: Marketing Switch(vlan)#vlan 3 name Accounting VLAN 3 added: Name: Accouting Switch(vlan)#Vlan 4 name Shipping VLAN 4 added: Name: Shipping Switch(vlan)#apply APPLY completed. Switch(vlan)#control+c Switch# 还有要注意的是在最后我们需要使用apply命令来使配置生效。你可以命名VLAN,但不是一定需要命名VLAN的。
| |
另外一种是后面使用的方法在全局模式下建立VLAN,不过你需要在另外一行来命名VLAN,注意和上面的配置方法有什么不同(例如提示符):
Switch>
Switch>en
Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 2
Switch(config-vlan)#
在这个提示符下你可以建立VLAN,命名VLAN,但不是一定需要命名的,交换机会默认分配一个给VLAN。
Switch(config-vlan)#vlan 3
Switch(config-vlan)#name Sales
Switch(config-vlan)#vlan 4
Switch(config-vlan)#name Finance
Switch(config-vlan)#^Z
Switch#
注意:除非分配端口给VLAN,不然你创建的VLAN不会起作用。还有,所有的端口默认都是属于VLAN 1的!除非你设置端口到其他的VLAN。 你不能改变,删除,或者重命名VLAN 1。因为这是一个默认的VLAN。你也不能用别的VLAN来做代替VLAN 1。在所有交换机上默认VLAN 1作为本地VLAN,并且思科建议你用这个VLAN 1来作为你的管理VLAN。本地VLAN的意思是任何不是不同VLAN的数据包都只会发送到本地VLAN。 | |
我们可以使用show vlan命令或者show vlan brief命令来看VLAN数据库:
Switch#sh vlan brief
VLAN Name Status Ports
---- --------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4 Fa0/7, Fa0/8, Fa0/9, Fa0/10,Fa0/11, Fa0/12
2 VLAN0002 active
3 Sales active
4 Finance active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
Switch#
现在我们看到已经创建了的VLAN,我们可以分配交换机的端口到某个VLAN上。每个端口只能属于一个VLAN。
Assigning Switch Ports to VLANs虽然我们可以配置静态和动态VLAN,但是本书我们只讨论静态VLAN的配置。
Switch(config-if)#int f0/2
Switch(config-if)#switchport access vlan 2
Switch(config-if)#int f0/3
Switch(config-if)#switchport access vlan 3
Switch(config-if)#int f0/4
Switch(config-if)#switchport access vlan 4
Switch(config-if)#
如果你需要确认一下配置,那么还是使用show vlan或者show vlan brief命令:
Switch#sh vlan brief
VLAN Name Status Ports
---- ------------------- --------- --------------------------
1 default active Fa0/1, Fa0/5, Fa0/6, Fa0/7, Fa0/8,Fa0/9, Fa0/10, Fa0/11, Fa0/12
2 VLAN0002 active Fa0/2
3 Sales active Fa0/3
4 Finance active Fa0/4
为了在VLAN内部通信,我们需要配置中继端口。
中继端口有五种不同的状态:
Auto:当一个设备连接上端口时自动进行中继。
Desirable:在Auto或者Desirable状态下,当有设备连接上该端口,就协商地进行中继。
Nonegotiate:这种状态下端口变成一个永久性的ISL中继端口,该端口不用和设备进行协商以提供中继。
Off:端口不会进行中继。
On:端口成为一个永久性的ISL中继端口,并可以和设备协商,使该设备的连接变成中继模式。
在2950下,我们可以使用switchport命令:
Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#int f0/12
Switch(config-if)#switchport mode trunk
Switch(config-if)#^Z
Switch#
如果想禁用接口中继,那就使用switchport mode access命令,如果你想显示你的配置,那么使用show running-config:
[output cut]
!
interface FastEthernet0/2
switchport access vlan 2
no ip address
!
interface FastEthernet0/3
switchport access vlan 3
no ip address
!
interface FastEthernet0/4
switchport access vlan 4
no ip address
!
interface FastEthernet0/12
switchport mode trunk //注意,f0/12端口作为中继端口。
no ip address
!
[output cut]
Trunking with the Cisco Catalyst 3550 switch让我们来看看另外一种交换机----思科Catalyst3550,配置3550跟配置2950十分相似。不过3550能够提供三层的服务,而2950不能,也就是说3550是一个三层交换机。另外3550能够同时支持ISL和IEEE802.1Q中继封装方法,而2950只能支持IEEE 802.1Q,1900则是只支持ISL。下面让我们快速浏览一下3550的VLAN配置,在上面我们已经学习了2950交换机中继端口的配置,非常直接:
Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#int f0/12
Switch(config-if)#switchport mode trunk
在3550,你可以配置中继端口的封装,而2950不能:
Switch(config-if)#switchport trunk encapsulation ?
dot1q Interface uses only 802.1q trunking encapsulation when trunking
isl Interface uses only ISL trunking encapsulation when trunking
negotiate Device will negotiate trunking encapsulation with peer on
interface
正如你看到的,我们可以在3550上使用IEEE802.1Q或者ISL。
Configuring Inter-VLAN Routing默认情况下,只有属于同一个VLAN的主机才能互相通信,为了改变这种情况而使得VLAN间可以互相通信,你需要一个路由器或者是别的三层设备。
在路由器的快速以太网接口使用ISL或者802.1Q时,接口要被划分许多逻辑的接口,每个逻辑接口对应一个VLAN,这些逻辑的接口被叫做字接口(subinterfaces)
你需要知道的非常重要的一点是,默认情况下你不能够在1900和2950间进行中继,因为1900只支持ISL路由,而2950则只支持802.1Q路由,这两种中继的方法是不兼容的。这实在是不可思议的一件事:思科的2950交换机居然不支持思科自己的私有协议ISL,哈哈。
总之,在路由器的一个快速以太网或者千兆以太网接口上,你能够使用encapsulation命令来设置端口提供中继:
2600(config)#int f0/0.1
2600(config-subif)#encapsulation dot1q vlan#
注意:要使一个路由器端口能够进行中继,那么这个端口最少也得是100Mbps的。
上面是先进入一个子接口,然后为特定的VLAN设置封装类型。子接口的号码只是一个本地的标识,所以在路由器可以随便设置的。但是我建议你把子接口的号码配置成和需要路由的VLAN的号码一样,这样可以很容易记忆。
要理解每个VLAN象一个单独的子网,这非常重要。虽然它们不一定是,但象配置单独的子网一样配置你的VLAN是一个很好的想法。接下来我们要学习怎样配置VTP,以及在Lab_C路由器上配置inter-VLAN路由。下面我们来看看一些例子:
首先我们看图8.9和图里交换机路由器的相关配置信息。你要在图里所给出的信息中找出各VLAN主机的ip地址,掩码和默认网关等。
我们需要做的第一件事情就是计算出要使用哪个子网。我们看上图的路由器的配置,我们发现VLAN 1使用了192.168.1.64/26,和VLAN 10使用192.168.1.128/27。然后看看交换机的配置,我们发现端口2和3属于VLAN 1,端口4则是属于VLAN 10。这意味着主机A,B在VLAN 1,主机C是在VLAN 10。
那么主机的ip地址将可以是:
HostA: 192.168.1.66, 255.255.255.192, default gateway 192.168.1.65
HostB: 192.168.1.67, 255.255.255.192, default gateway 192.168.1.65
HostC: 192.168.1.130, 255.255.255.224, default gateway 192.168.1.129
主机的ip地址可以是子网范围里的任何一个,这里我只用了默认网关后的可用地址。下面我们要通过命令来配置交换机的端口1,来和路由器建立一条连接以提供VLAN间的通信,我们使用IEEE802.1Q封装。
2950#config t
2950(config)#interface fa0/1
2950(config-if)#switchport mode trunk
因为2950只有802.1Q一种封装,所以我们不需要特别指定封装类型,如果是3550的话,那我们就得指定中继封装了:
3550#config t
3550(config)#interface fa0/1
3550(config-if)#switchport mode trunk
3550(config-if)#switchport trunk encapsulation dot1q
让我们来看看图8.10,图里有三个VLAN,每个VLAN有两台主机。路由器连接交换机的Fa0/1端口,端口F0/6则连接了VLAN 2。仔细看图,这些是思科希望你能够知道的:
1.连接交换机的路由器使用子接口。
2.连接路由器的交换机端口是一个中继端口(trunk port)。
3.连接客户和集线器的交换机端口是访问端口(access ports)而不是中继端口
交换机的配置如下:
2950#config t
2950(config)#int f0/1
2950(config-if)#switchport mode trunk
2950(config-if)#int f0/2
2950(config-if)#switchport access vlan 1
2950(config-if)#int f0/3
2950(config-if)#switchport access vlan 1
2950(config-if)#int f0/4
2950(config-if)#switchport access vlan 3
2950(config-if)#int f0/5
2950(config-if)#switchport access vlan 3
2950(config-if)#int f0/6
2950(config-if)#switchport access vlan 2
在我们配置路由器之前,我们需要设计一下网络地址方案:
VLAN 1: 192.168.10.16/28
VLAN 2: 192.168.10.32/28
VLAN 3: 192.168.10.48/28
路由器的配置如下:
Router#config t
Router(config)#int f0/0
Router(config-if)#no ip address
Router(config-if)#no shutdown
Router(config-if)#int f0/0.1
Router(config-subif)#encapsulation dot1q 1
Router(config-subif)#ip address 192.168.10.17 255.255.255.240
Router(config-subif)#int f0/0.2
Router(config-subif)#encapsulation dot1q 2
Router(config-subif)#ip address 192.168.10.33 255.255.255.240
Router(config-subif)#int f0/0.3
Router(config-subif)#encapsulation dot1q 3
Router(config-subif)#ip address 192.168.10.49 255.255.255.240
每个VLAN上的主机的ip地址从它们的子网范围里选择,而主机的默认网关则是对应VLAN的路由器子接口的ip地址。
现在让我们看另外一个例子,看看没有答案你能不能确定交换机和路由器的配置。图8.11里一个路由器连接了一个有两个VLAN的交换机。每个VLAN里的主机都分配了ip地址,你要根据主机的ip地址来确定交换机和路由器的配置:
因为主机没有显示子网掩码,首先你需要从每个VLAN需要的主机数目来确定子网掩码。VLAN 1需要85个主机,VLAN 2则需要115个。这样我们只能选择一个/25的掩码255.255.255.128。
你应该知道现在子网是172.16.10.0和172.16.10.128,VLAN 1(子网0)的主机范围是1-126而VLAN 2(子网128)的主机范围是129-254。记住,不要因为主机A的地址是172.16.10.126而主机B的地址是172.16.10.129而认为它们是在同一个子网内!!
现在可以配置交换机了:
2950#config t
2950(config)#int f0/1
2950(config-if)#switchport mode trunk
2950(config-if)#int f0/2
2950(config-if)#switchport access vlan 1
2950(config-if)#int f0/3
2950(config-if)#switchport access vlan 2
路由器的是:
Router#config t
Router(config)#int f0/0
Router(config-if)#no ip address
Router(config-if)#no shutdown
Router(config-if)#int f0/0.1
Router(config-subif)#encapsulation dot1q 1
Router(config-subif)#ip address 172.16.10.1 255.255.255.128
Router(config-subif)#int f0/0.2
Router(config-subif)#encapsulation dot1q 2
Router(config-subif)#ip address 172.16.10.254 255.255.255.128
这里我分配子网0的第一个地址给VLAN 1,而分配了子网128的最后一个地址给VLAN 2,这些都没有关系,它们一样能够正常工作。你只需要把主机的默认网关地址设置成跟对应VLAN的路由器子接口的地址一样就可以了。
因为VLAN 1通常都是一个交换机的管理VLAN,所以我们从地址范围里分配一个地址给它:
2950#config t
2950(config)#int vlan 1
2950(config-if)#ip address 172.16.10.2 255.255.255.128
2950(config-if)#no shutdown
在图8.12里有两个VLAN,我们看看路由器的配置,什么是主机A的ip地址,掩码和默认网关呢?用子网范围里的最后的ip地址作为主机A的地址。
如果你仔细看了路由器的配置,那么答案就很简单了。两个VLAN都用了/28或者255.255.255.240掩码,这个掩码的块范围是16,路由器给VLAN 1的地址在子网128里,那么下一个子网就是144(128+16),所以VLAN 1的广播地址是142而有效的主机范围是129-142,那么主机A的地址就出来了:
IP Address: 192.168.10.142
Mask: 255.255.255.240
Default Gateway: 192.168.10.129
好了,下面我们该配置VTP了-----另一个非常重要的目标。
Configuring VTP默认所有的交换机都是配置成VTP server模式的。要配置VTP,首先你得设置一个domain name,然后当然,因为你配置了VTP,所以需要确认。
当你创建了一个VTP domain,你需要设置交换机的domain名称,密码,运行模式和修剪能力。使用全局配置模式命令vtp来设置这些内容。下面的例子中我们设置交换机为vtp server,vtp域为est:
Switch(config)#vtp mode ?
client Set the device to client mode.
server Set the device to server mode.
transparent Set the device to transparent mode.
Switch(config)#vtp mode server
Device mode already VTP SERVER. //交换机默认已经是server
Switch(config)#vtp domain ?
WORD The ascii name for the VTP administrative domain.
Switch(config)#vtp domain est
Changing VTP domain name from NULL to est
Switch(config)#
需要再次强调的是所有交换机默认都在VTP server模式下,并且如果你想改变任何VLAN的信息你都要在VTP server模式下进行。
配置完VTP的内容后我们用show vtp命令来检查确认:
SwitchA#sh vtp ?
counters VTP statistics
status VTP domain status
SwitchA#sh vtp status
VTP Version : 2
Configuration Revision : 1
Maximum VLANs supported locally : 64
Number of existing VLANs : 7
VTP Operating Mode : Server
VTP Domain Name : routersim
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
MD5 digest : 0x4C 0x60 0xA6 0x5D 0xD7 0x41 0x8C 0x37
Configuration last modified by 172.16.10.1 at 3-1-94 06:40:09
Local updater ID is 172.16.10.1 on interface Vl1 (lowest numbered VLAN
interface found)
Troubleshooting VTP用双绞线把你的交换机连接起来,如果所有的灯都变绿这样你就已经启动并运行了!世界是多么的美好啊,难道你真的认为有这么容易吗?是的,就是这样------如果你没有使用VLAN的话。如果你使用了VLAN(这是很确定的,要用!)如果你有多个VLAN,那么你需要使用VTP。
不过如果VTP没有正确地配置的话,那么它将不工作,所以你绝对需要检测VTP故障的能力。下面我们看一些例子并解决它们的故障:
SwitchA#sh vtp status
VTP Version : 2
Configuration Revision : 0
Maximum VLANs supported locally : 64
Number of existing VLANs : 7
VTP Operating Mode : Server
VTP Domain Name : RouterSim
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
SwitchB#sh vtp status
VTP Version : 2
Configuration Revision : 1
Maximum VLANs supported locally : 64
Number of existing VLANs : 7
VTP Operating Mode : Server
VTP Domain Name : GlobalNet
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
为什么上面的两个交换机不能分享VLAN信息呢?首先我们看到两个交换机都在server模式下,但这不是问题。问题在于两个交换机处在不同的VTP域里,交换机A在RouterSim VTP域,而交换机B在GlobalNet VTP域。如果VTP域的名字不同,那么这两个交换机是绝对不会共享VTP信息的。
现在你知道怎样在交换机中发现VTP域的错误配置了,下面我们来看看另外一个例子:
SwitchC#sh vtp status
VTP Version : 2
Configuration Revision : 1
Maximum VLANs supported locally : 64
Number of existing VLANs : 7
VTP Operating Mode : Client
VTP Domain Name : Todd
VTP Pruning Mode : Disabled
VTP V2 Mode : Disabled
VTP Traps Generation : Disabled
当你试图在交换机C上创建一个新的VLAN时,你会发现你不能够创建,为什么呢?在这个例子里VTP域的名字并不重要,关键在于VTP的模式,上面交换机C的VTP模式是client(客户模式),而VTP客户模式不能创建,删除,增加或者修改VLAN。VTP客户模式的数据库只保留在RAM里而不是保存在NARAM中。所以,为了创建一个新的VLAN,首先交换机必须设成VTP server模式。如:
SwitchC(config)#vlan 50
VTP VLAN configuration not allowed when device is in CLIENT mode.
为了解决这个问题我们需要:
SwitchC(config)#vtp mode server
Setting device to VTP SERVER mode
SwitchC(config)#vlan 50
SwitchC(config-vlan)#
Configuring Switching in Our Sample Internetwork刚才我们已经配置了路由器,现在是配置交换机的时候了。
图里的互连网络有两台2950连接在一起,我把连接路由器Lab_B的2950交换机命名为2950B,另外一台叫2950C。
我们在VLAN 1上使用172.16.10.0/24网络,Lab_B路由器的fa0/0接口做inter-VLAN 路由。每个交换机必须要有一个172.16.10.0子网的ip地址来互相通信。
我们也创建了其他的VLAN:VLAN 2使用172.16.20.0/24网络,VLAN 3使用172.16.30.0/24网络。
下面我们开始设置交换机的名称,密码,标识,接口描述以及ip地址吧:
Switch>en
Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#hostname 2950C
2950C(config)#enable secret todd
2950C(config)#line con 0
2950C(config-line)#login
2950C(config-line)#password console
2950C(config-line)#line vty 0 15
2950C(config-line)#login
2950C(config-line)#password telnet
2950C(config-line)#banner motd #
Enter TEXT message. End with the character '#'.
This is my 2950C switch
#
2950C(config)#int f0/1
2950C(config-if)#description Connection to router
2950C(config-if)#interface f0/4
2950C(config-if)#description Connection to 2950B
2950C(config-if)#int f0/5
2950C(config-if)#description 2nd connection to 2950B
2950C(config-if)#int vlan1
2950C(config-if)#ip address 172.16.10.2 255.255.255.0
2950C(config-if)#no shut
2950C(config-if)#exit
2950C(config)#ip default-gateway 172.16.10.1
2950C(config)#^Z
2950C#copy run start
Destination filename [startup-config]? [Enter]
Building configuration...
[OK]
2950C#
上面是2950C交换机的配置,下面我们配置2950B交换机:
Switch>en
Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#hostname 2950B
2950B(config)#enable secret todd
2950B(config)#line con 0
2950B(config-line)#login
2950B(config-line)#password console
2950B(config-line)#line vty 0 15
2950B(config-line)#login
2950B(config-line)#password telnet
2950B(config-line)#banner motd #
Enter TEXT message. End with the character '#'.
This is my 2950B switch
#
2950B(config)#
2950B(config)#int f0/4
2950B(config-if)#desc connection to 2950C
2950B(config-if)#int f0/5
2950B(config-if)#desc 2nd connection to 2950C
2950B(config-if)#int vlan 1
2950B(config-if)#ip address 172.16.10.3 255.255.255.0
2950B(config-if)#no shut
2950B(config-if)#exit
2950B(config)#ip default-gateway 172.16.10.1
2950B(config)#exit
2950B#copy run start
Destination filename [startup-config]? [Enter]
Building configuration...
[OK]
2950B#
2950B#ping 172.16.10.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.10.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/3/4 ms
2950B#
现在两台交换机都配置完毕基本的管理性的内容并能互相通信了。下面我们配置连接交换机的端口中继,然后在路由器上配置VLAN中继:
2950B#config t
2950B(config)#int f0/1
2950B(config-if)#switchport mode trunk
2950B(config-if)#int f0/4
2950B(config-if)#switchport mode trunk
2950B(config-if)#int fa0/5
2950B(config-if)#switchport mode trunk
2950B(config-if)#
2950C#config t
Enter configuration commands, one per line. End with CNTL/Z.
2950C(config)#int fa0/4
2950C(config-if)#switchport mode trunk
2950C(config-if)#int fa0/5
2950C(config-if)#switchport mode trunk
2950C(config-if)#
现在我们来检查一下:
2950B#sh int trunk
Port Mode Encapsulation Status Native vlan
Fa0/1 on 802.1q trunking 1
Fa0/4 on 802.1q trunking 1
Fa0/5 on 802.1q trunking 1
[output cut]
现在呢?我们接着要做什么啊?答案是配置VTP,设置VLAN,和分配端口给VLAN。
2950C#config t
Enter configuration commands, one per line. End with CNTL/Z.
2950C(config)#vtp mode server
Device mode already VTP SERVER.
2950C(config)#vtp domain RouterSim
2950C(config)#vlan 2
2950C(config-vlan)#name Sales
2950C(config-vlan)#vlan 3
2950C(config-vlan)#name Marketing
我们要先配置了VTP信息,然后才划分VLAN,这样不容易发生VTP数据库的问题。
先检查一下:
2950C#sh vlan brief
VLAN Name Status Ports
---- ----------------- --------- ------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/7, Fa0/8, Fa0/11, Fa0/12
2 Sales active
3 Marketing active
[output cut]
下面我们设置2950C交换机的fa0/2到VLAN 2,fa0/3到VLAN 3。
2950C#config t
2950C(config)#int fa0/2
2950C(config-if)#switchport access vlan 2
2950C(config-if)#int fa0/3
2950C(config-if)#switchport access vlan 3
现在再看看:
2950C#sh vlan brief
VLAN Name Status Ports
---- --------------------- --------- ----------------------------
1 default active Fa0/1, Fa0/4, Fa0/5, Fa0/6
Fa0/7, Fa0/8, Fa0/9, Fa0/10
2 Sales active Fa0/2
3 Marketing active Fa0/3
我们还要配置2950B交换机,需要记住的是要保证VTP信息正确,这样交换机才能够共享VLAN信息。我们需要2950B作为VTP客户:
2950B#config t
Enter configuration commands, one per line. End with CNTL/Z.
2950B(config)#vtp domain RouterSim
2950B(config)#vtp mode client
Device mode set to VTP CLIENT.
2950B(config)#^z
2950B#
这里要注意我们先设置了VTP域的名称然后才把交换机从VTP server模式改成VTP客户模式。现在我们再检查一下2950B交换机是否已经从2950C(VTP server)那里接收了VLAN信息:
2950B#sh vlan brief
VLAN Name Status Ports
---- -------------------- --------- ------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/7, Fa0/8, Fa0/11, Fa0/12
2 Sales active
3 Marketing active
[output cut]
好的,现在2950B已经收到VLAN的信息了。我们还需要配置一下端口到VLAN:
2950B#config
2950B(config)#int fa0/2
2950B(config-if)#switchport access vlan 2
2950B(config-if)#int fa0/3
2950B(config-if)#switchport access vlan 3
然后检查:
2950B#sh vlan brief
VLAN Name Status Ports
---- -------------------- --------- ----------------------------
1 default active Fa0/1, Fa0/4, Fa0/5, Fa0/6
Fa0/7, Fa0/8, Fa0/9, Fa0/10
2 Sales active Fa0/2
3 Marketing active Fa0/3
现在两个交换机都已经配置好了,检查也没有问题。现在主机只能够在同一VLAN里的其它主机通信,而不能够和别的VLAN的主机通信,现在我们用路由器或者三层交换机来做VLAN路由:
(在Lab_B路由器上)
Router>enable
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname Trunkrouter
Trunkrouter(config)#int f0/0
Trunkrouter(config-if)#no ip address
Trunkrouter(config-if)#no shutdown
Trunkrouter(config-if)#int f0/0.1
Trunkrouter(config-subif)#ip address 172.16.10.1 255.255.255.0
Configuring IP routing on a LAN subinterface is only allowed if that
subinterface is already configured as part of an IEEE 802.10, IEEE 802.1Q, or ISL VLAN.
Trunkrouter(config-subif)#encapsulation dot1q 1
Trunkrouter(config-subif)#ip address 172.16.10.1 255.255.255.0
Trunkrouter(config-subif)#int f0/0.2
Trunkrouter(config-subif)#encap dot1q 2
Trunkrouter(config-subif)#ip address 172.16.20.1 255.255.255.0
Trunkrouter(config-subif)#int f0/0.3
Trunkrouter(config-subif)#encap dot1q 3
Trunkrouter(config-subif)#ip address 172.16.30.1 255.255.255.0
Trunkrouter(config-subif)#exit
我在路由器上建立了三个子接口,每个VLAN一个。虽然子接口的号码用什么都没有关系,但是为了便于记忆,还是建议设成和VLAN号码一样。还有要注意的是,当我在第一个子接口上设置ip地址时,路由器给出下面的错误信息:
Configuring IP routing on a LAN subinterface is only allowed if that subinterface is already configured as part of an IEEE 802.10, IEEE 802.1Q, or ISL VLAN.
这说明了要先设置第一个子接口的封装类型才能够为其设置ip地址。
检查路由器的配置:
Trunkrouter#show run
!
interface FastEthernet0/0
no ip address
no ip directed-broadcast
!
interface FastEthernet0/0.1
encapsulation dot1Q 1
ip address 172.16.10.1 255.255.255.0
no ip directed-broadcast
!
interface FastEthernet0/0.2
encapsulation dot1Q 2
ip address 172.16.20.1 255.255.255.0
no ip directed-broadcast
!
interface FastEthernet0/0.3
encapsulation dot1Q 3
ip address 172.16.30.1 255.255.255.0
no ip directed-broadcast
!
好,看起来一切正常,而所有的主机也能够相互通信了,哈哈,收工!
Summary本章介绍了VLAN和思科交换机怎样实现VLAN,我们知道VLAN可以在一个交换环境中分割广播域----一个非常重要的功能,这是因为二层交换机只能分割冲突域,默认情况下所有交换机都处在一个大的广播域里。我们还学习了通过一个快速以太网端口在交换机间中继VLAN。
在我们设计网络并且多个交换机提供不同VLAN时,中继是一个很重要的技术。
我们同样学习了VLAN中继协议(VLAN Trunk Protocol,VTP),一个在中继中没有发挥什么作用的协议,它只是把VLAN的信息发送到一条中继连接,但是中继的设置跟VTP无关。
最后我们学习了VTP,中继和VLAN的配置和检测故障的例子。