VLAN虚拟局域网知识笔记之(二) VLAN端口类型和基础配置

VLAN虚拟局域网知识笔记之(二)

VLAN端口类型和基础配置

  VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的局域网在逻辑上划分成多个广播域的技术。通过在交换机上配置VLAN,可以实现在同一个VLAN内的用户可以进行二层互访,而不同VLAN间的用户被二层隔离。这样既能够隔离广播域,又能够提升网络的安全性。

  书接上一回,本节笔记主要介绍VLAN的端口类型以及配置方法,然后通过抓包查看现象。

 

 

  PVID

  PVID表示端口在缺省情况下所属的VLAN(缺省情况下,华为系列的交换机每个端口的PVID都为1)。

   

  PVID即Port VLAN ID,代表端口的缺省VLAN。

  交换机从对端设备收到的帧有可能是Untagged的数据帧,但所有以太网帧在交换机中都是以Tagged的形式来被处理和转发的,因此交换机必须给端口收到的Untagged数据帧添加上Tag。为了实现此目的,必须为交换机配置端口的缺省VLAN。当该端口收到Untagged数据帧时,交换机将给它加上该缺省VLAN的VLAN Tag

 

  以上图中的主机A为例。主机A向外发送数据:

  ①一般情况下,主机A向外发送的数据帧是不带有Tag的。

  ②交换机SWA接收到该数据帧时,发现其不带有Tag。然后会根据接收到该数据帧的端口上配置的PVID,为该数据帧打上一个Tag,使其能够在交换机之间传输数据。

 

  Tips:缺省情况下,交换机每个端口的PVID都为1。若没有配置VLAN,交换机会为没有打上Tag(即Untagged)的数据帧打上这个缺省的VLAN Tag。

 

 

 

  端口类型 -- Access

  Access端口在收到数据后会添加VLAN Tag,VLAN ID和端口的PVID相同。

  Access端口在转发数据前会移除VLAN Tag。

  

  如上图所示,交换机的G0/0/1,G0/0/2,G0/0/3端口分别连接三台主机,都配置为Access端口。其中G0/0/1和G0/0/2的端口PVID为10(即VLAN 10),G0/0/3的端口PVID为20(即VLAN 20)。

 

  (一)Access端口基本原理

  Access端口是交换机上用来连接用户主机的端口,它只能连接接入链路,并且只能允许唯一VLAN ID通过本端口

   

  Access端口收发数据帧的规则如下:

  ①如果该端口接收对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID

  ②如果该端口接收对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文

  ③Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送。Access端口发往对端设备的以太网帧永远是不带标签的帧

 

  (二)示例解释

  在本示例中,交换机的G0/0/1,G0/0/2,G0/0/3端口分别连接三台主机,都配置为Access端口。

  主机A把数据帧(不带VLAN标签)发送到交换机的G0/0/1端口,再由交换机发往其他目的地。收到数据帧之后,交换机根据端口的PVID给数据帧打上VLAN标签 10。

  由于G0/0/2端口的PVID也是10,与VLAN标签中的VLAN ID相同,于是决定从G0/0/2端口转发数据帧。交换机移除VLAN标签 10,把数据帧发送到主机B。

  连接主机C的端口的PVID是20,与VLAN 10不属于同一个VLAN,因此此端口不会接收到VLAN 10的数据帧。

 

  (三)Access端口配置方法

  Step 1:创建VLAN

  在交换机上划分VLAN时,需要首先创建VLAN。

  命令:vlan <vlan-id>

  

 

  如本例所示,执行vlan 10命令后,就创建了VLAN 10,并进入了VLAN 10视图。

  VLAN ID的取值范围是1到4094

 

  Tips:当需要创建多个VLAN时

  可以在交换机上执行命令:vlan batch { vlan-id1 [ to vlan-id2 ] },以创建多个连续的VLAN

   

  如本例所示,执行命令后,创建了VLAN 10到VLAN 20连续10个VLAN。

 

  也可以执行vlan batch { vlan-id1 vlan-id2 }命令,创建多个不连续的VLANVLAN号之间需要有空格。

   

  如本例所示,执行命令后,创建了VLAN 10,20,30,40一共4个VLAN。

 

  Step 2:对创建的VLAN进行配置验证

  创建VLAN后,可以执行display vlan命令验证配置结果。如果不指定任何参数,则该命令将显示所有VLAN的简要信息

   

  缺省情况下,交换机所有端口都属于VLAN 1中。

   

  查看刚创建的VLAN

   

 

  Tips:更多的查看VLAN命令

  执行display vlan [ vlan-id [ verbose ] ]命令,可以查看指定VLAN的详细信息,包括VLAN ID、类型、描述、VLAN的状态、VLAN中的端口、以及VLAN中端口的模式等。

  执行display vlan vlan-id statistics命令,可以查看指定VLAN中的流量统计信息

  执行display vlan summary命令,可以查看系统中所有VLAN的汇总信息

 

  Step 3:配置Access端口

  使用命令:port link-type <type>

  配置端口类型。其中type可以配置为Access,Trunk或Hybrid。

  以下示例为将交换机SWA的G0/0/1,G0/0/2和G0/0/3的端口设置为

   

   

  需要注意的是,如果查看端口配置时没有发现端口类型信息,说明端口使用了默认的hybrid端口链路类型。当修改端口类型时,必须先恢复端口的默认VLAN配置,使端口属于缺省的VLAN 1。

 

  Tips:华为系列交换机默认的端口类型是hybrid

  端口类型Trunk和Hybrid将会在下面笔记中进行详细的介绍。

 

 

  Step 4:将端口添加到VLAN中

  可以使用两种方法把端口加入到VLAN。

  第一种方法是进入到VLAN视图,执行port <interface>命令,把端口加入VLAN。

  以下示例为将交换机SWA的G0/0/1和G0/0/2端口加入到VLAN 10中。

   

 

  第二种方法是进入到接口视图,执行port default <vlan-id>命令,把端口加入VLAN。vlan-id是指端口要加入的VLAN。

  以下示例为将交换机SWA的G0/0/3端口加入到VLAN 20中。

   

 

 

  Step 5:对刚才的配置进行验证

  执行display vlan命令,可以确认端口是否已经加入到VLAN中。

   

   

   

  在本示例中,端口G0/0/1G0/0/2加入了VLAN 10,G0/0/3加入了VLAN 20。

  其中UT表明该端口发送数据帧时,会剥离VLAN标签,即此端口是一个Access端口或不带标签的Hybrid端口。U或D分别表示链路当前是Up状态或Down状态。

 

  通过主机A分别访问主机B和主机C,查看结果。(IP配置已省略)

  主机A正常访问主机B

   

 

 

  主机A无法访问主机C,因为他们处于不同的VLAN中,当交换机SWA知道两台主机对应的端口PVID不一致时,SWA将不会把主机A发送的报文转发给主机C。

   

 

   

  端口类型 -- Trunk

  当Trunk端口收到帧时,如果该帧不包含Tag,将打上端口的PVID;如果该帧包含Tag,则不改变。

  当Trunk端口发送帧时,且该帧的VLAN ID在Trunk的允许发送列表中时:若与端口的PVID相同时,则剥离Tag发送;若与端口的PVID不同时,则直接发送。

   

  如上图所示,是从Access端口例子的基础上增加了一台交换机B以及两台主机(D和E),主机D属于VLAN 10,主机E属于VLAN 20。现需求VLAN 10的主机A和B可以访问VLAN 10的主机D,同时VLAN 20的主机C可以访问VLAN 20的主机E,那么我们要怎么配置交换机A和交换机B之间的链路和端口G0/0/4的端口类型呢?

  可以配置为Access端口类型吗?我们可以从上面的笔记知道,Access端口类型只能允许唯一VLAN ID通过本端口。若交换机A和交换机B的G0/0/4端口均配置为PVID为10的Access端口,那么交换机A和B之间只能传输属于VLAN 10的数据帧,而不能传输VLAN 20的数据帧。若反之配置了PVID为20的Access端口,那么也不能传输VLAN 10的数据帧。

   

  所以这个时候,就可以用到Trunk端口了。

 

  (一)Trunk端口基本原理

  Trunk端口是交换机上用来和其他交换机连接的端口,它只能连接干道链路。Trunk端口允许多个VLAN的帧(带Tag标记)通过

   

  Trunk端口收发数据帧的规则如下:

  ①当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文

  ②当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文。否则丢弃该报文

  ③端口发送数据帧时,当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时,去掉Tag,发送该报文。当VLAN ID与端口的PVID不同,且是该端口允许通过的VLAN ID时,保持原有Tag,发送该报文

 

 

  (二)示例解释

  在本示例中,SWA和SWB连接主机的端口均Access端口,并将SWA和SWB互连的端口配置Trunk端口。在缺省情况下,端口的默认PVID都为1。配置Trunk链路允许VLAN 10和20的流量通过。

  Step 1SWAPVID为10的G0/0/1接收到VLAN 10的主机A的报文时,会为该报文打上VLAN ID为10的标签。

  Step 2:接着SWA在端口G0/0/4转发该报文时,由于该报文的VLAN ID(为10)与此端口的PVID(缺省为1)不相同,且检查VLAN ID在允许通过的VLAN ID列表中后,则会在转发报文时不剥离VLAN标签,然后直接转发到Trunk链路上。

  Ex:若端口G0/0/4的PVID为10,与VLAN ID(为10)相同,则会剥离VLAN标签,然后发送到Trunk链路上。

  Step 3:对端的SWB接收到带有VLAN ID(为10)的报文,由于VLAN ID(为10)与此端口的PVID(缺省为1)不相同,且检查VLAN ID在允许通过的VLAN ID列表中后,会保持原有的VLAN ID标签,并转发该报文。

  Step 4SWB向端口PVID为10的G0/0/1转发报文,先剥离VLAN标签,再转发给主机D。由于SWB的G0/0/2的端口PVID为20,所以不会向这个端口转发报文。

 

  同理,VLAN 20的报文转发过程大致相同,这里不再赘述。

 

 

  (三)Trunk端口配置

  SWB上的创建VLAN和Access端口配置省略,创建VLAN 10和VLAN 20,G0/0/1为VLAN 10的Access端口,G0/0/2为VLAN 20的Access端口。

  Step 1:配置SWA和SWB的G0/0/4(干道链路的端口)为Trunk端口

  配置Trunk时,应先使用

  命令:port link-type trunk

  修改端口的类型为Trunk

   

 

  配置Trunk端口允许哪些VLAN的数据帧通过。

  命令:port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }

  配置端口允许通过VLANall表示允许所有VLAN的数据帧通过。

   

 

  SWB的G0/0/4端口配置相同,故省略。

  在本示例中,将SWA和SWB的G0/0/4端口配置为Trunk端口,该端口PVID默认为1。配置port trunk allow-pass vlan 10 20命令之后,该Trunk端口允许VLAN 10和VLAN 20的数据流量通过(不剥离VLAN Tag)。

   

  此外,还可以通过命令修改Trunk端口的PVID

  命令:port trunk pvid vlan vlan-id

  修改Trunk端口的PVID。

   

 

  Tips修改Trunk端口的PVID之后,缺省VLAN不一定是端口允许通过的VLAN。

  只有使用命令port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }允许缺省VLAN数据通过,才能转发缺省VLAN的数据帧交换机的所有端口默认允许VLAN1的数据通过。

   

 

  Step 2:配置验证

  执行display vlan命令可以查看修改后的配置。TG表明该端口在转发对应VLAN的数据帧时,不会剥离标签,直接进行转发该端口可以是Trunk端口或带标签的Hybrid端口。

   

 

   

 

  分别用主机A访问主机D,主机C访问主机E,访问成功。

   

 

   

 

  对SWA的G0/0/4端口进行抓包分析。

  当使用VLAN 10的主机A访问同为VLAN 10的主机D时,G0/0/4抓取到报文:

   

  可以看到打上VLAN标签(Tag)为10的报文。

 

  同理,使用VLAN 20的主机C访问VLAN 20的主机E时,G0/0/4也可以抓取到报文:

   

 

  本示例中可以证明,SWA和SWB在G0/0/4转发VLAN 10和VLAN 20的报文时,由于与PVID不相同,所以不剥离标签,直接转发。

 

  Tips:附加的小问题

  若使用VLAN 10的主机A访问VLAN 20的主机E,抓取SWA的G0/0/4的数据包会发生什么呢?

  由于主机A并不知道主机E的MAC地址,所以会发送一个ARP Request报文广播出去询问主机E。这个ARP Request会在SWA的G0/0/1端口打上VLAN 10的标签,到达G0/0/4端口时,在不剥离标签的情况下转发。到达SWB时保留VLAN 10标签,由于Access端口规定,只发送VLAN标签与自己的PVID一致的报文

   

  我们可以知道,SWB连接主机E的G0/0/2的PVID应为20,与发送来的ARP Request的报文的VLAN标签(为10)不一致,因为会丢弃该ARP报文。那么主机A就无法访问到处于不同VLAN的主机E了。

  就是因为这个原理,VLAN可以隔离广播域,从而减少广播流量而消耗的带宽,也保证了网络中一定程度上的信息安全。

 

 

 

  端口类型 -- Hybrid

  Hybrid端口既可以连接主机,又可以连接交换机

  Hybrid端口可以以Tagged 或Untagged方式加入VLAN 。

   

  Access端口发往其他设备的报文,都是Untagged数据帧,而Trunk端口仅在一种特定情况下才能发出untagged数据帧,其它情况发出的都是Tagged数据帧。

  Hybrid端口是交换机上既可以连接用户主机,又可以连接其他交换机的端口Hybrid端口既可以连接接入链路又可以连接干道链路。Hybrid端口允许多个VLAN的帧通过,并可以在出端口方向将某些VLAN帧的Tag剥掉华为设备默认的端口类型是Hybrid

  在本示例中,要求主机A和主机B都能访问服务器,但是它们之间不能互相访问。此时交换机连接主机和服务器的端口,以及交换机互连的端口都配置为Hybrid类型。交换机连接主机A的端口的PVID是10,连接主机B的端口的PVID是20,连接服务器的端口的PVID是100。

 

  (一)Hybrid端口基本原理

  Hybrid端口收发数据帧的规则如下:

  ①当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文

  ②当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文

  ③Hybrid端口发送数据帧时,将检查该接口是否允许该VLAN数据帧通过。如果允许通过,则可以通过命令配置发送时是否携带Tag

 

  配置port hybrid tagged vlan vlan-id命令后,接口发送该vlan-id的数据帧时,不剥离帧中的VLAN Tag,直接发送。该命令一般配置在连接交换机的端口上。

  配置port hybrid untagged vlan vlan-id命令后,接口在发送vlan-id的数据帧时,会将帧中的VLAN Tag剥离掉再发送出去。该命令一般配置在连接主机的端口上。

 

  (二)示例解释和配置方法

  本例介绍了主机A和主机B发送数据给服务器的情况。为了更清楚解释数据传输途中VLAN Tag的添加与剥离情况,将解释和配置方法放在一起介绍。

  Step 1:将两台交换机的所有端口的端口类型声明为Hybrid类型。(注:主机的基本配置,交换机的创建VLAN均已省略)

  命令:port link-type hybrid

  将端口的类型配置为Hybrid

   

  其他端口配置方法相同,故省略。

  默认情况下,华为系列交换机的端口类型是Hybrid。因此,只有在把Access口或Trunk口配置成Hybrid时,才需要执行此命令。

 

  

  Step 2:为交换机SWA和SWB各端口配置PVID。

  按照拓扑图,应为交换机SWA的G0/0/1配置PVID为10,G0/0/2配置为20;SWB的G0/0/1配置为100。

   

 

 

   

 

 

   

 

 

 

 

  Step 3:在交换机连接主机的端口配置Untagged的方式允许指定VLAN通过

  命令:port hybrid untagged vlan{ { vlan-id1 [ to vlan-id2 ] } | all }

  用来配置允许哪些VLAN的数据帧以Untagged方式通过该端口

 

  (1)主机A可以访问服务器,不能访问主机B。

  在SWA连接主机A的端口G0/0/1上配置允许VLAN 10和VLAN 100的数据帧报文以Untagged的形式通过。VLAN 10和VLAN 100的数据帧在通过该端口时都不携带标签

   

 

  (2)主机B可以访问服务器,不能访问主机A。

  在SWA连接主机B的端口G0/0/2上配置允许VLAN 20和VLAN 100的数据帧报文以Untagged的形式通过。VLAN 20和VLAN 100的数据帧在通过该端口时都不携带标签

   

 

  (3)服务器可以同时被主机A和主机B访问。

  在SWB连接服务器的端口G0/0/1上配置允许VLAN 10,VLAN 20和VLAN 100的数据帧报文以Untagged的形式通过。VLAN 10,VLAN 20和VLAN100的数据帧在通过该端口时都不携带标签

   

 

 

  Step 4:在交换机连接交换机的端口配置Tagged的方式指定VLAN通过

  命令:port hybrid tagged vlan{ { vlan-id1 [ to vlan-id2 ] } | all }

  用来配置允许哪些VLAN的数据帧以Tagged方式通过该端口

 

  在交换机SWA和SWB连接的端口G0/0/3上配置允许VLAN 10,20和100的数据帧报文以Tagged的形式通过。VLAN 10,20和100的数据帧在通过该端口时都携带标签

   

 

 

   

  到此,所有配置完成。

 

 

  Step 5:示例解析

  配置方法介绍完成之后,我们开始解析数据帧报文在局域网中的转发过程(对应配置方法的步骤):

  当主机A(VLAN 10)访问服务器(VLAN 100)时:

 

  (1)数据帧从主机A -》交换机SWA

  主机A发送出来的数据帧不带VLAN Tag。所以交换机SWA接收到该数据帧时,会按照(Step2)配置为该数据帧打上端口的PVID 10。然后查看(Step 3)配置的允许VLAN 10通过,则接收此数据帧并转发。

 

  (2)数据帧从交换机SWA -》 交换机SWB

  交换机SWA通过端口G0/0/3向交换机SWB发送带VLAN 10标签的数据帧。查看(Step 4)配置的允许VLAN 10以携带标签的形式通过端口,则不剥离标签转发数据帧。

  交换机SWB接收到该数据帧后,查看(Step 4)配置的允许VLAN 10以携带标签的形式通过端口,则也不剥离标签转发数据帧。

  下图验证数据帧是以携带VLAN 10标签的情况下从SWA转发到SWB的。

   

 

  (3)数据帧从交换机SWB -》 服务器

  交换机SWB将带有VLAN 10标签的数据帧通过端口G0/0/1发送给服务器,查看(Step 3)配置的允许VLAN 10以不携带标签的形式通过端口,则剥离标签转发数据帧给服务器。

  同理,属于VLAN 20的主机B访问服务器也相同,故省略。

 

  Tips:解答一些额外的问题。

  ①VLAN 10的主机A会将数据帧发送到VLAN 20的主机B吗?

  其实这个问题在上面介绍Trunk端口时也提到过,由于主机A发送的ARP Request报文也会打上VLAN 10的标签,所以不会发送给PVID为20的端口。

  ②访问是双向的,主机A访问服务器,势必说明服务器会回复一个数据帧给主机A,那么这个数据帧又是如何打VLAN标签的呢?

  根据配置可以知道,服务器向主机A回复的数据帧,会根据SWB的端口G0/0/1的PVID打上100的标签,该标签会在SWA的G0/0/1端口剥离并转发给主机A。

 

 

  Step 6:配置验证

  主机A可以访问服务器,不能访问主机B:

   

 

 

 

  同样的,主机B能访问服务器,不能访问主机A:

   

 

 

  说明实验成功。

 

  下一节笔记会介绍VLAN的划分方法和Voice VLAN。敬请期待。

  

 

  

 

 

posted @ 2021-05-08 00:20  若水一瓢  阅读(2203)  评论(0编辑  收藏  举报