前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >真心求问:怎么避免子网划分造成的IP地址浪费?

真心求问:怎么避免子网划分造成的IP地址浪费?

作者头像
网络工程师笔记
发布2021-05-17 14:18:05
8130
发布2021-05-17 14:18:05
举报
文章被收录于专栏:网络工程师笔记

交换网络中,VLAN技术以其对广播域的灵活控制和部署方便而得到了广泛的应用。

但是在一般的三层交换机中,通常是采用一个VLAN对应一个VLANIF接口的方式实现广播域之间的互通,这在某些情况下导致了IP地址的浪费。

因为一个VLAN对应的子网中,子网号、子网定向广播地址、子网缺省网关地址不能用作VLAN内的主机IP地址,且子网中实际接入的主机可能少于编址数,多出来的IP地址也会因不能再被其他VLAN使用而被浪费掉。

例如,如图所示的VLAN规划中,VLAN2预计未来有10个主机地址的需求,但按编址方式,至少需要给其分配一个掩码长度是28的子网10.1.1.0/28,其中10.1.1.0为子网号,10.1.1.15为子网定向广播地址,10.1.1.1为子网缺省网关地址,这三个地址都不能用作主机地址,剩下范围在10.1.1.2~10.1.1.14的地址可以被主机使用,共13个。

这样,VLAN2子网至少浪费3个IP地址,三个VLAN子网一起至少浪费9个IP地址。同时,VLAN2子网实际地址需求只有10个,剩余的3个也不能再被其他VLAN使用。网络中的VLAN越多,浪费的IP地址也就越多。

为了解决上述问题,VLAN聚合应运而生。它通过引入Super-VLAN和Sub-VLAN的概念,使每个Sub-VLAN对应一个广播域,并让多个Sub-VLAN和一个Super-VLAN关联,只给Super-VLAN分配一个IP子网,所有Sub-VLAN都使用Super-VLAN的IP子网和缺省网关进行三层通信。

这样,多个Sub-VLAN共享一个网关地址,节约了子网号、子网定向广播地址、子网缺省网关地址,且各Sub-VLAN间的界线也不再是从前的子网界线了,它们可以根据各自主机的需求数目在Super-VLAN对应子网内灵活的划分地址范围,从而即保证了各个Sub-VLAN作为一个独立广播域实现广播隔离,又节省了IP地址资源,提高了编址的灵活性。

VLAN聚合

VLAN聚合通过定义Super-VLAN和Sub-VLAN,使Sub-VLAN只包含物理接口,负责保留各自独立的广播域;Super-VLAN不包含物理接口,只用来建立三层VLANIF接口。

然后再通过建立Super-VLAN和Sub-VLAN间的映射关系,把三层VLANIF接口和物理接口两部分有机的结合起来,实现所有Sub-VLAN共用一个网关与外部网络通信,并用ProxyARP实现Sub-VLAN间的三层通信,从而在实现普通VLAN的隔离广播域的同时,达到节省IP地址的目的。

工作原理

相对每一个普通VLAN都有一个三层逻辑接口和若干物理接口,VLAN聚合定义的Super-VLAN和Sub-VLAN比较特殊:

•Sub-VLAN:只包含物理接口,不能建立三层VLANIF接口,用于隔离广播域。每个Sub-VLAN内的主机与外部的三层通信是靠Super-VLAN的三层VLANIF接口来实现的。

•Super-VLAN:只建立三层VLANIF接口,不包含物理接口,与子网网关对应。与普通VLAN不同的是,它的VLANIF接口的Up不依赖于自身物理接口的Up,而是只要它所含Sub-VLAN中存在Up的物理接口就Up。

一个Super-VLAN可以包含一个或多个Sub-VLAN。Sub-VLAN不再占用一个独立的子网网段。在同一个Super-VLAN中,无论主机属于哪一个Sub-VLAN,它的IP地址都在Super-VLAN对应的子网网段内。

这样,Sub-VLAN间共用同一个网关,既减少了一部分子网号、子网缺省网关地址和子网定向广播地址的消耗,又实现了不同广播域使用同一子网网段地址的目的,消除了子网差异,增加了编址的灵活性,减少了闲置地址浪费。

