分享

【干货】作为网工人必须掌握的核心技能——VLAN间路由选择

 网络工程师老杨 2021-08-05

VLAN间路由选择



同一个VLAN中的主机位于同一个广播域中,可自由地通信。VLAN在OSI模型的第2层划分网络和隔离数据流;正如前面解释为何仍需要路由器时说的,如果要让不同VLAN中的主机(或其他有IP地址的设备)能够彼此通信,就必须使用第3层设备来提供路由选择功能。

为此,可使用能为每个VLAN提供一个接口的路由器,也可使用支持ISL或802.1Q的路由器。在支持ISL或802.1Q的路由器中,最便宜的是2600系列路由器(你只能从二手设备经销商那里购买,因为它们已经停产了)。1600、1700和2500系列路由器不支持ISL或802.1Q。笔者建议至少使用2800系列路由器,它只支持802.1Q-思科正逐渐放弃 ISL,因此你可能应该只使用802.1Q ( 2800系列路由器安装的部分IOS可能支持ISL和802.1Q,但笔者没有见过)。

如图11-7所示,如果只有两三个VLAN,则可使用带两三个快速以太网接口的路由器。对家庭用户来说,10 BaseT是可行的,但对于其他用户,建议使用快速以太网接口或吉比特以太网接口。

在图11-7中,每个路由器接口都连接了一条接人链路,这意昧着每个路由器接口的IP地址都将成为相应VLAN中每台主机的默认网关地址。

如果VLAN数量比路由器接口多,可在一个快速以太网接口上配置中继,也可购买一台第3层交换机,如Cisco 3560交换机或诸如6500等高端交换机。也可不给每个VLAN提供-个路由器接口,而只使用一个快速以太网接口,并在该接口上运行中继协议ISL或802.1Q,如图11-8 所示。这让所有VLAN都通过一个接口进行通信,思科称之为“单臂路由器”。

需要指出的是,这导致了潜在的瓶颈和单点故障,因此必须限制主机VLAN数量。那么多少合适呢?这取决于流量。要让设计真正合理,最好使用高端交换机并在背板( backplane )上进行路由选择,但如果只有一-台路由器可用,这样做不需要额外的费用。

配置VLAN



配置VLAN实际上非常容易,这可能让你感到惊讶。确定要在每个VLAN中包含哪些用户并不容易,需要耗费大量的时间。但确定要创建多少个VLAN以及每个VLAN都包含哪些用户后,就可开始创建第一个VLAN了。

要在思科Catalyst交换机上配置VLAN,可使用全局配置命令v1an。下面的示例演示了如何在交换机SI上配置VLAN_为 3个不同的部门创建了3个VLAN (别忘了,默认情况下,VLAN 1为本机VLAN和管理VLAN ):

从上述代码可知,可以创建编号为2~ 4094的VLAN,但这不完全正确。前面说过,实际上可使用的最大VLAN编号为1005,且不能使用、修改、重命名或删除VLAN 1以及VLAN 1002~ 1005,因为它们被预留。编号大于1005的VLAN称为扩展VLAN,除非交换机处于VTP透明模式,否则它们不会保存到数据库中;在生产环境中,使用这些VLAN编号的情况不常见。在下面的示例中,笔者试图在处于VTP服务器模式(默认VTP模式)的交换机SI上创建VLAN 4000:

创建所需的VLAN后,可使用命令show v1an查看它们,但注意,交换机的所有端口默认都属于VLAN 1。要调整端口所属的VLAN,需要对每个接口进行配置,指定它所属的VLAN。

注意:VLAN创建后,除非给它分配交换机端口,否则不会被使用。默认情况下,所有端口都属于VLAN 1。

创建VLAN后,可使用show vlan (简写为sh vlan) 查看配置:

这看似多余,但很重要,还需牢记的是,不能修改、删除或重命名VLAN 1,因为它是默认VLAN,不能修改。它还是所有交换机的默认本机VLAN,思科建议将其用作管理VLAN。基本上,没有显式地分配到特定VLAN的端口都属于本机VLAN (VLAN 1)。

