我希望实现一个Windows,默认情况下,它将阻止/允许所有网络连接和白名单/黑名单特定域名(如google.com)。
我看了Windows过滤平台,但似乎我不能过滤域名,只有在确切的IP上。问题是,与域名相对应的is可能会随着时间的推移而发生变化,一个域名可能会有多个。
如何对域名进行此筛选?
发布于 2016-03-24 00:43:13
请注意,如果您只使用DNS名称进行筛选,则可以通过使用IP地址轻松绕过筛选器。因此,按IP地址进行过滤将更加健壮。
您可以进行反向IP查找以获取相关的域名。您可能希望实现反向IP地址查找缓存。当条目超过其DNS TTL时,您将在缓存中刷新它们。
如果您想只使用域名(以及您想要进行筛选的位置),则可以挂起winsock.dll。参见这 on SO。您的winsock挂钩将过滤解析DNS名称的gethostbyname()和其他API。
发布于 2016-05-07 11:27:01
在浏览器连接到由域名标识的主机之前,它为该域名发出DNS查询。您可以创建一个网络过滤驱动程序来拦截DNS响应数据包,甚至修改它们。例如,如果特定的域名被列入黑名单,那么您可以修改DNS响应并使用HTTP-server将IP地址更改为主机的IP,这将显示类似于“网站被阻塞”的消息。
另一种可能的方法是围绕HTTP请求进行操作。您可以在数据包中检测到禁止的URL并删除会话,也可以选择伪造和注入重定向数据包。有一个名为审查员的示例代码,它演示了如何做到这一点。
更复杂的方法是实现重定向器+ http代理,构建在包过滤驱动程序上的重定向器可以透明地将传出连接重定向到本地http代理,后者可以决定如何处理特定会话。示例源代码局域网HTTP监视器演示了如何实现这一点。虽然这个示例应该在网关上运行(例如,在启用ICS的Windows主机上)并将连接从LAN重定向到Internet,但是可以很容易地修改它以重定向本地连接。
公开:我撰写了本文中提到的示例代码。
https://stackoverflow.com/questions/36184346
复制相似问题