按照VLAN聚合的实现方式,令VLAN10为Super-VLAN,分配子网10.1.1.0/24,VLAN2~VLAN4作为Super-VLAN10的Sub-VLAN,如上图所示。

可以看出,Sub-VLAN2、Sub-VLAN3和Sub-VLAN4共用一个子网10.1.1.0/24,这样,该网络中就只有一个子网号10.1.1.0、一个子网缺省网关地址10.1.1.1和一个子网定向广播地址10.1.1.255共三个IP地址不能被主机使用,其余都可以被主机使用。

而且,各Sub-VLAN间的界线也不再是从前的子网界线了,它们可以根据其各自主机的需求数目在Super-VLAN对应子网内灵活的划分地址范围,比如Sub-VLAN2实际需要10个,就给它分配10.1.1.2~10.1.1.11的地址段。

Sub-VLAN之间的通信

VLAN聚合在实现不同VLAN共用同一子网网段地址的同时,也给Sub-VLAN间的三层转发带来了问题。

普通VLAN中,不同VLAN内的主机可以通过各自不同的网关进行三层互通。但是Super-VLAN中,所有Sub-VLAN内的主机使用的是同一个网段的地址,共用同一个网关地址,主机只会做二层转发,而不会送网关进行三层转发。

即实际上,不同Sub-VLAN的主机在二层是相互隔离的,这就造成了Sub-VLAN间无法通信的问题。

解决这一问题的方法就是使用ProxyARP。

假设Sub-VLAN2内的主机Host_1与Sub-VLAN3内的主机Host_2要通信,在Super-VLAN10的VLANIF接口上启用ProxyARP,如图所示。

Host_1与Host_2的通信过程如下(假设Host_1的ARP表中无Host_2的对应表项):

1.Host_1将Host_2的IP地址(10.1.1.12)和自己所在网段10.1.1.0/24进行比较,发现Host_2和自己在同一个子网,但是Host_1的ARP表中无Host_2的对应表项。

2.Host_1发送ARP广播报文,请求Host_2的MAC地址,目的IP为10.1.1.12。

3.网关L3Switch收到Host_1的ARP请求,由于网关上使能Sub-VLAN间的ProxyARP,开始使用报文中的目的IP地址在路由表中查找,发现匹配了一条路由,下一跳为直连网段(VLANIF10的10.1.1.0/24),VLANIF10对应Super-VLAN10,则向Super-VLAN10的所有Sub-VLAN接口发送一个ARP广播,请求Host_2的MAC地址。

4.Host_2收到网关发送的ARP广播后,对此请求进行ARP应答。

5.网关收到Host_2的应答后,就把自己的MAC地址回应给Host_1。

6.Host_1之后要发给Host_2的报文都先发送给网关,由网关做三层转发。

Sub-VLAN与其他网络的三层通信

以下图所示组网为例,介绍Sub-VLAN内主机与其他网络内的主机间通信过程。

用户主机与服务器处于不同的网段中,Switch_1上配置了Sub-VLAN2、Sub-VLAN3、Super-VLAN4和VLAN10,Switch_2上配置了VLAN10和VLAN20。

假设Sub-VLAN2下的主机Host_1想访问与Switch_2相连的Server,报文转发流程如下(假设Switch_1上已配置了去往10.1.2.0/24网段的路由,Switch_2上已配置了去往10.1.1.0/24网段的路由,但两交换机没有任何三层转发表项):

1.Host_1将Server的IP地址(10.1.2.2)和自己所在网段10.1.1.0/24进行比较,发现和自己不在同一个子网,发送ARP请求给自己的网关,请求网关的MAC地址,目的MAC为全F,目的IP为10.1.1.1。

2.Switch_1收到该请求报文后,查找Sub-VLAN和Super-VLAN的对应关系,知道应该回应Super-VLAN4对应的VLANIF4的MAC地址,并知道从Sub-VLAN2的接口回应给Host_1。

3.Host_1学习到网关的MAC地址后,开始发送目的MAC为Super-VLAN4对应的VLANIF4的MAC地址、目的IP为10.1.2.2的报文。