从交换机S1的上述输出可知,端口Fa0/3 ~ Fa0/8以及上行链路Gi0/1都属于VLAN 1,但端口1和2到哪里去了呢?还记得吗,前-章创建了一个以太信道束,所有中继端口都不会出现在VLAN数据库中,要查看中继端口,必须使用命令show interface trunk。

确定VLAN已创建后,便可将交换机端口分配给VLAN了。每个端口都只能属于一个VLAN,但语音接口端口除外。通过使用前面介绍的中继技术,可让端口为所有VLAN传输数据流,这将在后面介绍。

将交换机端口分配给VLAN



要指定端口所属的VLAN,可指定其接口模式(这决定了它将传输哪种类型的数据流)以及所属VLAN的编号。要将交换机端口分配给特定VLAN (接入端口),可使用接口命名swi tchport;要同时配置多个端口,可使用命令interface range。

前面说过,可将端口配置为静态或动态的,但本书只介绍静态端口。接下来,我将把接口Fa0/3分配给VLAN3,该接口将交换机S1连接到主机A:

在上述输出中,有一些新内容。其中显示了各种命令一有 些介绍过,也有你没见过的,但不用担心,稍后将介绍access、mode. nonegotiate. trunk和voice。下面首先将交换机S1的一个端口设置为接人端口,在配置了VLAN的生产环境中,这可能是使用最广泛的端口类型:

这里首先使用了命令swi tchport mode access, 它告诉交换机这是-一个非中继第2层端口。接下来,使用命令switchport access 将端口分配给个VLAN。别忘了,要同时配置多个端口,可使用命令interface range。

这就指定了端口所属的VLAN,但如果此时将设备连接到VLAN端口,它们将只能与同一个VLAN内的设备通信。下面将启用VLAN间通信,但在此之前,我们先来更详细地介绍一下中继。

配置中继端口



2960交换机只支持IEEE 802.1Q封装方法。要将快速以太网接口配置为中继端口,可使用接口命令switchport mode trunk。在3560交换机上,配置方法稍有不同。下面的示例将接口fa0/8 配置成了中继端口:

S1#config t

S1(config)#int fa0/8

S1(config-if)#switchport mode trunk

配置交换机接口时,可使用的选项如下所示。

  • switchport mode access, 它将接口(接入端口)设置为永久非中继模式,并通过协商将链路设置为非中继链路。无论链路另-端的接 口是否是中继接口,该接口都将成为非中继接口,即专用的第2层接入端口。

  • switchport mode dynamic auto 这种模式让接口能够将链路转换为中继链路。如果邻接接口为trunk或desirable模式,该接口将成为中继接口。当前,默认模式为dymamic auto。

  • switchport mode dynamic desirable 这让接口尽力将链路转换为中继链路。如果邻接接口的模式为trunk、desirable 或auto,该接口将成为中继接口。这是以前一些交换机采用的默认模式,但现在不是这样了。在所有新的思科交换机中,所有以太网接口都默认采用这种模式。

  • switchport mode trunk 将接口设置为永久中继模式,并通过协商将邻接链路转换为中继链路。即使邻接接口不是中继接口,该接口也将成为中继接口。

  • switchport nonegotiate 禁止接口生成DTP帧。仅当接口处于access 或trunk模式时,才能使用该命令。在这种情况下,要建立中继链路,必须手工将邻接接口配置为中继接口。

注意:

动态中继协议(DTP)用于在两台设备之间协商链路的模式以及封装类型(802.1Q还是ISL)。在不希望中继端口进行协商时,笔者使用命令nonegotiate。

要在接口,上禁用中继,可使用命令swi tchport mode access,它将端口恢复为专用的第2层接人端口。

  1. 在思科Catalyst 3560交换机上配中继

下面来看另一种交换机——思科 Catalyst 3560。配置与2960交换机几乎相同,但3560交换机提供了第3层服务,而2960交换机没有。另外,3560交换机支持中继封装方法ISL和IEEE 802.1Q,而2960交换机只支持802.1Q。下面简要地介绍如何在3560交换机上配置封装方法,以及与2960的差异。

3560交换机支持命令encapsulation,而2960交换机不支持:

