强制 Windows 本地子网流量通过网关

强制 Windows 本地子网流量通过网关

我们正在尝试将所有流量从某台计算机路由到网关。这对于发往该计算机子网之外的子网的流量有效。但是,发往与源计算机位于同一子网中的计算机的流量会通过 Windows 中的 On-Link 网关。这意味着默认网关将被忽略,并且子网(例如,192.168.50.10 -> 192.168.50.11)中的流量将流动。

Destination Netmask     Gateway     Interface   Metric
192.168.50.0    255.255.255.0   On-link     192.168.50.214  276
  1. 可以从 Windows 中删除此路由,但当机器重新启动时它总会恢复。
  2. 向具有较低度量的网关添加持久静态路由不起作用,因为在持久路由失败后它仍会尝试 On-Link 网关。
  3. 由于我们的设置,无法将每台机器添加到 VLAN 中
  4. 添加启动脚本来删除网关也不是一个好选择,因为用户将拥有机器的完全管理访问权限并且可能会禁用该脚本。
  5. 我们无法使用免费 ARP 或透明代理透明地拦截子网上的所有网络流量,因为子网上还有其他机器使用不同的网关

我们让它工作的唯一方法是给子网流量的网关添加持久路由,并在重新启动时删除 On-link 路由。

问题是。

  1. 有没有办法永久删除此 On-link 路由
  2. 如果没有,是否有其他方法可以强制本地子网流量通过网关?

答案1

强制流量通过网关和阻止子网上的设备相互看到之间是有区别的。我认为你想做的是后者。可能是因为你想为多个外部客户托管服务器。如果你正在编辑路由表来实现这个目标,那你就找错地方了。

我的建议是使用 ACL 在交换机上处理这个问题。具体可以阻止/允许的内容取决于交换机的功能。另一种方法是阻止 ARP 广播,然后为默认网关设置静态 ARP 条目(从技术上讲,有人可以添加更多静态条目来与其他设备通信)。

另外,请记住,除非网关设置为阻止来自该段的流量,否则它会很乐意将流量直接路由回同一网络。

答案2

嗯,您的主机可能从 DHCP 服务器获取其默认路由。如果是这样,请设置 DHCP 预留。我想您可以将该主机预留的子网掩码设置为 255.255.255.255,这在技术上可以防止主机直接向子网中的其他主机传送数据包。所有流量都将通过默认网关。黑客仍然必须遵循网络规则,除非您的网络经过适当分段,否则这次黑客攻击会破坏很多规则。通常,仅仅假装子网掩码是 /24 段中的 /32 并希望用户不会更改它是不够的。这实际上并不安全。

想象一下一个数据中心托管着数千台服务器。管理员不会简单地相信每个人都正确配置了他们的 IP 地址和子网掩码,不会造成冲突等。只要主机位于同一网段,它们就可以相互通信。在这种情况下,挑战似乎是强制主机进入正确的网段,即一个除了交换机上的端口之外没有任何其他节点的单独网段。

最好的解决方案是托管交换机,可能是第 3 层交换机。例如 Cisco 3550。交换机将像路由器一样运行,在其所有本地子网之间路由流量。如前所述,使用 ACL 来防止跨网络通信。但是,您提到 VLAN 不是一种选择,因此您可能无法控制交换机。

更有创意的是:

建立一个真实或虚拟的网络段,例如 10.xyz/30,只有一个网关,并且没有由 dhcp 提供的默认路由。/30 cidr block 需要对网络子网划分有很好的理解。允许您控制的子网上的主机通过隧道连接到您的 vpn 网关,进行身份验证,然后才获得默认网关。OpenVpn 至少允许限制主机到主机的通信,因为所有流量当然都通过 vpn 服务器路由。这类似于在公共热点上使用 wifi,它们会阻止无线主机之间的流量。

或者,您可以使用透明代理,同样使用 acl 规则来阻止主机到主机的通信。不确定这是否能满足您的需求。

总结一下,真正的挑战是阻止同一子网上的主机到主机通信。离散子网只是过滤 arp 数据包的一种方法。可能某些 arp hack 可以实现这一点。

答案3

最终,我们没能找到不使用启动脚本就能完成上述任何一项操作的方法。无论我们做什么,删除 On-Link 路由都不会持续,而且由于上述原因,我们无法使用任何其他选项(透明代理、VLAN 等)。

最后我们添加了一个启动脚本来运行

 ROUTE DELETE 192.168.50.0

启动时。该脚本被放在一个仅供我们的用户(非管理员)使用的目录中,并在启动时运行。我们还添加了一个自定义 Nagios 脚本,该脚本运行此命令并检查路由表在此之后是否没有发生变化。

相关内容