0.0.0.0 作为网关是什么意思?

use*_*323 76 linux networking routing

谁能为我澄清网关分配?

添加网关0.0.0.0和分配特定IP地址作为网关有什么区别?

Fal*_*mot 59

0.0.0.0具有“未指定”的特定含义。这在网关的上下文中大致翻译为“没有”。当然,这假设网络是本地连接的,因为没有中间跃点。该机器将数据包从该接口发送出去,就像发送到连接到该网段的机器一样,这在以太网中意味着将使用目标主机的 MAC 地址而不是下一跳网关的 MAC 地址。

作为目的地,0.0.0.0/0是特殊的:如果没有网络位,则网络号中也不能有任何内容。所以,它自然是未指定的。对于前缀匹配,它屏蔽了所有位,因此所有地址都在0.0.0.0/0; 出于这个原因,它在路由表中被用来表示“默认网关”。这也是最不特定的可能路线,因此优先选择特定性的选择将选择任何其他可用的方法并将匹配0.0.0.0/0作为最后的手段。

但是,坚持您的问题,是的,它确实具有特殊含义。这意味着网络在该接口上本地连接,不需要更多的跃点即可到达它。


slm*_*slm 28

从维基百科页面,0.0.0.0

摘抄

在 Internet 协议版本 4 中,地址 0.0.0.0 是不可路由的元地址,用于指定无效、未知或不适用的目标。为无效的数据赋予特殊含义是带内信令的应用。

从维基百科页面,Default Route

摘抄

在Internet协议版本4(IPv4)的默认路由指定为CIDR标记,零地址0.0.0.0/0 1通常被称为四零路线。子网掩码指定为 /0,它有效地指定了所有网络,并且是可能的最短匹配。与任何其他路由都不匹配的路由查找将回退到此路由。同样,在 IPv6 中,默认路由由 ::/0 指定。

在网络的最高级别部分,管理员通常将给定主机的默认路由指向与网络服务提供商有连接的路由器。因此,目的地在组织局域网之外的数据包,通常目的地在 Internet 或广域网上,会被转发到连接到该提供商的路由器。

默认路由所指向的设备通常称为默认网关,它通常执行其他功能,例如包过滤、防火墙或代理服务器操作。

例子

在你的提问中,我将假设你有这样的事情:

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0
Run Code Online (Sandbox Code Playgroud)

这就是说,对于每个网络目的地(192.168.1.0 或 169.254.0.0),默认网关是 0.0.0.0 目的地,如果数据包的目的地不是该特定网络中的任何地址。对于 0.0.0.0 目标,使用 IP 地址 192.168.1.254。

这些规则的作用是将所有与我们知道的任何路由都不匹配的流量汇集到默认路由。

情侣样品

假设我们有一个 IP 为 192.168.1.110 的数据包。检查第一条规则并且此 IP 与该网络匹配,因此它被交付。

如果我们有数据包 150.12.13.1,第三条规则将生效,数据包将被路由到 192.168.1.254。


小智 5

看, 0.0.0.0 仅用于路由表 - 不用于分配给主机。

主机(具有 IP 地址的计算机)维护一个路由表来解决如何将它们的消息发送到正确的位置。

场景 1:PC-A 想向同一网络上的 PC-B 发送消息:

1) PC-A 检查其路由表以查看目标 IP 地址是否匹配。2) 路由表显示目的地在同一网络内,找到连接到该网络的接口,然后将消息从该接口直接转发到目的地。

场景 2:PC-A 想要在远程网络(不是同一网络)上向服务器 Z 发送消息:

1) PC-A 检查其路由表并找不到匹配项(当然,因为主机不跟踪远程网络上的主机——这是路由器的工作)。

2) 但是,PC 配置了一个四零 IP 地址和子网掩码映射到您的路由器(其他、远程、不同网络的默认网关),如下所示:

(0.0.0.0 0.0.0.0 192.168.0.1 接口)

零是什么意思?这意味着没有。因此,如果您的计算机没有跟踪远程主机的位置,并且每次想要发送消息时都会检查其路由表,以查看是否需要将其发送到相同(本地)网络或是否需要将其发送到远程网络,那么它如何将消息发送到远程网络?

它将它发送到路由器,并让路由器完成沿最佳路径路由数据包的工作。因此,主机/PC/计算机需要知道,如果在其路由表中找不到用于将消息发送到何处的条目(又名 0.0.0.0),则它知道将其发送到路由器,即 IP与 (0.0.0.0 0.0.0.0 192.168.0.1 interface) 条目关联的地址,并使用连接到该条目的关联接口/NIC/网络适配器。

因此,主机和路由器上的路由表使用 0.0.0.0 来知道当它找到零匹配到达目的地并且必须映射到路由器的 IP 地址和接口才能到达该路由器时,将某些内容发送到何处。