你可以看到,在3560交换机上,需要将端口的封装方法指定为IEEE 802.1Q (dot1q)或ISL。设置封装方法后,还必须将接口模式设置为中继。坦率地说,现在很少使用封装方法ISL了。思科正逐渐放弃ISL,其新路由器甚至不支持ISL。

      2.指定中继端口支持的VLAN

前面说过,默认情况下,中继端口发送和接收来自所有VLAN的信息,并将未标记的帧发送到管理VLAN。这也适用于扩展VLAN。

然而,可将某些VLAN排除在外,禁止其数据流通过中继链路进行传输,如下所示:

上述代码影响在S1的端口f0/1上配置的中继链路,导致它丢弃来自VLAN4的数据流。可以尝试将VLAN 1排除在外,但中继链路仍将接收和发送管理数据流,如CDP、PAgP、LACP、DTP和VTP。

要将特定范围内的VLAN排除在外,可使用连字符:

S1(config-1 f)#switchport trunk allowed v1an remove 4-8

将VLAN排除在外后,要恢复到默认设置,可使用下述命令:

S1(config-if)#switchport trunk allowed vlan a11

也可使用如下命令:

S1(config-if)tno swi tchport trunk a1lowed vlan

下面介绍如何配置中继端口的本机VLAN,然后启用VLAN间路由选择。

3.修改中继端口的本机VLAN

实际上,不需要修改中继端口的本机VLAN,但可以这样做,有些人处于安全考虑而这样做。要修改本机VLAN,可使用如下命令: 

将中继端口的本地VLAN改为VLAN 40后,使用命令show running-cofig查看该中继接口的配置:

别忘了邻接端口需要相互配合!你不会认为事情会如此简单吧?确实不会如此简单。如果中继链路两端的交换机端口的本机VLAN不同,将出现如下错误:

这是清晰而有帮助的错误。为消除这种错误,要么修改中继链路另一端的本机VLAN,要么将当前端口的本机VLAN恢复到默认设置。这里采取第二种方式:

S1(config-if)#no switchport trunk native vlan

这样,当前中继端口将把VLAN 1用作本机VLAN。请记住,中继链路两端的本机VLAN必须相同,否则将导致严重问题。下面在交换型网络中添加一台路由器, 并配置VLAN间通信。

配置 VLAN间路由选择



默认情况下,只有属于同一个VLAN的主机才能相互通信。要改变这种状况,允许进行VLAN间通信,需要路由器或第3层交换机。这里介绍使用路由器的方式。

为在快速以太网接口,上支持ISL或802.1Q,将这种接口分成了多个逻辑接口——每个VLAN一个。这些逻辑接口被称为子接口。

要在快速以太网接口或吉比特以太网接口上启用中继,可使用命令encapsulation:

注意到笔者的2811路由器(名为ISR)只支持802.1Q。要使用ISL封装,需要购买较老的路由器,但为何要如此麻烦呢?

子接口号只有逻辑意义,因此使用什么样的编号无关紧要。由于子接口号只用于管理目的,笔者在大多数情况下都使用要路由的VLAN的编号,这将方便记忆。

每个VLAN都是一个独立的子网,明白这一点很重要。最好将VLAN配置为独立的子网,虽然并非必须这样。

现在,需要确保你为配置VLAN间路由选择和确定主机IP地址作好了充分准备。与往常一样,最好能够在问题出现时修复它们。为确保你成功,来看几个示例。首先,请看图11-9并阅读其中的路由器和交换机配置。学习到本书的这部分内容,你应该能够指出VLAN中所有主机的IP地址、掩码和默认网关了。

接下来需要确定使用哪些子网。从图中显示的路由器配置可知, VLAN 1使用子网192.168.1.64/26,而VLAN 10使用子网192.168.1.128/27。从交换机配置可知,端口2和3属于VLAN 1,而端口4属于VLAN10。这意味着主机A和B属于VLAN1,而主机C属于VLAN10。

主机应使用的IP地址如下。

  • 主机A:

    IP地址为192.168.1.66 ( 255.255.255.192); 默认网关192.168.1.65

  • 主机B:

    IP地址为192.168.1.67 ( 55.255.255.192 );默认网关为192.168.1.65

  • 主机C:

    IP地址为192.168.1.130 ( 255.255.255.224); 默认网关为192.168.1.129

