什么使私有 IP 地址不可路由?

Qua*_*ads 24 networking routing ipv4

我明白如私有地址10.0.0.0/8172.16.0.0/12并且192.168.0.0/16是不可路由的。但是,究竟是什么阻止了这些地址的可路由性?ISP 是否实施了阻止这些网络路由的 ACL,还是更高层的东西?

另外,这个设计是由 IANA 设计的吗?

sho*_*hok 42

私有 IP 地址可路由的,尽管它们不是公开路由的。基本上,路由器会将私有地址路由到私有/内部 LAN,而不是 Internet。

扩展我的答案:路由器可以通过其默认网关将私有地址路由到公共端。但是,由于其他路由器将其丢弃,或者由于数据包的 TTL 达到 0,数据包将在传输过程中“丢失”。

例如,看看这个(部分混淆)traceroute -I -n 192.168.200.1

[root@myhost ~]# traceroute -I -n 192.168.200.1
traceroute to 192.168.200.1 (192.168.200.1), 30 hops max, 60 byte packets
 1  x.x.x.x  0.851 ms  0.841 ms  0.818 ms
 2  6x.xx.xx.xx  0.791 ms  0.791 ms  0.849 ms
 3  15x.xx.xx.xx  1.350 ms  1.347 ms  1.373 ms
 4  15x.x.xx.xx  1.446 ms  1.435 ms  1.428 ms
 5  151.6.68.20  2.272 ms  2.266 ms  2.251 ms
 6  151.6.0.91  8.818 ms  8.256 ms  8.326 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *
...
...
29  * * *
30  * * *
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,数据包通过机器的默认网关路由到公共互联网。然而,它在运输过程中被丢弃并且永远不会到达任何适当的目的地。

毕竟,私有 IP/类(根据定义)在客户之间是重叠的,那么应该在数千个 192.168.200.x/24 网络中的哪个网络上路由这个数据包?

一个有趣的旁注:互联网提供商经常使用私有地址进行内部路由。例如,如果私有 192.168.200.x/24 类用于内部路由,则 IP 为 192.168.200.1 的第一台路由器/机器接收但丢弃数据包,因为它是未经请求的。ICMP 是一个有趣的例外,因为路由器/机器通常会回复未绑定的 PING。这意味着您有时可以使用专用地址扫描来映射您的 ISP 专用网络。

  • 每当您创建路由私有网络时,路由私有 RFC1918 地址(192.168、172.16、10)实际上并不少见。 (3认同)
  • @Bruno 不一定。路由*可以*将公共端的私有地址路由到其默认网关,但其他路由器最终会丢弃数据包或在循环中路由它(当其 TTL 达到 0 时,数据包将被丢弃)。 (3认同)
  • 所以基本上,如果 IP 地址以 10、172.16-31 或 192.168 开头,那么路由器应该配置为只通过内部 LAN 网络发送它们,而不是发送到外部 Internet(在企业中,通常通过外部网关)。您可以在此处阅读这些“私人网络”:https://en.wikipedia.org/wiki/Private_network (2认同)

Zac*_*c67 9

通常,私有 IP 地址由 ISP 过滤。您的接入路由器也应配置为不会泄漏。

不能在 Internet 上使用私有 IP 地址,因为任何人都可以使用它们。可能有数百万台设备私下使用 192.168.1.1 - 互联网路由器应该发送数据包?

Zeroconf地址 (169.254.0.0/16) 实际上是不可路由的。这些可以以一种特别的方式在任何地方使用,但它们不能访问 Internet 或任何子网,只能访问它们的本地子网。它们不能被路由,因为它们只能在广播域内有效,每个设备可以自己选择一个未使用的地址。根据定义,zeroconf 没有像 DHCP 服务器那样的管理实例。


小智 6

但是,究竟是什么阻止了这些地址的可路由性?

由通信实体强制执行的公认标准。这些是在软件、硬件和配置中强制执行的。

ISP 是否实施了阻止这些网络路由的 ACL,还是更高层的东西?

他们可以,但真正被阻止的只是一个不符合标准的无效翻译。

如果您像大多数家庭用户一样,您有一个分配给您的 IP 地址作为公共 IP 地址。为了让来自所有连接设备的流量进行通信,路由器使用 NAT(网络地址转换)或 PAT(端口地址转换)执行这些内部 IP 地址的转换。

基本上,您的路由器会记住 LAN(局域网)中的哪些内部 IP 地址启动了一个会话,该会话到达您的 LAN 外部,通过路由器,然后到达 WAN(广域网)接口。当数据离开路由器时,它包含分配给您作为源 IP 的单个 IP 地址。当它进入时,数据包包含与目标 IP 相同的地址。然后路由器决定它从那里被引导到哪里。

对于外部,您只有一个 IP 地址,它实际上是路由器的 IP。路由器能够跟踪这些会话并确定哪些流量属于其 LAN 上的每个内部 IP 地址,并相应地引导该流量。这是一个复杂的管理过程,但一旦您了解所有内容都在每个路由器上进行转换,这个想法实际上非常简单。

此外,大多数家用路由器都有交换端口,因此流量是通过 MAC 地址而不是 IP 地址传送的。数据包中的源 MAC 地址在到达路由器之前保持不变。路由器剥离该源 MAC 地址并插入其自己的 WAN 接口的 MAC 地址。

另外,这个设计是由 IANA 设计的吗?

这些标准最初并非由 IANA 设计。今天,虽然他们带头制定标准,但他们肯定不会通过任何法律手段来执行这些标准。它们是通过共识强制执行的标准。搜索 RFC 791。

他们拥有“权威”,以至于每个人都愿意遵守。完全有可能违反这些标准,但您最终会在路径上的某个地方遇到 ISP,这将要求您遵守,否则他们会降低您的流量。

我希望这有帮助..

  • 我认为这与 OP 的具体问题有关,每一个字都一针见血。其他答案实际上是正确的,但我不确定它们是否尽可能直接地解决了 OP 的具体混淆。关键是:_约定以及大多数人都想遵守的事实_。 (2认同)
  • @TOOGAM:是的,我只是在强化它。正如我所说,我认为这个答案是完美的。 (2认同)