什么是通配符掩码?如何计算它?

⚡ 智能摘要

通配符掩码是一个 32 位反向掩码,它告诉路由器和访问控制列表要匹配 IP 地址的哪些部分,要忽略哪些部分,使用 0 位进行匹配,使用 1 位进行跳过。

  • 🔄 逆逻辑: 通配符掩码会反转子网掩码规则——0 位必须与地址匹配,1 位将被忽略。
  • 🧮 计算公式: 小组trac从 255.255.255.255 中获取子网掩码,生成匹配的通配符掩码。
  • 🎯 主机和任何: 关键字 host 等于 0.0.0.0,关键字 any 等于 255.255.255.255。
  • 🛡️ ACL 用途: 通配符掩码定义了访问控制列表允许或拒绝哪些地址范围。
  • 🧭 路由: OSPF 和 EIGRP 网络语句也依赖于通配符掩码来选择接口。
  • 🤖 人工智能辅助: AI 助手可以生成和验证通配符掩码,减少人工 ACL 错误。

什么是通配符掩码以及如何计算它

什么是通配符掩码?

通配符掩码是一串数字,用于简化私有网络子网内的数据包路由。它也被称为反向掩码。与此不同的是…… 子网掩码其中二进制 1 表示匹配,二进制 0 表示不匹配,通配符掩码则反转了这种逻辑。

通配符掩码长度为 32 位。使用通配符掩码时,零位表示对应的位位置必须与目标位置完全匹配。 IP地址而 1 位表示相应位置不必匹配。

通配符掩码使用以下规则来匹配二进制 1 和 0:

  • 如果通配符掩码位为 0,则与地址中的位值匹配。
  • 如果通配符掩码位为 1,则忽略地址中对应的位值。

单个主机的通配符掩码始终为 0.0.0.0。

通配符掩码与子网掩码

通配符掩码和子网掩码看起来很相似,但用途却截然相反。子网掩码将地址的网络部分与主机部分分隔开来,而通配符掩码则告诉设备哪些地址位需要匹配,哪些需要忽略。下表对两者进行了比较:

基地 子网掩码 通配符掩码
二进制1 识别网络位 忽略这部分(不用在意)
二进制0 识别主机位 必须与此部分完全匹配
目的 定义子网边界 过滤 ACL 和路由语句中的地址
/24 示例 255.255.255.0 0.0.0.255
位必须是连续的 是 不——口罩可以是不连续的。

通配符掩码如何工作?

以下示例有助于您理解通配符掩码的概念。该图显示了一个包含三台主机和一个路由器的网络,该路由器直接连接到三个子网:

路由器连接到三个子网的网络拓扑图,展示了通配符掩码匹配。

假设您只想通告 10.0.1.0/24 子网。您可以在以下网络命令中使用通配符掩码 0.0.0.255:

R1(config-router)#network 10.0.1.0 0.0.0.255

为什么通配符掩码是 0.0.0.255?

首先,转换 Cisco 将通配符掩码和 IP 地址转换为二进制:

10.0.1.0 = 00001010.00000000.00000001.00000000
0.0.0.255 = 00000000.00000000.00000000.11111111

通配符掩码的零位必须与网络命令中包含的 IP 地址中的相同位置匹配:

00001010.00000000.00000001.00000000
00000000.00000000.00000000.11111111

在上面的例子中,最后一个八位字节不需要匹配,因为通配符位全部为 1。前 24 位必须匹配,因为通配符掩码位全部为 0。

此处,通配符掩码匹配所有以 10.0.1.x 开头的 IP 地址(10.0.1.0 到 10.0.1.255)。在本例中,仅匹配到一个网络:10.0.1.0/24。

如果您想同时包含 10.0.0.0/24 和 10.0.1.0/24 子网,该怎么办?

您需要使用通配符掩码 0.0.1.255,如下所示:

10.0.0.0 = 00001010.00000000.00000000.00000000
10.0.1.0 = 00001010.00000000.00000001.00000000
0.0.1.255 = 00000000.00000000.00000001.11111111

使用通配符掩码 0.0.1.255,只需匹配 23 位即可。这意味着 10.0.0.0 到 10.0.1.255 范围内的所有地址都匹配,因此两个子网都得到了覆盖。

