3

我有一个程序可以告诉您您的计算机是否在线。我这样做的方式是借助基本上向客户端发送 UDP 数据包的服务器。客户端然后回复让服务器知道他们在线。如果客户端在接下来的 5 秒内没有响应,那么我将其标记为离线。

无论如何,我正在测试这项服务,并从另一台计算机向服务器发送了数千个 udp 数据包。在发送了这么多包之后,服务器没有按照预期的方式工作。

所以我知道是否有人向我发送了很多数据包。问题是我如何阻止这些包以便我的服务器仍然可以工作?


编辑可能的解决方案

我想我会实施以下解决方案,你们怎么看?

我现在需要 2 个或更多服务器。如果一个客户端发现服务器没有响应,那么它将与第二个服务器通信。所以攻击者还必须知道还有第二台服务器。根据您想要的安全程度,您甚至可以拥有 5 台服务器。我想如果攻击者知道有 5 台服务器,那我只是在浪费我的时间和金钱,对吧?哈哈

4

1 回答 1

2

对此的一般解决方案是您购买额外的硬件,这些硬件位于查看传入数据包的计算机前面。

额外硬件的作用取决于您要使用的解决方案,您可以让该硬件将请求分发到所有运行相同软件的许多服务器(这将使您添加的硬件成为负载均衡器)。您还可以让硬件检测到来自单个地址的异常大量数据包,然后硬件可以开始从该地址丢弃数据包,而不是将它们转发到服务器(这将使您添加的硬件有状态防火墙

除了这两个之外,还有更多选择,但所有解决方案都围绕着减少服务器上的负载(通常将负载转移到另一块专门承担负载的硬件)。您可能会升级您的软件,使其对数据包泛滥更具弹性,但除非您当前的软件编写得非常糟糕,否则它不会为您购买太多的容量。

于 2013-11-22T15:32:47.897 回答