首先,说明一下本例子vlan之间通讯需要用到的设备有:二层交换机两个(当然三层也可以,不过很贵~~),路由器/3层交换机一台(支持802.1q协议),pc4台试验环境为Cisco虚拟软件packettrcer4.1二层交换机:首先要明白一点,对于vlan通讯来说,二层交换机上vlan没有必要配ip地址,唯一需要的是vlanl(配置的ip地址为管理地址)其次,二层交换机没有ip地址当然vlan可以设置ip,但是端口什么的没有ip虽然这点很简单,但是,很多人经常忘记,至少我身边的同学好多都不知道这个事实还有,这点很重要,二层交换机只能同一时刻存在一个vlan最后,要保证vlan之间可以相互通讯的前提,就是二层与路由的接口要设置为trunk模式路由器:由于要实现vlan之间通讯,所以路由器需要用到802.1q协议,来封装端口下面开始配置)S1:vlan1:IP:10.1.0.2/16vlan10:name—Vl下属pc:IP:192.168.1.x/24网关192.168.1.254/24vlan20:name—V2下属pc:IP:192.168.2.x/24网关192.168.2.254/24S2:vlan1:IP:10.2.0.2/16vlan30:name—V3下属pc:IP:192.168.3.x/24网关192.168.3.254/24vlan40:name--V4下属pc:IP:192.168.4.x/24网关192.168.4.254/24R1:F0/0:IP:10.1.0.1/16虚接口地址:F0/0.1:IP:192.168.1.254/24F0/0.2:IP:192.168.2.254/24F0/1:IP:10.2.0.1/16虚接口地址:F0/1.1:IP:192.168.3.254/24F0/1.2:IP:192.168.4.254/24拓扑图如下:si配置如下:Switch>enswitch#conftEnterconfigurationcommands,oneperline.EndwithCNTL/Z.switch(config)#hostswitch(config)#hostnamesisi(config)#vlani0si(config-vlan)#nameVisi(config-vlan)#exitsi(config)#vlan20si(config-vlan)#nameV2si(config-vlan)#intvlanisi(config-if)#ipaddressi0.i.0.2255.255.0.0si(config-if)#noshut%LINK-5-CHANGED:InterfaceVlani,changedstatetoup%LINEPROTO-5-UPDOWN:LineprotocolonInterfaceVlani,changedstatetoupsi(config-if)#intf0/2S1(config-if)#switchportmodeaccessS1(config-if)#switchportaccessvlan10S1(config-if)#noshutS1(config-if)#intf0/3S1(config-if)#switchportmodeaccessS1(config-if)#switchportaccessvlan20S1(config-if)#noshutS1(config-if)#intf0/1S1(config-if)#switchportmodetrunkS1(config-if)#switchporttrunkallowedvlanallS1(config-if)#noshutS1(config-if)#end%SYS-5-CONFIG_I:ConfiguredfromconsolebyconsoleS1#shvlanVLANNameStatusPorts1defaultactiveFa0/1,Fa0/4,Fa0/5,Fa0/6Fa0/7,Fa0/8,Fa0/9,Fa0/10Fa0/11,Fa0/12,Fa0/13,Fa0/14Fa0/15,Fa0/16,Fa0/17,Fa0/18Fa0/19,Fa0/20,Fa0/21,Fa0/22Fa0/23,Fa0/2410V1activeFa0/220V2activeFa0/31002 fddi-defaultactive1003 token-ring-defaultactive1004 fddinet-defaultactive1005 trnet-defaultactiveVLANTypeSAIDMTUParentRingNoBridgeNoStpBrdgModeTrans1Trans21enet10000115000010enet10001015000020enet1000201500001002 enet1010021500001003 enet1010031500001004 enet1010041500001005 enet101005150000S2设置如上:Switch>enSwitch#conftEnterconfigurationcommands,oneperline.EndwithCNTL/Z.Switch(config)#hostnameS2S2(config)#vlan30S2(config-vlan)#nameV3S2(config-vlan)#noshut%Invalidinputdetectedat''marker.S2(config-vlan)#vlan40S2(config-vlan)#nameV4S2(config-vlan)#intvlan1S2(config-if)#ipaddress10.2.0.2255.255.0.0S2(config-if)#noshut%LINK-5-CHANGED:InterfaceVlan1,changedstatetoup%LINEPROTO-5-UPDOWN:LineprotocolonInterfaceVlan1,changedstatetoupS2(config-if)#intf0/2S2(config-if)#switmaS2(config-if)#switaccessvlan30S2(config-if)#noshutS2(config-if)#intf0/3S2(config-if)#switmaS2(config-if)#switavlan40S2(config-if)#noshutS2(config-if)#intf0/1S2(config-if)#switmtS2(config-if)#swittrunkallowedvlanallS2(config-if)#noshutS2(config-if)#end%SYS-5-CONFIG_I:ConfiguredfromconsolebyconsoleS2#shvlanVLANNameStatusPorts1defaultactiveFa0/1,Fa0/4,Fa0/5,Fa0/6Fa0/7,Fa0/8,Fa0/9,Fa0/10Fa0/11,Fa0/12,Fa0/13,Fa0/14Fa0/15,Fa0/16,Fa0/17,Fa0/18Fa0/19,Fa0/20,Fa0/21,Fa0/22Fa0/23,Fa0/2430V3activeFa0/240V4activeFa0/31002 fddi-defaultactive1003 token-ring-defaultactive1004 fddinet-defaultactive1005 trnet-defaultactiveVLANTypeSAIDMTUParentRingNoBridgeNoStpBrdgModeTrans1Trans21enet10000115000030enet10003015000040enet1000401500001002 enet1010021500001003 enet1010031500001004 enet1010041500001005 enet101005150000路由器R1设置如下:Router>enableRouter#conftEnterconfigurationcommands,oneperline.EndwithCNTL/Z.Router(config)#hostnameR1R1(config)#R1(config)#intf0/0R1(config-if)#ipaddress10.1.0.1255.255.0.0R1(config-if)#noshut%LINK-5-CHANGED:InterfaceFastEthernet0/0,changedstatetoup%LINEPROTO-5-UPDOWN:LineprotocolonInterfaceFastEthernet0/0,changedstatetoupR1(config-if)#intf0/1R1(config-if)#ipaddress10.1.1.1255.255.0.0%10.1.0.0overlapswithFastEthernet0/0R1(config-if)#ipaddress10.2.0.1255.255.0.0R1(config-if)#noshut%LINK-5-CHANGED:InterfaceFastEthernet0/1,changedstatetoup%LINEPROTO-5-UPDOWN:LineprotocolonInterfaceFastEthernet0/1,changedstatetoupR1(config-if)#intf0/0.1%LINK-5-CHANGED:InterfaceFastEthernet0/0.1,changedstatetoup%LINEPROTO-5-UPDOWN:LineprotocolonInterfaceFastEthernet0/0.1,changedstatetoupR1(config-subif)#encapsulationdot1q10R1(config-subif)#ipaddress192.168.1.254255.255.255.0R1(config-subif)#noshutR1(config-subif)#intf0/0.2%LINK-5-CHANGED:InterfaceFastEthernet0/0.2,changedstatetoup%LINEPROTO-5-UPDOWN:LineprotocolonInterfaceFastEthernet0/0.2,changedstatetoupR1(config-subif)#encapsulationdot1q20R1(config-subif)#ipaddress192.168.2.254255.255.255.0R1(config-subif)#noshutR1(config-subif)#intf0/1.1%LINK-5-CHANGED:InterfaceFastEthernet0/1.1,changedstatetoup%LINEPROTO-5-UPDOWN:LineprotocolonInterfaceFastEthernet0/1.1,changedstatetoupR1(config-subif)#encapsulationdot1q30R1(config-subif)#ipaddress192.168.3.254255.255.255.0R1(config-subif)#noshutR1(config-subif)#intf0/1.2%LINK-5-CHANGED:InterfaceFastEthernet0/1.2,changedstatetoup%LINEPROTO-5-UPDOWN:LineprotocolonInterfaceFastEthernet0/1.2,changedstatetoupR1(config-subif)#encapsulationdot1q40R1(config-subif)#ipaddress192.168.4.254255.255.255.0R1(config-subif)#noshutR1(config-subif)#end%SYS-5-CONFIG_I:ConfiguredfromconsolebyconsoleR1#showiprouteCodes:C-connected,S-static,I-IGRP,R-RIP,M-mobile,B-BGPD-EIGRP,EX-EIGRPexternal,O-OSPF,IA-OSPFinterareaN1-OSPFNSSAexternaltype1,N2-OSPFNSSAexternaltype2E1-OSPFexternaltype1,E2-OSPFexternaltype2,E-EGPi-IS-IS,L1-IS-ISlevel-1,L2-IS-ISlevel-2,ia-IS-ISinterarea*-candidatedefault,U-per-userstaticroute,o-ODRP-periodicdownloadedstaticrouteGatewayoflastresortisnotset10.0.0.0/16issubnetted,2subnetsC10.1.0.0isdirectlyconnected,FastEthernet0/0C10.2.0.0isdirectlyconnected,FastEthernet0/1C192.168.1.0/24isdirectlyconnected,FastEthernet0/0.1C192.168.2.0/24isdirectlyconnected,FastEthernet0/0.2C192.168.3.0/24isdirectlyconnected,FastEthernet0/1.1C192.168.4.0/24isdirectlyconnected,FastEthernet0/1.2现在,可以设置PC的属性了,别忘了四处ping下,检查是否设置成功。
hoho,貌似没有什么问题了OK,大功告成,我不准备写上述配置的解释,简单解释一下工作原理:二层交换机只允许同时存在一个vlan,这就决定了我们不可能靠二层交换机实现vlan的通讯,我们需要支持路由功能的三层交换机或者路由器来实现它vlan划分和ip地址分配就不说了,着重了解一下虚接口(也就是802.1q的实现过程)由于路由器和交换机相连的接口只有一个,我们要配置虚拟地址,就是传说中的虚接口,这里用到的是802.1q协议,用此协议封装此路由器虚接口,将vlan的ID和虚接口地址在逻辑上连接起来也就是单臂路由(不明白的可以点此链接查看)的实现原理略〔八),交换机上的trunk口和路由通讯的时候,会封装进vlan的ID,然后直接找到对应的虚接口进行通讯,相当与在trunk口和路由器之间多了一个分线器,将vlan直接和路由器相连,所以在最后路由器上showiproute的时候显示如下信息:10.0.0.0/16issubnetted,2subnetsC10.1.0.0isdirectlyconnected,FastEthernet0/0C10.2.0.0isdirectlyconnected,FastEthernet0/1C192.168.1.0/24isdirectlyconnected,FastEthernet0/0.1C192.168.2.0/24isdirectlyconnected,FastEthernet0/0.2C192.168.3.0/24isdirectlyconnected,FastEthernet0/1.1C192.168.4.0/24isdirectlyconnected,FastEthernet0/1.2注意到了,vlan和路由是directlyconnected~~就是直连。
至于用3层交换实现vlan通讯,好像不用多说了,interfacevlanvlan-id然后配置ip地址,ipaddress