4.Switch_1收到该报文后,根据Sub-VLAN和Super-VLAN的对应关系以及目的MAC判断进行三层转发,查三层转发表项没有找到匹配项,上送CPU查找路由表,得到下一跳地址为10.1.10.2,出接口为VLANIF10,并通过ARP表项和MAC表项确定出接口,把报文发送给Switch_2。

5.Switch_2根据正常的三层转发流程把报文发送给Server。

Server收到Host_1的报文后给Host_1回应,回应报文的目的IP为10.1.1.2,目的MAC为Switch_2上VLANIF20接口的MAC地址,回应报文的转发流程如下:

⚡Server给Host_1的回应报文按照正常的三层转发流程到达Switch_1。到达Switch_1时,报文的目的MAC地址为Switch_1上VLANIF10接口的MAC地址。

⚡Switch_1收到该报文后根据目的MAC地址判断进行三层转发,查三层转发表项没有找到匹配项,上送CPU,CPU查路由表,发现目的IP为10.1.1.2对应的出接口为VLANIF4,查找Sub-VLAN和Super-VLAN的对应关系,并通过ARP表项和MAC表项,知道报文应该从Sub-VLAN2的接口发送给Host_1。

⚡回应报文到达Host_1。

Sub-VLAN与其他设备的二层通信

Switch_1上配置了Sub-VLAN2、Sub-VLAN3和Super-VLAN4,Switch_1的IF_1和IF_2配置为Access接口,IF_3接口配置为Trunk接口,并允许VLAN2和VLAN3通过;

Switch_2连接Switch_1的接口配置为Trunk接口,并允许VLAN2和VLAN3通过。

从Host_1进入Switch_1的报文会被打上VLAN2的Tag。在Switch_1中这个Tag不会因为VLAN2是VLAN4的Sub-VLAN而变为VLAN4的Tag。

该报文从Switch_1的Trunk接口IF_3出去时,依然是携带VLAN2的Tag。

也就是说,Switch_1本身不会发出VLAN4的报文。就算其他设备有VLAN4的报文发送到该设备上,这些报文也会因为Switch_1上没有VLAN4对应的物理接口而被丢弃。

因为Switch_1的IF_3接口上根本就不允许Super-VLAN4通过。对于其他设备而言,有效的VLAN只有Sub-VLAN2和Sub-VLAN3,所有的报文都是在这些VLAN中交互的。

这样,Switch_1上虽然配置了VLAN聚合,但与其他设备的二层通信,不会涉及到Super-VLAN,与正常的二层通信流程一样,此处不再赘述。

配置VLAN聚合示例

组网需求

某公司拥有多个部门且位于同一网段,为了提升业务安全性,将不同部门的用户划分到不同VLAN中,如图1所示,VLAN2和VLAN3属于不同部门。

各部门均有访问Internet需求,同时由于业务需要,不同部门间的用户需要互通。

配置思路

可以在SwitchB上部署VLAN聚合,将不同部门的VLAN聚合到SuperVLAN中,这样,不同部门的用户可通过SuperVLAN访问Internet。

同时,为使部门间用户互通,在SuperVLAN上部署ProxyARP功能。采用如下思路配置VLAN聚合:

1.在SwitchA和SwitchB上配置VLAN和接口,将不同部门用户划分到不同VLAN中,并透传各VLAN到SwitchB。

2.在SwitchB上配置Super-VLAN及其对应的VLANIF接口、上行路由,使不同部门的用户能够访问Internet。

3.在SwitchB上启用Super-VLAN的ProxyARP功能,使不同部门的用户间三层互通。

操作步骤

1.配置VLAN和接口,将不同部门用户划分到不同VLAN中,并透传各VLAN到SwitchB。

a.配置SwitchA

#配置接口GE0/0/1为Access类型。接口GE0/0/2、GE0/0/3、GE0/0/4的配置与GE0/0/1类似,不再赘述。

<HUAWEI>system-view

[HUAWEI]sysname SwitchA

[SwitchA]interface gigabitethernet 0/0/1

[SwitchA-GigabitEthernet0/0/1]port link-type access

[SwitchA-GigabitEthernet0/0/1]quit

#创建VLAN2并向VLAN2中加入GE0/0/1和GE0/0/2。

[SwitchA]vlan 2

[SwitchA-vlan2]port gigabitethernet 0/0/1 0/0/2