主机可使用正确范围内的任何地址,笔者选择的是默认网关地址后面的第一个可用IP地址。这不太难,不是吗?

现在继续以图11-9 为例,介绍配置交换机端口1,使其建立一条到路由器的链路,并使用封装方法IEEE 802.1Q支持VLAN间通信所需的命令。别忘了,根据使用的交换机类型,所需的命令可能有细微的差别。

就2960交换机而言,使用如下命令:

2960#config t

2960(config)#interface fa0/1

2960(config-if)#switchport mode trunk

我们知道,2960 交换机只支持封装方法802.1Q,因此不需要指定,也无法指定。对于3560交换机,配置基本相同,但由于它支持ISL和802.1Q,因而必须指定要使用的中继协议。

注意:别忘了,创建中继链路时,默认情况下所有VLAN都可通过它传输数据。

来看图11-10,看看从中能学到什么。在该图中,有3个VLAN,而每个VLAN都有两台主机。在图11-10 中,路由器连接的是交换机端口fa0/1, 而VLAN 2连接的是端口fa0/6。

思科要求根据该示意图知道如下几点:

  • 路由器通过子接口连接到交换机;

  • 与路由器相连的交换机端口为中继端口;

  • 与主机和集线器相连的交换机端口为接人端口,而不是中继端口。

该交换机的配置应类似于下面这样:

配置路由器前,需要设计逻辑网络。

  • VLAN 1: 192.168.10.16/28

  • VLAN2: 192.168.10.32/28

  • VLAN 3: 192.168.10.48/28

路由器的配置应类似于下面这样:

对于每个VLAN中的主机,都需要给它们分配相应子网中的地址,而默认网关为相应路由器子接口的IP地址。

再来看图11-11,看看你能否在不参考答案的情况下确定交换机和路由器的配置——可不要作弊!在该图中,一台路由器连接到了有两个VLAN的2960交换机,对于每个VLAN,都给其中的一台主机分配了IP地址。根据这些IP地址,如何配置路由器和交换机呢?

由于没有指出主机使用的子网掩码,因而必须根据每个VLAN包含的主机数确定块大小。VLAN 1有85台主机,而VLAN 2有115台主机,它们要求的块大小都是128, 即子网掩码为/25 (255.255.255.128 )。

你应该知道,它们应分别使用子网0和128。其中子网0 (VLAN 1)的主机地址范围为1~ 126,而子网128 ( VLAN 2)的主机地址范围为129~254。主机A的IP地址为126,这使它看起来像是与主机B属于同一个子网。但实际情况并非如此,你现在很聪明了,不会再受此蒙蔽了。

下面是交换机的配置:

下面是路由器的配置:

这里使用了VLAN 1的主机地址范围内的第一个地址以及VLAN 2的主机地址范围内的最后一个地址,但使用相应范围内的任何地址都可行,只需将主机的默认网关配置为相应的路由器地址即可。

介绍下一个示例前,需要确保你知道如何在交换机上设置IP地址。鉴于VLAN 1通常是管理VLAN,我们将使用该地址池中的一个IP地址。下面的示例演示了如何设置交换机的IP地址(我不想喋喋不休,但你应该确保自己知道如何设置);

2960#config t

2960(config)#int vlan 1

2960( config-if)#ip address 172.16.10.2 255.255.255.128

2960( config-if)#no shutdown

在VLAN接口上,必须配置命令no shutdown。

下面再介绍一个例子,然后讨论VTP——绝对需要掌握的另一个重要主题。在图11-12中,有两个VLAN。通过路由器的配置可知,主机A的IP地址、子网掩码和默认网关是什么呢?请将相应范围内的最后一个地址用于主机A。

如果仔细查看路由器(在这里,其主机名为Router)的配置,答案非常简单。两个子网的子网掩码都是/28,即255.255.255.240, 因此块大小为16。属于VLAN 1的路由器子接口的地址包含在子网128内,下一个子网为144,因此VLAN 1的广播地址为143,所以合法的主机地址范围为129 ~ 142。

因此主机A的配置如下所示。

  • IP地址: 192.168.10.142

  • 子网掩码: 255.255.255.240

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多