我在本地网络 192.168.180.1 上。但是我想在本地网络上设置一个 IP 为 169.254.1.0 的 Web 服务器(Windows/Linux)
我可以将服务器的静态 IP 设置为 169.254.1.0,但我认为不可能从位于 192.168.180.1 上的设备路由到该服务器。因此,将 169.254.1.0 的默认网关设置为 192.168.180.1 是没有意义的。
我能做些什么吗?或者这不可能做到吗?任何帮助都将不胜感激。
谢谢。
答案1
169.254.xx/16 是 IETF 所称的 IPv4 链路本地子网(“APIPA”是 Microsoft 对此的专有术语)。如果您设备的 IP 堆栈遵循 IETF ZeroConf 建议,那么即使它们在该子网上没有 IP 地址,它们也应该将该子网视为本地子网。因此,您所考虑的方法应该可以正常工作,无需特殊设置。
与此处的某些评论相反,169.254.1.0 不是该子网的网络地址,因为这是一个 /16(网络掩码 255.255.0.0)子网,而不是 /24(255.255.255.0)。
理想情况下,如果您需要此子网上的静态 IP,则它的第三个八位字节应该为零或 255(169.254.0.x 或 169.254.255.x),因为 169.254.1.0 到 168.254.254.255 保留用于自动自我分配,而不是手动分配。
看RFC 3927了解更多信息。
答案2
这是有可能的。你能实际上使用子网外网关;虽然很不寻常,但我见过一些网络这样做。
请注意,标准的“网络掩码”和“网关”设置仅扩展到自动生成的路由,其中更多的路由也可以手动设置。(例如,可以添加链接路由以手动告诉操作系统具有奇怪 IP 地址的设备与您在同一个 LAN 上。)
另请注意,网卡可以有多种的分配给它的地址,如果需要,它们可以来自不同的子网。(即使 Windows 也允许您这样做,但不幸的是它需要禁用 DHCP。)
现在,通常情况下,你会有几个类似的选项,具体取决于谁需要访问你的服务器。你可以配置路由器,也可以配置客户端电脑本身(但前提是它们位于相同的路由器作为服务器)。
不幸的是,具体169.254.0.0/16
地址范围被指定为不可路由. 路由器被写成拒绝转发具有此类 IP 的数据包,无论您的配置如何。
这在一定程度上限制了选项。也就是说,Web 服务器必须与您连接到同一个 LAN(即同一个路由器后面)。
因此剩下的一个选项是:169.254.x.x/16
在您自己的电脑上添加一个地址,此外你通常192.168.180.x/24
所用的那个。
在这种情况下,实际上不需要在 Web 服务器上配置网关,因为同一子网通信无论如何都不会使用它。(当然,这意味着 Web 服务器本身无法连接很远。)
答案3
我想到的唯一方法就是在路由器中添加静态路由。
例如,您可以定义接口内169.254.1.0
带有网络掩码/32
(255.255.255.255)的 IPLAN
应该使用网关192.168.180.100
(假设该服务器是 Web 服务器所在的服务器)。
正如斯皮夫所说,如果您的路由器遵守 RFC 的第 2.6.2 节,那么这种方法将无法奏效,因为这将是不应转发的 CIDR 地址。但是,我刚刚在家中使用 TP-Link TD-W8970 路由器对此进行了测试,它确实有效,数据包在转发时目标 IP(169.254.1.0)在标头中保持不变。