具有两个 NIC 的 Windows 服务器上的数据包路由

具有两个 NIC 的 Windows 服务器上的数据包路由

这个问题让我很困惑。我在 Google 上搜索过,但既没有提到这种行为,也没有解释。也许我使用了错误的搜索词。我在这个网站上读过很多问题的解决方案,但这是我第一次发布问题。

我有几台 Windows 2008R2 服务器,每台服务器都配置了两个 NIC。第一个 NIC 是公用的,其 IP 地址在公用域中,第二个 NIC 的 IP 地址在专用域 10.0.0.0/8 中。专用 IP 的用途是用于集群 (Oracle RAC),因此专用 NIC 只能由 Oracle 访问,并且名称解析通过 hosts 文件完成。

第一块网卡配置了默认网关和DNS服务器,第二块网卡只有IP地址和子网掩码,配置的IP地址为10.1.8.1/255.0.0.0。

在此服务器上,如果我对 10.185.1.44(我们网络上的另一台服务器)进行 tracert,第一次会失败。第二次会成功。此行为在任何具有两个 NIC 的服务器上都是一致的且可重现。

从以下输出可以看出,在第一次尝试中,Windows 尝试将数据包路由到私有接口并失败。在第二次尝试中,Windows 将数据包路由到公共接口并且 tracert 成功。出于安全考虑,我删除了实际的公共 IP 地址。

问题 1:为什么 Windows 第一次尝试通过私有 NIC 访问 10.185.1.44,第二次尝试使用公共 NIC?

Q2:第二个观察结果是,一旦 tracert 成功,如果我在大约 2 分钟内进行下一次 tracert,它就会成功。如果我在大约 3 分钟后尝试下一次 tracert,它会第一次失败,然后成功。

IPv6 已完全禁用。适配器的绑定顺序为先公有,后私有。

tracert 10.185.1.44   
Tracing route to 10.185.1.44 over a maximum of 30 hops
  1  myserver.mydomain.com [10.1.8.1]  reports: Destination host unreachable.
Trace complete.

tracert 10.185.1.44
Tracing route to 10.185.1.44 over a maximum of 30 hops
  1     3 ms    <1 ms    <1 ms  default gateway on public NIC
  2    <1 ms    <1 ms    <1 ms  next hop IP
  3     2 ms     1 ms     1 ms  next hop IP
  4     2 ms     2 ms     2 ms  next hop IP
  5     3 ms     2 ms     2 ms  next hop IP
  6     4 ms     2 ms     3 ms  next hop IP
  7     2 ms     3 ms     2 ms  next hop IP
  8     2 ms     2 ms     2 ms  next hop IP
  9     3 ms     2 ms     2 ms  10.185.1.44
Trace complete.

任何对此现象的解释都将受到赞赏。

答案1

您需要阅读帖子“子网划分如何工作”。由于您使用的子网掩码非常大,因此尽管您的两个 NIC 的八位字节非常不同,但它们实际上位于同一子网中。由于您的默认网关可以通过任一子网访问,因此当第一个 NIC 发生故障时,系统会使用备用 NIC 尝试到达目的地。

10.1.8.1/8 和 10.185.1.44/8 位于同一子网。如果您想保持简单,只需使用不同的 RFC1918 空间,如 172.16.0.0/12 或 192.168.0.0/16 网络。

相关内容