如何在Windows上过滤到特定域名的网络连接

ano*_*245 6 .net c# windows winapi wfp

我想实现一个Windows服务,该服务默认阻止/允许所有网络连接和白名单/黑名单特定域名(如google.com).

我查看了Windows过滤平台,但似乎我不能过滤域名,只能在精确的IP上过滤.问题是与域名相对应的IP可能会随时间而变化,并且一个域名可能有多个.

如何对域名进行过滤?

Χpẘ*_*Χpẘ 4

请注意,如果您仅按 DNS 名称进行过滤,则使用 IP 地址很容易绕过您的过滤器。所以通过IP地址进行过滤会更加稳健。

您可以进行反向 IP 查找来获取关联的域名。您可能想要实现反向 IP 地址查找缓存。当条目超出其 DNS TTL 时,您将刷新缓存中的条目。

如果您只想坚持使用域名(并且取决于您想要进行过滤的位置),您可以挂接winsock.dll。在SO上看到这个。你的winsock钩子会过滤gethostbyname()解析DNS名称的其他API。