设置:我有一台装有 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.txt和http://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 会无法正常工作。