[SwitchA-vlan2]quit

#创建VLAN3并向VLAN3中加入GE0/0/3和GE0/0/4。

[SwitchA]vlan 3

[SwitchA-vlan3]port gigabitethernet 0/0/3 0/0/4

[SwitchA-vlan3]quit

#配置SwitchA连接SwitchB的接口,透传VLAN2和VLAN3到SwitchB。

[SwitchA]interface gigabitethernet 0/0/5

[SwitchA-GigabitEthernet0/0/5]port link-type trunk

[SwitchA-GigabitEthernet0/0/5]port trunk allow-pass vlan 2 3

[SwitchA-GigabitEthernet0/0/5]quit

b.配置SwitchB

#创建VLAN2、VLAN3、VLAN4、VLAN10,并配置SwitchB连接SwitchA的接口,使VLAN2和VLAN3透传到SwitchB。

<HUAWEI>system-view

[HUAWEI]sysname SwitchB

[SwitchB]vlan batch 2 3 4 10

[SwitchB]interface gigabitethernet 0/0/5

[SwitchB-GigabitEthernet0/0/5]port link-type trunk

[SwitchB-GigabitEthernet0/0/5]port trunk allow-pass vlan 2 3

[SwitchB-GigabitEthernet0/0/5]quit

2.配置Super-VLAN及其对应的VLANIF接口

#在SwitchB上配置Super-VLAN4,并将VLAN2、VLAN3加入到Super-VLAN4,作为其Sub-VLAN。

[SwitchB]vlan 4

[SwitchB-vlan4]aggregate-vlan

[SwitchB-vlan4]access-vlan 2 to 3

[SwitchB-vlan4]quit

#创建并配置VLANIF4,使不同部门的用户可通过Super-VLAN4访问Internet。

[SwitchB]interface vlanif 4

[SwitchB-Vlanif4]ip address 10.1.1.1 255.255.255.0

[SwitchB-Vlanif4]quit

3.配置上行路由

#在SwitchB上配置上行接口GE0/0/1,透传SwitchB与出口网关Router的互联VLAN。

[SwitchB]interface gigabitethernet 0/0/1

[SwitchB-GigabitEthernet0/0/1]port link-type trunk

[SwitchB-GigabitEthernet0/0/1]port trunk allow-pass vlan 10

[SwitchB-GigabitEthernet0/0/1]quit

#创建并配置VLANIF10,指定其IP地址为SwitchB与出口网关Router对接的IP地址。

[SwitchB]interface vlanif 10

[SwitchB-Vlanif10]ip address 10.10.1.1 255.255.255.0

[SwitchB-Vlanif10]quit

#在SwitchB上配置一条到出口网关Router的缺省静态路由,使用户能够访问Internet。

[SwitchB]ip route-static 0.0.0.0 0.0.0.0 10.10.1.2

说明:

还需要在出口网关Router上配置其与SwitchB对接的接口,指定其IP地址为10.10.1.2.

4.配置用户IP地址

分别为各用户配置IP地址,并使它们和VLAN4处于同一网段。

配置成功后,各部门用户可以访问Internet,但VLAN2的用户与VLAN3的用户间不可以相互Ping通。

5.配置ProxyARP

#在SwitchB的Super-VLAN4下配置ProxyARP,使不同部门的用户间三层互通。

[SwitchB]interface vlanif 4

[SwitchB-Vlanif4]arp-proxy inter-sub-vlan-proxy enable

[SwitchB-Vlanif4]quit

6.验证配置结果

配置完成后,VLAN2的用户与VLAN3的用户可以相互Ping通,且都可以访问Internet。

---END---

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络工程师笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ---END---
相关产品与服务
业务风险情报
业务风险情报(Business Risk Intelligence,BRI)为您提供全面、实时、精准的业务风险情报服务。通过简单的 API 接入,您即可获取业务中 IP、号码、APP、URL 等的画像数据,对其风险进行精确评估,做到对业务风险、黑产攻击实时感知、评估、应对、止损。您也可利用业务风险情报服务搭建或完善自身的风控体系,补充自身风险情报数据,提升对风险的感知、应对能力。BRI 支持按需付费,您可根据您的需求,选取不同的套餐,更易优化成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档