微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何筛选Windows上的特定域名的networking连接

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

我查看了Windows Filtering Platform,但似乎我无法过滤域名,只能在确切的IP上进行过滤。 问题是与域名相对应的IP可能随时间而改变,并且可能有多个域名。

我怎样才能做这个域名过滤?

如何禁用.NET Frameworkexception处理并使用我自己的呢?

在应用程序启动时禁用Windows服务

什么是最安全的方式来检索系统驱动器

如何使用来自资源的值和来自XAML中Binding的值格式化string?

我如何自动创build用户的备份?

何时/如何取消注册RegisteredWaitHandle

添加到Windows Shell扩展上下文菜单

从本地C调用.NET托pipe代码

C# – 方法必须有返回types

Windows Mobile开发:.Net精简版与原生(c ++)代码的select

请注意,如果您只按DNS名称进行过滤,则可以通过使用IP地址轻松规避过滤器。 所以通过IP地址进行过滤将会更加健壮。

您可以执行反向IP查找以获取关联的域名。 您可能需要实施反向IP地址查找缓存。 当他们超过了他们的DNS TTL时,你会刷新缓存中的条目。

如果你想坚持域名(并根据你想要做的过滤),你可以钩winsock.dll。 在SO上看到这个 。 您的winsock挂钩将过滤gethostbyname()和其他解析DNS名称的API。

在浏览器连接到由域名标识的主机之前,它会为该域名发出DNS查询。 您可以创建网络过滤器驱动程序来拦截DNS响应数据包,甚至修改它们。 例如,如果特定域名被列入黑名单,那么您可以修改DNS响应,并将IP地址更改为使用HTTP服务器的主机的IP,从而显示“Web站点被阻止”等消息。

另一种可能的方法是玩HTTP GET请求。 您可以检测到数据包中的禁用URL,并丢弃会话或可选伪造并注入重定向数据包。 有一个名为wwwcensor的示例代码演示了如何做到这一点。

更复杂的方法是实现重定向器+ http代理,基于包过滤器驱动程序的重定向器可以透明地将传出连接重定向到本地http代理,而后者又可以决定如何处理特定会话。 示例源代码LAN HTTP监视器演示了如何实现。 尽管此示例应该在网关上运行(例如,在启用了ICS的Windows主机上),并将连接从LAN重定向到Internet,但是可以轻松修改它以重定向本地连接。

披露:我创作了这篇文章中提到的示例代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