TTL 和通配符掩码

网络工程 路由 子网
2022-02-26 12:38:34

我之前有两个问题想问。什么是TTL?!我知道是时候让数据包死掉了,它会计算每个 icmp 中你跳了多少跳,但我不知道它是如何工作的以及规则是什么。当我搜索 0.0.0.255(通配符掩码)时,我从来没有找到好的结果 网络掩码让您指定主机和网络 ID 通配符有什么作用以及为什么我们在路由中用通配符替换网络掩码?感谢您的关心。

3个回答

TTL 用于两种情况:IP 数据包和 DNS 查询。我假设你的意思是前者。

TTL 值最初由发送主机设置(某些操作系统将初始 TTL 值设置为最大值 255,而其他操作系统(例如 Mac)将其设置为 64)。当数据包到达目的地时,沿途的每个路由器都会在转发数据包之前递减 TTL 值。如果 TTL 值在递减后为​​零,则路由器会丢弃数据包并将 ICMP Time Exceeded 消息(代码 11)发送回原始发送者。

有关 DNS 的问题不在此处讨论,但您可以在Server Fault上询问有关 DNS TTL 的问题

这是来自https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/15-mt/iro-15-mt-book/的示例 Cisco IPv4 OSPF 配置iro-cfg.html

router ospf 109
  network 192.168.129.16 0.0.0.3 area 20

在这种情况下, 0.0.0.3 是“通配符掩码”。IP 地址与“192.168.129.16 0.0.0.3”匹配的任何接口都将在该接口上启用 OSPF 并分配到区域 20。

但是什么 IP 匹配 "192.168.129.16 0.0.0.3" ?

0.0.0.3 是“通配符”。它指示哪些位不需要匹配。这是 192.168.129.16 在二进制中的样子:

11000000.10101000.10000001.00010000

这是 0.0.0.3 在二进制中的样子:

00000000.00000000.00000000.00000011

所以这意味着 IP 地址与以下 4 匹配的接口将“匹配”,因为我们不关心最后两位:

11000000.10101000.10000001.00010000   192.168.129.16
11000000.10101000.10000001.00010001   192.168.129.17
11000000.10101000.10000001.00010010   192.168.129.18
11000000.10101000.10000001.00010011   192.168.129.19

在这种情况下,“192.168.129.16 0.0.0.3”恰好与 192.168.129.16/30 对齐。但这只是因为网络工程师配置了通配符位以匹配子网。

因此,如果我们的路由器将 IP 地址 192.168.129.17 分配给接口,则 OSPF 将被启用并位于区域 20。我们可以像这样配置路由器:

router ospf 109
  network 192.168.129.17 0.0.0.0 area 20

具有完全相同的效果,但大多数网络工程师倾向于使用通配符位来匹配接口的子网,而不是接口的 IP 地址。

有些人称通配符位为“反向网络掩码”,但这是错误的。它们是不需要匹配的位列表。

具有“不连续的通配符位”是完全合法的语法。例如 0.0.2.2 会产生这样的通配符位:

00000000.00000000.00000010.00000010

但这是糟糕的网络工程。正如程序员应该注释他们的代码并使用描述性的变量名称一样,网络工程师应该避免人类难以理解的配置。

网络工程师的另一个常见错误是处理访问列表中的通配符位。这些都是 IPv4 IOS 访问列表的有效语法

access-list 101 permit tcp 192.168.129.0 0.0.0.255 host 1.1.1.1 eq 80
access-list 101 permit tcp 192.168.129.0 255.255.255.0 host 1.1.1.1 eq 80

第一个示例匹配源 IP 地址 192.168.129.0/24(因为最后 8 位是“通配符”)

第二个示例匹配 Internet 上以 0.*.*.*.0 结尾的每个源 IP 地址(因为前 24 位是“通配符”)。这显然不是网络工程师的本意。这种类型的错误配置导致了安全事件。

雪上加霜的是,Cisco ASA 防火墙在其 ACL 中使用网络掩码语法:

access-list extended permit tcp 192.168.129.0 255.255.255.0 host 1.1.1.1 eq 80

在匹配源 IP 192.168.129.0/24 的 ASA 上。

在语法无效的 Cisco IOS 机器上(由于“访问列表扩展”前缀),但倾向于诱骗网络工程师在 IOS ACL 中写入网络掩码语法,从而导致安全事件。

幸运的是,思科已经(大部分)远离了 IPv6 的通配符语法。每个接口都启用 IPv6 路由协议。IPv6 访问列表在大多数平台上使用 CIDR 语法。

实际上,转发数据包的任何路由器都会减小 TTL 值。一旦计数器达到零,数据包就会被丢弃。TTL 是消除循环数据包的保障措施,因此它们不会无休止地循环。

请单独发布通配符问题并提供更多上下文。