公共 IP 网络的路由

公共 IP 网络的路由

假设有一个路由到 HostA 的 (公共) 网络 198.51.100.0/24,我想将其子网 (例如 198.51.100.16/28) 路由到 HostB。HostA 和 HostB 通过某种点对点链路 (例如 VPN 或 PPP) 连接。

路由此类网络有哪些选项(最佳实践是什么)?从技术上讲,我不应该使用私有 IP(RFC1918),因为此类 IP 绝不能与可公开路由的 IP 地址混合使用。

我可以分离一个 /30 网络并将其用作 HostA 和 HostB 之间的点对点链接,并在其上路由 198.51.100.16/28。但这似乎很浪费。

我可以使用 RFC1918 地址吗?我可以使用链路本地地址吗?

编辑:我尝试了 tracert,确实,中间散布着 RFC1918 地址(注意:我认为第一个是我的 CGNAT,但其他的肯定在公共网络中):

  [...]
  2    70 ms    70 ms    71 ms  10.8.0.1
  3    78 ms    71 ms    73 ms  D [64.44.32.1]
  4    72 ms    71 ms    71 ms  89-88-12-198.as20278.net [198.12.88.89]
  5    72 ms    74 ms    70 ms  10.8.40.245
  6    71 ms    71 ms    73 ms  10.8.6.33
  7    75 ms    71 ms    73 ms  buf-b1-link.ip.twelve99.net [62.115.59.89]
  8    82 ms     *       81 ms  nyk-bb1-link.ip.twelve99.net [62.115.118.122]
  9   188 ms     *      157 ms  ldn-bb4-link.ip.twelve99.net [62.115.112.245]
 10   364 ms   212 ms   294 ms  prs-bb2-link.ip.twelve99.net [62.115.114.229]
 11   208 ms   297 ms   304 ms  ffm-bb2-link.ip.twelve99.net [62.115.122.139]
 12   282 ms   246 ms   361 ms  win-bb4-link.ip.twelve99.net [62.115.138.23]
 13   303 ms   180 ms   325 ms  win-b2-link.ip.twelve99.net [62.115.114.183]
[...]

答案1

您可以使用 RFC 1918 范围内的任何子网进行路由。只要连接的主机能够理解它,它就可以工作。对于 P2P 链接,/31 子网就足够了。对于 PPP 连接,甚至不需要寻址,只需要路由。

只需确保没有任何私有 IP 数据包从任何主机泄漏到 Internet。特别是 HostB 需要使用 198.51.100.16/28 地址来向 Internet 发送数据包 - 通常可以通过将所有相关服务专门绑定到该地址来建立。

但是,从 198.51.100.0/24 到 198.51.100.16/28 子网的路由可能会带来挑战,因为它们有重叠。198.51.100.0/24 上的主机不会使用 HostA 作为网关。您需要使用静态 ARP 条目、代理 ARP 或类似方法才能路由数据包。首先对 198.51.100.0/24 进行干净的子网划分可能会很有用,这样问题就变得简单了。

tracert通过向目的地发送增量 TTL 探测并显示它们超时的位置来工作。只要中间网关返回TTL 在传输过程中已过期消息中,您会在列表中看到它们。它们在所用接口上使用公共或私有地址,还是仅用作一般 ICMP 源地址,都无关紧要。

如果您不希望出现这种情况,则需要禁用或过滤此类消息(使跳转显示为* * *),或者使用公共 IP 地址来处理 ICMP 错误。请注意,HostA 是最后一跳网关,因此它取决于其设置(无论如何都可能是公共地址)。HostB 不会使 TTL 超时,因为只有在转发时才会检查 TTL - HostB 可能会回复,ping但通常会返回 ping 的目标地址(该地址不能是公共互联网的私有地址)。

相关内容