目前我正在设计一个网络。问题是在某个时候我遇到了一个奇怪的请求。客户对她/他自己提出了一些想法。现在我很困扰,因为我对这件事的了解不够深。我无法确定请求本身是否存在固有问题,以及是否有如何将它们传达给客户。该请求特别适用于两台服务器,具体如下:
物理网络(简化):
router.eth0 <--> switch.eth0 | switch.eth1 <--> server1.eth0 | server1.eth1 <--> server2.eth0
逻辑网络:
+----------+ +----------+ +----------+ +----------+
| router | | switch | | server1 | | server2 |
| untagged | <--> | untagged | | | | |
+----------+ | vlan 10 | <----+----------+----> | vlan 10 |
| | | untagged | <--> | untagged |
+----------+ +----------+ +----------+
因此,来自路由器的每个请求首先标记到 vlan 10 并发送到 server1。server1 然后将这些数据包转发到 server2,而 server1 对 vlan 10 数据包没有反应。之后 server2 从 vlan 10 取消标记数据包,并根据数据包的内容将其中一些转发回 server1 或自行处理。最后 server1 可以响应这些数据包,因为它们现在没有标记。
抢先提出一些建议:我知道将 server2 直接连接到路由器并将 server1 连接到 server2 会更容易,但是如果这种方法没有安全问题,客户端会坚持这样做。客户端还将其设置为要求所有指向 server1 的数据包都必须由 server2 处理。
我现在的问题是攻击者是否可以破坏此设置。这样,如果他获得了对其他路由器的控制权。攻击者能否利用通过 server1 的数据包流来发挥自己的优势(不包括拒绝服务)?例如,攻击者能否伪造可以直接发往 server1 且不流经 server2 的数据包?
如果一切都完全按照描述进行配置,攻击者应该无法伪造数据包或直接到达 server1。可以安全地配置它。
但这种设置仍然存在严重缺陷:
最重要的是,它太复杂了。虽然可以这样配置,但为什么要故意这样配置呢?增加复杂性的目的是什么,为什么要做的事情比他们需要的更复杂?有时会说计算机系统的设计质量是用 WTF 来衡量的,WTF 询问审核员的次数越多,系统就越出乎意料地复杂(即设计越差);确实是这样,WTF是这样的吗?
其次,这种设置引入了一个故障点,使系统更难诊断和修复。观察到失败
server1
会导致server2
无法访问,即使它工作得很好;server2
意志的失败server1
也无法访问,即使它也很好。您无法真正区分这两种情况。想象一下,您遇到了两台服务器都无法访问的情况。你觉得哪一个失败了?您无法提供任何大致的指示来及早诊断和修复系统。您需要从一开始就仔细检查所有内容,并且无法远程完成任何事情。这样,它需要额外的不合理的维护。您的客户是否愿意为这些额外的工作支付更多费用,而通过适当的网络设计可以轻松避免(或至少降低可能性)这种费用?此外,这种设置非常脆弱。其他可能的设置可以证明一些错误是合理的;如果在不明显的地方犯了一个错误,这将显示违规行为。对于一些刚刚面临这种设置的新员工来说,应该启用什么以及在哪里启用并不明显。您需要非常仔细地在 server1 上配置 VLAN,因为它不接受来自交换机端的未标记数据包。如果它错误地接受,则设置有缺陷并且条件 server1 不可访问,除非通过 server2 不再成立;这为伪造的数据包创造了一个洞。
最后,它效率低下,可能导致 DoS。预计两条链路都是 1Gbps 是正常的。我们不知道将在 server1 上运行哪种服务,但为简单起见,我将描述一个最简单的情况,它具有对称的典型流量分布:传入流量大约等于传出流量。在这种情况下,链接 server1-server2 的加载量始终是链接 switch-server1 的两倍。当链路 switch-server1 上的负载仅超过其容量的 50% 时,如果所有流量都预计通过 server2 到达 server1,则服务器之间的链路将超出其容量并且数据包将被丢弃。另外,server1 必须桥接网络,这将由 CPU 完成;它不是很高的负载,但它仍然会产生中断,上下文切换,所以 server1 必须做一些完全不需要的工作。这是政府一直喜欢的设置类型,它让他们的员工忙碌而没有做任何有用的工作,只是来回移动纸张。
如果服务器以“正确的顺序”连接并且没有 VLAN,所有这些问题当然都会消失。也可能是星形网络拓扑,在这种情况下,所有设备(路由器、两台服务器)都直接连接到交换机,然后所有 VLAN 处理都在交换机上完成。Star-like 也“有点”没有这些问题。它只描述了链路过载的问题,但在这种情况下更容易解决,在交换机上安全配置 VLAN 自然比在服务器上更容易。