直连路由与非直连路由
直连路由:路由条目自动学习
非直连路由:需要配置静态路由或者运行动态路由选择协议
-
例如网络边界和出口路由就适合配置静态路由
-
动态路由选择协议:
RIP
、EIGRP
、OSPF
、IS-IS
、BGP
对于以下网络:
X----R1----R2----Y
-
R1的路由表中会有X网络的直连路由,R2的路由表中会有Y网络的直连路由,而R1有的直连路由R2未必有,R2有的直连路由R1未必有,这个时候在R1和R2之间通过运行动态路由选择协议,来互通有无,自动交换路由信息、计算最佳路径并更新各自路由表
-
在运行动态路由选择协议时,通过
Update
报文将路由发送给邻居路由器
AS(自治系统)
自治系统(AS) 是一个在单一、统一的技术管理策略下的一组路由器和管理域的集合。
- 可以把它想象成互联网世界的一个“主权国家”或“王国”,应用到实际中就可以理解为
一个AS就是一个园区
一个AS的典型特征:
- 统一的管理权:通常由一个独立的组织运营,例如:
- 互联网服务提供商(ISP,如中国电信、Comcast)
- 大型企业(如谷歌、微软、阿里巴巴)
- 大学或政府机构
- 大型数据中心运营商
- 内部使用统一的内部网关协议:在AS内部,使用像OSPF、EIGRP这样的IGP协议来路由数据。这相当于国家的“国内交通系统”(如高速公路、国道),负责将数据包高效地送达内部的任何网络。
- 对外使用统一的外部网关协议:一个AS通过BGP协议与外部其他的AS进行通信。这相当于国家之间的“外交和国际贸易政策”。AS会决定如何将数据发往外部网络,以及允许哪些外部数据流入。
- 拥有全球唯一的标识符:每个AS都有一个全球唯一的编号,称为
AS号
,由区域互联网注册机构分配。
按工作范围分类(最常用)
IGP(内部网关协议)
- 适用范围:一个AS内
- 包括的协议:RIP、EIGRP、OSPF、IS-IS
EGP(外部网关协议)
-
适用范围:多个AS之间
-
包括的协议:BGP
企业网和运营商(ISP)
通常企业园区不会购买AS号,主机都是配置的私有地址,需要在企业园区边界配置一条默认路由来实现企业园区内部设备访问运营商的公网服务,通常配置命令如下:ip route 0.0.0.0 0.0.0.0 <出接口> <下一跳地址>
,这就叫配置默认路由/缺省路由
按算法和工作原理分类(最核心)
DV距离矢量协议(听信传闻)
-
核心思想:“我不知道整个世界什么样,但我的邻居告诉我该往哪走。”
-
工作机制:只交换路由表
-
路由器从直连网络学到的距离是0。
-
它把自己的整个路由表(包含所有已知网络、度量值和下一跳)定期发给邻居。
-
邻居收到后,完全信任这个信息,只是把度量值(如跳数)加1,并将发送方设为下一跳。
-
这个过程像“传闻”一样在网络中扩散。
-
-
优点:简单易懂,配置管理方便。
-
缺点:收敛慢(网络变化需要较长时间才能稳定),易产生路由环路,跳数限制限制了网络规模。
-
典型代表:
- RIP: 使用跳数作为度量值,最大跳数为15,已基本淘汰。
- IGRP: Cisco私有协议,是EIGRP的前身,已淘汰。
有类与无类
距离矢量协议在交换路由表信息时,会涉及到四要素,分别为目的地址
、子网掩码
、下一跳地址
、度量值
- 但是是否包含子网掩码取决于它是有类的还是无类的。
- 有类距离矢量协议:不包含子网掩码
- 无类距离矢量协议:包含子网掩码
要素 | 有类DV (如 RIPv1) | 无类DV (如 RIPv2, EIGRP) | 说明 |
---|---|---|---|
目标网络地址 | ✅ 包含 | ✅ 包含 | 这是路由信息的基础 |
子网掩码 | ❌ 不包含 | ✅ 包含 | 这是有类和无类的根本区别 |
下一跳地址 | ✅ 包含(通常是发送更新的邻居地址) | ✅ 包含 | 指明数据包要发送给谁 |
度量值 | ✅ 包含(如跳数) | ✅ 包含(如跳数、复合度量值) | 用于判断路径的优劣 |
工作机制对比:
- RIPv1(有类)通告:(网络地址:192.168.1.0, 度量值: 2)
- 接收路由器需要自己猜测掩码。它根据IP地址的主类规则判断
192.168.1.0
是一个C类地址,因此应用**/24**的掩码。这在不连续子网或使用VLSM时会出问题。 - 示例: 当园区中进行子网划分后,例如192.168.1.0/26,因为使用有类距离矢量协议,交换路由表信息时不会传输子网掩码,路由器就会猜测掩码为
/24
,导致出现问题
- 接收路由器需要自己猜测掩码。它根据IP地址的主类规则判断
- RIPv2/EIGRP(无类)通告:(网络地址:192.168.1.0, 掩码: /26, 度量值: 2)
- 信息精确,不会产生歧义,完美支持VLSM和不连续网络。
FLSM定长子网掩码
FLSM 是子网划分的一种设计方法,它出现在有类路由时代,并解决了那个时代的核心问题。
- 解决有类路由协议的支持问题:
- FLSM要求整个网络体系使用相同的子网掩码。这对于RIPv1这类协议是必须的,因为它无法处理VLSM。所有子网掩码一致,路由器在接收路由更新时,无需知道精确掩码,只需应用统一的、预设的掩码即可,避免了歧义。
- FLSM的缺点(从而催生了VLSM):
- FLSM虽然解决了地址浪费,但解决得不彻底。在上面的例子中,每个部门分到62个地址,但实际只用了30个,每个子网仍然浪费了32个地址。VLSM(变长子网掩码)的出现,允许在一个主网内使用不同的掩码,可以按需分配,实现地址的极致利用,但这需要无类路由协议的支持。
VLSM变长子网掩码
VLSM的实现依赖于无类路由协议
- 无类路由协议(如RIPv2, OSPF, EIGRP, IS-IS): 在路由更新中精确携带子网掩码。因此,它们可以准确无误地传播VLSM划分的路由信息。
为什么需要VLSM?
✅解决FLSM的地址浪费问题
我们通过一个经典的例子来对比FLSM和VLSM。
场景需求:
一家公司有一个C类地址块 192.168.1.0/24
。需要为以下部门划分子网:
- 销售部: 需要60个IP地址。
- 市场部: 需要28个IP地址。
- 财务部: 需要12个IP地址。
- 点对点广域网链路: 需要2个IP地址(两端各一个)。
方案一:使用FLSM
- 确定子网大小: 要满足最大子网(销售部,60个IP)的需求,主机位需要至少6位(2^6 - 2 = 62 > 60)。所以子网掩码为
255.255.255.192
(/26)。 - 划分子网: 将
192.168.1.0/24
划分为4个/26
的子网:192.168.1.0/26
→ 62个可用地址 → 分配给销售部(用掉62个,浪费2个?不,是刚好满足)192.168.1.64/26
→ 62个可用地址 → 分配给市场部(只需要28个,浪费了34个)192.168.1.128/26
→ 62个可用地址 → 分配给财务部(只需要12个,浪费了50个)192.168.1.192/26
→ 62个可用地址 → 分配给WAN链路(只需要2个,浪费了60个)
FLSM问题暴露: 地址浪费极其严重!尤其是对于只需要2个IP的WAN链路,却占用了62个IP的地址空间。
方案二:使用VLSM
VLSM的思路是:先满足大的需求,再从剩余地址中划分出更小的子网来满足小需求。
步骤分解:
第一层划分:满足销售部(需要60个IP)
- 从
192.168.1.0/24
中划分一半:192.168.1.0/25
(范围:0-127,共126个地址)。这已经比销售部需要的还多了。我们更精确一点,划分一个/26
的子网。 - 分配:
192.168.1.0/26
(范围:0-63,62个可用地址)给销售部。 - 剩余:
192.168.1.64/26
、192.168.1.128/26
、192.168.1.192/26
。但我们不一次性用完,而是用多少拿多少。
第二层划分:满足市场部(需要28个IP)
- 从剩余地址中取一块,比如
192.168.1.64/26
。 - 市场部需要28个IP,主机位需要5位(2^5 - 2 = 30)。掩码为
/27
。 - 将
192.168.1.64/26
对半切:192.168.1.64/27
(范围:64-95,30个地址)给市场部。192.168.1.96/27
(范围:96-127,30个地址)剩余。
第三层划分:满足财务部(需要12个IP)
- 财务部需要12个IP,主机位需要4位(2^4 - 2 = 14)。掩码为
/28
。 - 从上一部剩余的
192.168.1.96/27
中再划分。将其一分为二:192.168.1.96/28
(范围:96-111,14个地址)给财务部。192.168.1.112/28
(范围:112-127,14个地址)剩余。
第四层划分:满足WAN链路(需要2个IP)
- WAN链路需要2个IP,主机位需要2位(2^2 - 2 = 2)。掩码为
/30
。 - 从剩余的
192.168.1.112/28
中划分。一个/28
可以划分出16个/30
的子网。 - 分配:
192.168.1.112/30
(范围:112-115,2个可用地址)给WAN链路1。 - 剩余: 还剩下大量
/30
的子网(如192.168.1.116/30
,192.168.1.120/30
…)可用于未来的WAN链路。
VLSM最终分配结果:
- 销售部:
192.168.1.0/26
- 市场部:
192.168.1.64/27
- 财务部:
192.168.1.96/28
- WAN链路:
192.168.1.112/30
VLSM优势尽显: 地址被100%充分利用,几乎没有浪费,并且为未来扩展预留了清晰的地址空间(192.168.1.116/30
等)。
LS链路状态协议(拥有地图,自主导航)
-
核心思想:“我拥有一张完整的网络地图,我自己计算到所有地方的最短路径。”
-
工作机制:交换
拓扑信息(Topology)
,拼凑出完整地图(网络连接图)- 每台路由器发现自己的直连邻居和链路状态,生成LSA(链路状态通告)。
- 将这些LSA可靠地泛洪到整个区域,确保每台路由器都收到完全相同的拓扑信息副本。
- 所有路由器用收集到的LSA拼凑出一个完全相同的链路状态数据库——这就是整个网络的“地图”。
- 每台路由器独立地使用SPF(最短路径优先)算法在这张“地图”上计算到所有网络的最短路径树。
-
优点:收敛速度快,避免了路由环路,扩展性好,适用于大型网络。
-
缺点:对CPU和内存消耗较大(需要存储拓扑库和运行SPF算法),配置相对复杂。
-
典型代表:
- OSPF: 当前最流行的企业网IGP协议,开放标准。
- IS-IS: 主要被大型ISP和运营商使用,也非常强大。
-
不区分有类还是无类,有类无类仅针对DV距离矢量协议,子网划分时支持VLSM变长子网掩码,因为LS链路状态协议交换拓扑信息,不用猜子网掩码
地址规划
RIP属于内部网关协议,路由器互联接口必须要启用IGP,Update只能在直连路由器之间传递,且更新报文只能传一跳
-
我们说的时候时说把一个接口宣告进RIP(就是在这个接口启用RIP进程)
-
不止路由器互联接口需要启用IGP,路由器连接PC所在网络的接口也需要启用IGP
-
不同协议无非名字不一样,在配置层面来看命令几乎相同,所以EIGRP、OSPF、ISIS也是类似的配置思路
地址规划:
RIP协议配置
enableconfigure terminalhostname <名字,例如:R1>interface loopback 0ip address <IP地址,例如:1.1.1.1> <子网掩码,255.255.255.255>ctrl+zinterface ethernet 0/0no shutdownip address <IP地址,例如:12.0.0.1> <子网掩码:255.255.255.0>
配置后通过show ip interface brief
查看配置后的状态
enableconfigure terminal# 运行一个RIP进程router rip# RIPv1时有类距离矢量协议,基本淘汰了,故切换到无类的RIPv2version 2# 关闭自动汇总,自动汇总是有类协议必备的机能,用来猜掩码的,这里已经是无类的RIPv2了,不需要猜掩码no auto-summary# 将接口宣告进RIP,RIP仅支持主类宣告,例如接口的IP为12.0.0.1,在宣告时宣告主类12.0.0.0,同理2.2.2.2宣告2.0.0.0network <需要宣告进RIP的主类IP地址># 检查宣告状态ctrl+zshow run | section rip
配置后通过show ip route
查看路由状态,例如对于R1,状态如下:
1.0.0.0/32 is subnetted, 1 subnetsC 1.1.1.1 is directly connected, Loopback0 2.0.0.0/32 is subnetted, 1 subnetsR 2.2.2.2 [120/1] via 12.0.0.2, 00:00:10, Ethernet0/0 3.0.0.0/32 is subnetted, 1 subnetsR 3.3.3.3 [120/1] via 13.0.0.3, 00:00:25, Ethernet0/1 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.0.0.0/24 is directly connected, Ethernet0/0L 12.0.0.1/32 is directly connected, Ethernet0/0 13.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 13.0.0.0/24 is directly connected, Ethernet0/1
R
:代表通过RIP学到的[120/1]
:管理距离120,度量值为1
关闭RIP
在全局配置模式下,使用命令no router rip
关闭RIP,关闭后再使用show ip route
查看路由状态后就会发现R
开头的路由没了
EIGRP协议配置
enableconfigure terminal# 启用一个EIGRP进程,三台路由器需要相同,思科默认eigrp的管理距离是90router eigrp <进程号,例如:90># 关闭自动汇总no auto-summary# 给路由器配置一个路由器id,类似于运行生成树协议后交换机的BridgeIDeigrp router-id <路由器ID,例如:1.1.1.1># 将接口宣告进EIGRP,此处例子为精确宣告,需要将路由器的接口和环回口都宣告进EIGRPnetwork <接口IP地址,例如:12.1.1.2> <通配符掩码,例如0.0.0.0>
-
注意,一台路由器上可以同时启用多个EIGRP进程,所以在配置时需要指定进程号,且按上面规划的要求配置的话,这三台路由器配置的进程号需要是相同的
-
EIGRP协议既支持主类宣告,又支持精确宣告
主类宣告
:network <需要宣告进EIGRP的主类IP地址>
- 例如接口IP为12.1.1.2,在进行主类宣告时输入:
network 12.0.0.0
- 例如接口IP为12.1.1.2,在进行主类宣告时输入:
精确宣告
:network <需要宣告进EIGRP的IP地址> <反码>
- 例如接口IP为12.1.1.2,在进行精确宣告时输入:
network 12.1.1.2 0.0.0.255
- 例如接口IP为12.1.1.2,在进行精确宣告时输入:
-
配置后通过
show run | section eigrp
来查看配置状态
配置后通过show ip route
查看路由状态,例如对于R1,状态如下:
1.0.0.0/32 is subnetted, 1 subnetsC 1.1.1.1 is directly connected, Loopback0 2.0.0.0/32 is subnetted, 1 subnetsD 2.2.2.2 [90/409600] via 12.0.0.2, 00:01:37, Ethernet0/0 3.0.0.0/32 is subnetted, 1 subnetsD 3.3.3.3 [90/409600] via 13.0.0.3, 00:00:23, Ethernet0/1 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.0.0.0/24 is directly connected, Ethernet0/0L 12.0.0.1/32 is directly connected, Ethernet0/0 13.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 13.0.0.0/24 is directly connected, Ethernet0/1L 13.0.0.1/32 is directly connected, Ethernet0/1
D
:代表通过EIGRP学到的,D是EIGRP核心算法的首字母[90/409600]
:管理距离90,度量值为409600
关闭EIGRP
在全局配置模式下,使用命令no router eigrp <进程号>
关闭EIGRP进程,关闭后再使用show ip route
查看路由状态后就会发现D
开头的路由没了
OSPF协议配置
enableconfigure terminal# 启用一个OSPF进程,三台路由器需要相同,思科默认ospf的管理距离是110router ospf <进程号,例如:110># 给路由器配置一个路由器id,类似于运行生成树协议后交换机的BridgeIDrouter-id <路由器ID,例如:2.2.2.2># 将接口宣告进OSPF,OSPF只支持精确宣告,需要将路由器的接口和环回口都宣告进EIGRPnetwork <接口IP,例如:12.1.1.2> <通配符掩码,例如:0.0.0.0> area <区域号,例如:0>
- 注意需要让这三台路由器运行OSPF建立邻居传路由,宣告接口得宣告到同一个区域,这里使用区域0(骨干区域)
- 配置后通过
show run | section ospf
来查看配置状态
配置OSPF后需要等待,是因为路由器需要按顺序完成一个复杂的分布式计算过程:建立邻接 -> 同步数据库 -> 计算路由 -> 加载路由表。这个过程被称为 收敛。
**“等一会”的本质,就是等待OSPF网络完成收敛。**完成收敛后再通过show ip route
查看路由状态,例如对于R1,状态如下:
1.0.0.0/32 is subnetted, 1 subnetsC 1.1.1.1 is directly connected, Loopback0 2.0.0.0/32 is subnetted, 1 subnetsO 2.2.2.2 [110/11] via 12.0.0.2, 00:01:35, Ethernet0/0 3.0.0.0/32 is subnetted, 1 subnetsO 3.3.3.3 [110/11] via 13.0.0.3, 00:00:46, Ethernet0/1 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.0.0.0/24 is directly connected, Ethernet0/0L 12.0.0.1/32 is directly connected, Ethernet0/0 13.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 13.0.0.0/24 is directly connected, Ethernet0/1
O
:代表通过OSPF学到的[110/11]
:管理距离110,度量值为11
关闭OSPF
在全局配置模式下,使用命令no router ospf <进程号>
关闭OSPF进程,关闭后再使用show ip route
查看路由状态后就会发现O
开头的路由没了
通配符掩码(Wildcard-mask)
核心定义
通配符掩码是一个32位的二进制数,用于指示一个IP地址中,哪些位需要被精确匹配,哪些位可以被忽略。
它总是与一个IP地址结对出现,一起用来匹配一个IP地址范围。
与子网掩码对比
特性 | 子网掩码 | 通配符掩码 |
---|---|---|
设计目的 | 定义一个IP地址所在的网络 | 匹配一个范围内的IP地址 |
二进制位含义 | 1 = 网络部分 0 = 主机部分 | 0 = 必须精确匹配 1 = 可以忽略(任意值) |
逻辑 | 连续的1和0 | 0和1可以交错出现,更灵活 |
工作原理:0=匹配,1=忽略
我们通过二进制来看它的工作原理。
规则:
- 通配符掩码位为 0:对应IP地址的位必须严格匹配。
- 通配符掩码位为 1:对应IP地址的位可以是0或1(我们不关心)。
示例1:匹配整个子网(最常用)
假设你想匹配 192.168.10.0/24
这个网络里的所有主机。
- IP地址:
192.168.10.0
- 通配符掩码:
0.0.0.255
十进制 | 二进制 | |
---|---|---|
IP地址 | 192.168.10.0 | 11000000.10101000.00001010.00000000 |
通配符掩码 | 0.0.0.255 | 00000000.00000000.00000000.11111111 |
根据规则,通配符掩码的最后8位是1
,表示这8位可以任意。所以,只要前24位是 192.168.10
,最后一位可以是任意值(0-255)。
因此,192.168.10.0 0.0.0.255
匹配的IP范围是:192.168.10.0 到 192.168.10.255。
示例2:匹配一个精确的主机地址
假设你想匹配一台特定的主机 192.168.10.5
。
- IP地址:
192.168.10.5
- 通配符掩码:
0.0.0.0
通配符掩码全是0
,表示IP地址的32位都必须精确匹配。所以它只匹配 192.168.10.5
这一个地址。
在ACL中,有一个简写:host 192.168.10.5
等价于 192.168.10.5 0.0.0.0
。
主要应用场景
通配符掩码几乎只在一个地方使用:访问控制列表(ACL) 和 OSPF 等协议的网络声明中。
华为设备配置
进行基础配置:
system-viewsysname <主机名,例如AR1>interface LoopBack 0ip address <IP地址,例如1.1.1.1> <子网掩码,也可以用32这种方式>interface GigabitEthernet0/0/0ip address <IP地址,例如12.0.0.1> <子网掩码,也可以用24这种方式>
华为暂时不支持EIGRP,这个协议在13年左右开源了,其它厂商有支持的
RIP协议配置
rip 100# 切换到RIPv2版本version 2# 关闭自动汇总undo summary# 将接口宣告进RIP,仅支持主类宣告network <接口IP,例如1.0.0.0>
rip 100
:华为设备默认rip的管理距离(优先级)为100- 配置后通过
display this
查看配置状态 - 这里需要注意,如果不知道自动汇总是否需要手动关闭,可以敲一行关闭自动汇总的指令,如果敲了之后在
display this
中显示了,就说明需要手动关闭,因为如果是他默认就关闭,即使手动敲指令也不会显示在display this
中
# AR1rip 100version 2undo summarynetwork 1.0.0.0network 12.0.0.0network 13.0.0.0
# AR2rip 100version 2undo summarynetwork 2.0.0.0network 12.0.0.0
# AR3rip 100version 2undo summarynetwork 3.0.0.0network 13.0.0.0
全部配置完后,可以通过display ip routing-table
查看路由表,此时AR1输出如下:
Routing Tables: Public Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 Direct 0 0 D 127.0.0.1 LoopBack0 2.2.2.2/32 RIP 100 1 D 12.0.0.2 GigabitEthernet0/0/0 3.3.3.3/32 RIP 100 1 D 13.0.0.3 GigabitEthernet0/0/1 12.0.0.0/24 Direct 0 0 D 12.0.0.1 GigabitEthernet0/0/0 12.0.0.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 12.0.0.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 13.0.0.0/24 Direct 0 0 D 13.0.0.1 GigabitEthernet0/0/1 13.0.0.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 13.0.0.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
已经可以看到RIP协议的路由条目了,路由协议RIP
,管理距离(优先级)100,度量值(路径成本)1
然后可以通过ping -a <源IP> <目的IP>
去测试
关闭RIP协议
undo rip <进程号,我这里是100>
,然后再通过display ip routing-table
查看路由表应该就没有RIP协议的条目了
OSPF协议配置
ospf <进程号,例如10> router-id <路由器ID,例如1.1.1.1># 先宣告区域area <区域号,例如0这个骨干区域># ospf只支持精确宣告network <IP地址,例如1.1.1.1> <通配符掩码,例如0.0.0.0>
ospf <进程号>
:华为设备默认ospf内部值为10
# AR1undo rip 100ospf 10 router-id 1.1.1.1area 0network 1.1.1.1 0.0.0.0network 12.0.0.1 0.0.0.0network 13.0.0.1 0.0.0.0
# AR2undo rip 100ospf 10 router-id 2.2.2.2area 0network 2.2.2.2 0.0.0.0network 12.0.0.2 0.0.0.0
# AR3undo rip 100ospf 10 router-id 3.3.3.3area 0network 3.3.3.3 0.0.0.0network 13.0.0.3 0.0.0.0
配置后可以通过display this
查看
area区域号
输入时可以用阿拉伯数字,也可以用点分十进制
- 0对应0.0.0.0
- 255对应0.0.0.255
- 256对应0.0.1.0