在需要不可路由的内部 IP 地址时,我是否应该使用链路本地地址?

在需要不可路由的内部 IP 地址时,我是否应该使用链路本地地址?

我有一个包含一些负载平衡功能的网络设备 - 在我的设计中,这些功能仅供设备内部使用。任何东西都不应该与它们进行外部通信,此外,客户端在设备 IP 范围内的 IP 地址很少。

使用 Link-Local 范围来实现这些功能可以接受吗?例如,169.254.1.1

注意:有问题的设备不允许将环回 IP 用于这些功能。

答案1

RFC3927 禁止此块内的地址的手动分配。

你应该使用由以下地址提供的地址块RFC191810.0.0.0/8 172.16.0.0/12 192.168.0.0/16。这些地址可以自由使用,只要路由未公布到互联网即可。请记住选择您环境中未使用的子网。

答案2

详细信息RFC3927似乎认为这并不完全正确。

是的,继续。这是因为禁止不会发挥作用。这比其他常见情况(例如征用)要好得多1.1.1.0/24

如果您想玩得开心,您可以使用169.254.0.0/24169.254.255.0/24

2.1. 链路本地地址选择

当主机希望配置 IPv4 链路本地地址时,它会使用伪随机数生成器选择一个地址,该地址在 169.254.1.0 到 169.254.254.255 范围内(含)均匀分布。

为此,IPv4 前缀 169.254/16 已在 IANA 注册。169.254/16 前缀中的前 256 个地址和后 256 个地址保留供将来使用,并且不得由使用此动态配置机制的主机选择。

答案3

回答你的问题,不,你不应该。 RFC3927第 1.6 节禁止此类使用。

具体来说,本节最后一段是这么说的:

希望配置自己的本地地址(使用手动配置、DHCP 服务器或本文档中未描述的任何其他机制)的管理员应该使用现有的私有地址前缀之一 [RFC1918],而不是 169.254/16 前缀。

这排除了整个 /16 的此类用途,因此您需要研究其他替代方案。

我的第一个建议是使用环回接口。环回接口非常适合同一主机内不需要访问该主机外部的服务之间的通信。许多服务都以这种方式使用它们,用于管理接口、测试和其他目的。

您在评论/编辑中提到设备不允许您这样做。您没有提到供应商/型号或代码版本,所以我的第一个建议是您联系供应商。如果这确实是设备的有效用途,他们可能愿意调整他们的代码以允许使用环回接口;他们在编写代码来验证 IP 地址时可能没有考虑过这种用例。或者他们可能会告诉您为什么这是一个坏主意以及为什么应该以另一种方式完成。

如果环回接口确实不行,那么你应该使用RFC1918为此目的,请指定 IP 地址空间。请确保与相关 IT 人员一起选择要使用的 IP 范围,以避免网络上出现任何其他不可预见的问题。

相关内容