我想知道是否可以使用 IPv4 任播让同一 IP 子网中的多台计算机处理来自同一子网中其他机器的请求。
我的 LAN 上有两个 DNS 服务器。由于我了解到在不同的 IP 上拥有两个 DNS 服务器无助于实现冗余(简短的原因:主机不会总是切换 IP 并将继续使用离线服务器的 IP)我想设置一些任播 IP,以便 DNS 请求可以发送到任何正在启动和运行的 DNS 服务器。
考察任播,它主要用于使用 BGP 将流量路由到不同的站点,或路由到具有多个路由器的大型站点内的不同目的地。在我的例子中,只有一个交换机连接所有东西,LAN 内的路由只到 ARP。
我找不到任何关于如何在这种情况下配置任播的信息。您是否可以简单地为两个或多个主机分配相同的 IP 地址,然后交换机将确定将数据包发送到哪个端口,如果服务器离线,则丢弃该端口并清除 ARP 条目?如果数据包突然停止响应,主机是否也会重新发出 ARP 请求?您是否必须共享 MAC 地址和 IP?或者,在这种设置下无法使用任播,并且需要路由协议?
答案1
单个 LAN 内的 IPv4 任播 DNS 是否可行?
不,任播不能以这种方式工作。您的 DNS 客户端将看到配置的 DNS 服务器的 IP 地址位于同一子网内,ARP 为其 MAC 地址,然后尝试直接发送数据包。由于位于同一子网中,交换机将直接将数据包转发到服务器。
您是否可以简单地为两个或多个主机分配相同的 IP 地址,然后交换机将确定将数据包发送到哪个端口,如果服务器离线,则丢弃该端口并清除 ARP 条目?
不可以,为两个不同的系统分配相同的 IP 地址会导致 IP 地址冲突。这样做会导致数据包丢失和连接不稳定等问题。不要这样做。
如果数据包突然停止响应,主机是否也会重新发出 ARP 请求?
如果整个服务器瘫痪,那么客户端将开始发送 ARP 请求。如果只有 DNS 服务发生故障(网络仍然正常运行),则不会发生 ARP。DNS 请求将只是超时或失败。
您必须共享 MAC 地址和 IP 吗?
不,这也会导致网络问题。
或者在这种设置下无法使用任播而需要路由协议?
需要协议。
总结
Anycast 既复杂又不适合小型单一部署。请坚持使用您目前拥有的两个 DNS 服务器。
答案2
正如 Stanley Yu 的回答中提到的那样,由于网络在第 2 层工作,而 Anycast 需要第 3 层以及客户端和 DNS 之间的路由器,因此根本无法在本地网络上进行 Anycast。
根据您的基础设施,您可以为您的 DNS 服务器建立一个简单的故障转移组,例如使用 CARP/VRRP 或 Heartbeat/Pacemaker,以便在一个 DNS 服务器发生中断时,其他服务器可以接管其 IP(和服务)。