如何强制一个 NIC 的流量永远不会通过第二个 NIC?

如何强制一个 NIC 的流量永远不会通过第二个 NIC?

设置:我有一台装有 Windows 和两个 NIC 的计算机;我们将它们称为 NIC1 和 NIC2。NIC1 用于与公司网络连接,NIC2 用于与我们称为“设备”的某些设备交互。NIC1 使用 DHCP,NIC2 被分配一个没有默认网关的静态 IP。NIC2 上的设备直接连接。我在计算机上运行一些软件,这些软件对连接到 NIC2 的设备执行诊断,有时这需要设备经历重置/重启循环。发生这种情况时,诊断软件将轮询以查看设备何时重新连接。

问题:有时设备需要更长的时间才能完成此重置/重启循环,并且如果软件轮询设备时设备仍然处于关闭状态,则操作系统将从 NIC 2(它应该在的位置)寻找它,然后开始在 NIC 1 上查找。

情节变得复杂起来:这一切都很好,只是该设备有一个非常常见的 IP 地址,如 192.168.1.1,人们不断将设备连接到具有相同 IP 的网络。我曾试图让 IT 部门阻止在网络上使用此 IP,或为我提供其他帮助,但无济于事。因此,当我运行的软件尝试连接到我的设备时,它恰好仍在完成重置并且没有响应,而 Windows 则在其他地方寻找它,它实际上找到了它!只是它不是它,而是具有相同 IP 地址的其他东西。因此,几秒钟后,当我想要通信的设备确实恢复时,该软件正忙于与其他东西通信,我遇到了超时、连锁故障和所有其他类型的麻烦。

我厌倦了尝试通过行政控制或政策来对抗系统,所以现在我正在寻找技术解决方案。

所以我的问题是:是否可以强制某个子网(例如 192.168.1.xxx)上的流量始终通过 NIC 2,而无论如何都不会尝试通过 NIC 1?即使它在 NIC 2 上找不到要查找的内容也不行?

限制和我已经尝试过的事情:

我需要两个 NIC 同时处于活动状态。我收集的数据存储在网络上的数据库中。我需要 NIC2 来收集数据,NIC1 来存储数据。

由于技术和政治等各种原因,我无法更改任何设备的 IP 地址,甚至设备本身也无法更改。

我确实可以完全控制我的站点,并且我尝试设置路由表,但这些似乎只能控制操作系统开始查找的位置的优先级,而不能控制可以查找的位置和不可能查找的位置。据我所知,没有可以放入路由表中的“不要使用此接口查找此目标 IP”条目。

答案1

问题:有时设备需要更长的时间才能完成此重置/重启循环,并且如果软件轮询设备时设备仍然处于关闭状态,则操作系统将从 NIC 2(它应该在的位置)寻找它,然后开始在 NIC 1 上查找。

通过便宜的以太网交换机连接设备。这将确保即使设备重新启动,操作系统看到的以太网链路也不会中断。这将允许通过 NIC 2 的路由始终保持有效。

答案2

通过删除 0.0.0.0/0 的默认路由,我能够实现我想要的功能。

然后,我创建了一个路由表,其中包含将非 192.0.0.0/255 流量定向到外部接口的条目。我使用以下 IP/掩码创建了 9 个条目:

  • 0.0.0.0/2
  • 64.0.0.0/2
  • 128.0.0.0/2
  • 224.0.0.0/3
  • 208.0.0.0/4
  • 200.0.0.0/5
  • 196.0.0.0/6
  • 194.0.0.0/7
  • 193.0.0.0/8

然后我添加了一个单独的路由条目

  • 192.168.1.0/24

唯一令人不安的副作用是 NCSI 指示没有互联网连接,尽管我可以访问我能想到的任何页面,包括文档表明 NCSI 用于确定连接的位置,www.msftconnecttest.com/connecttest.txthttp://www.msftncsi.com/ncsi.txt

显然,我干扰了 NCSI 使用的某些尚不清楚的路径的连接性,但是即使设备完全断开连接,前往 192.168.1.1 的流量也永远不会向外传输,而这正是我需要的功能。

答案3

假设您已eth0通过 DHCP 配置了某个 172.16.xx 地址,并且您的目标具有地址 192.168.1.1 并且直接连接到eth1

  • 配置eth1为192.168.1.2/30
  • eth0:1配置192.168.1.5/29子接口

现在,您的盒子通常会尝试通过最具体的路由(即通过 eth1)联系目标。如果由于目标已关闭而导致 eth1 没有链接,则第二佳路由将启动,即通过eth0:1- 并且会失败,因为“错误的”192.168.1.1 盒子位于该网卡的某个路由器后面。除非 eth0:1 也已关闭,但这应该意味着 eth0 也没有链接。

缺点:显然 192.168.1.1 也是您主网络中的有效地址。您的盒子无法使用上述方法访问地址 192.168.1.0 - 192.168.1.7。如果没有 eth0:1,只有最小范围 192.168.1.0 - 192.168.1.3 会无法正常工作。

相关内容