【发布时间】:2016-06-02 14:21:48
【问题描述】:
问题:
假设我的应用程序被连接尝试淹没(尝试 DDoS 攻击),并且我想从现在开始忽略来自某个端点的任何流量和连接尝试,那么过滤的最佳位置是什么?
用例:
在我的应用程序中,我使用 System.Net.TcpListener 来监听传入连接。 我天真的方法是只接受所有连接,检查端点,然后可能立即关闭连接。
有些事情告诉我,这不是很有效。即使只是在我的应用程序中单独接受时创建 TcpClient 也会消耗资源。
那么,我可以做些什么来可靠地拒绝来自某些端点/IP 的连接,同时在 Windows 上花费最少的资源呢? Linux 系统上的相同情况又如何呢?
在 Linux 上有“iptables”,它的效率是否最高? 在 Windows 上可以使用内置的防火墙系统。
是否有任何其他方法可以更有效地阻止来自软件中某个 ip 的连接?如果是这样,那是什么?
硬件防火墙:
请不要试图提及硬件防火墙和过滤器。我知道它们并且知道它们是为此目的而制造的,但这个问题明确涉及软件方面。
【问题讨论】:
-
没有比 IPTables 或集成的 windows 防火墙更高效的东西了,它们在操作系统中工作。水平,所以它是你能得到的最有效的。
标签: c# sockets networking tcp network-programming