如何计算通配符掩码?

手动计算通配符掩码可能是一项具有挑战性的任务。一个简单的快捷方法是使用代入函数。trac从 255.255.255.255 中提取子网掩码。结果即为通配符掩码。

例如:

 
1) 255.255.255.255 - 255.255.255.255 = 0.0.0.0 (wildcard mask)
2) 255.255.255.255 - 255.255.255.128 = 0.0.0.127 (wildcard mask)
3) 255.255.255.255 - 192.0.0.0 = 63.255.255.255 (wildcard mask)

常用通配符掩码值

下表列出了常用的 CIDR 前缀及其对应的子网掩码和通配符掩码,方便您查找值,而无需每次都进行计算:

CIDR 子网掩码 通配符掩码 地址匹配
/8 255.0.0.0 0.255.255.255 16,777,216
/ 16 255.255.0.0 0.0.255.255 65,536
/ 24 255.255.255.0 0.0.0.255 256
/ 25 255.255.255.128 0.0.0.127 128
/ 26 255.255.255.192 0.0.0.63 64
/ 27 255.255.255.224 0.0.0.31 32
/ 28 255.255.255.240 0.0.0.15 16
/ 30 255.255.255.252 0.0.0.3 4

通配符掩码关键字:host 和 any

Cisco iOS 提供了两个简写关键字,因此您无需在访问控制列表中输入常用的通配符掩码:

  • 主持人 — 替换通配符掩码 0.0.0.0,并匹配一个精确的 IP 地址。例如, 主机10.0.1.5 是相同的 10.0.1.5 0.0.0.0.
  • 任何 — 替换通配符掩码 255.255.255.255,并匹配所有 IP 地址。例如: 任何 是相同的 0.0.0.0 255.255.255.255.

这些关键词使 ACL 语句更短更易读,并降低了出错的几率。ping 面具出错了。

通配符掩码可以在哪里使用?

通配符掩码用于访问控制列表 (ACL)。当您拥有大型网络并需要控制多个路由器和 LAN 网段之间的流量时,它们非常有用。当您管理一个包含多个路由器的大型网络时,您很可能会遇到以下情况: Cisco 通配符面具。

通配符掩码也出现在动态中 路由 诸如 OSPF 和 EIGRP 之类的协议,其网络语句会使用通配符掩码来选择参与路由的接口。您需要仔细设置通配符掩码,以确保只有预期的流量才能通过您的路由器。

常见问题

是的。OSPF 和 EIGRP 网络语句使用通配符掩码来决定哪些接口属于路由进程。例如,`network 10.0.1.0 0.0.0.255` 会激活 10.0.1.0/24 子网中所有接口的路由。

是的。与子网掩码不同,通配符掩码不需要连续的位。例如,0.0.0.254 这样的掩码只匹配最后一个八位字节中的偶数地址,这对于在访问控制列表 (ACL) 中选择交替主机非常有用。

该术语最常见于 Cisco iOS 系统特有这种反向掩码的概念,但其他平台也采用了这种机制。许多防火墙和路由器都使用相同的匹配并忽略逻辑,即使它们的命名方式不同,或者接受前缀长度作为参数。

不。通配符掩码仅用于匹配访问控制列表 (ACL) 和路由语句内部的逻辑。它不会修改数据包内容,也不会增加可测量的延迟;它只是告诉设备要比较哪些地址位。

错误的掩码匹配的地址过多或过少。掩码范围过宽可能允许不必要的流量通过并造成安全漏洞,而掩码范围过窄则可能阻止合法主机。应用规则前务必验证掩码范围。

CIDR 前缀(例如 /24)是连续子网掩码的简写形式。通配符掩码(例如 0.0.0.255)表示相同的匹配范围,但还可以描述简单前缀无法表示的非连续模式。

是的。人工智能和机器学习助手可以将子网或地址范围转换为正确的通配符掩码,标记过于宽松的掩码,并用通俗易懂的语言解释每条规则。不过,工程师在部署前仍应审核输出结果。

GitHub 副驾驶 可以根据描述目标地址范围的简短注释,生成带有通配符掩码的 ACL 和 OSPF 语句。在将生成的掩码应用到生产设备之前,务必确认其与预期地址匹配。

总结一下这篇文章: