如何实现Web流量的OpenDNS样式代理

时间:2010-08-15 18:56:20

标签: networking proxy dns reverse-proxy

我有一个要求,我认为可能是不可能的,并希望与此社区的专家确认。

客户希望我们配置DNS服务器,将所有非白名单的域指向Internet上服务器的IP地址。此服务器应尽可能准确地将所有非http流量转发/重定向到与真实DNS记录关联的IP地址。但是,对于所有端口80流量,它应拦截流量并转发到Web代理。理论上,如果我们有一大块公共IP地址可以根据发送方的IP智能路由到正确的目的地,那么理论上是可行的,但是需要通过工程工作来保持DNS请求和后续请求同步到同一个域会是巨大的。更不用说我们将受限于并发性的观点。这可能类似于OpenDNS如何进行DNS +代理,但他们似乎只为google.com做这件事。这需要适用于任意一组域(可能是所有域)。

上述方法是否可行?如果没有,还有其他方法可以解决这个问题,而不需要专门的网关硬件吗?

理想情况下,系统将最大限度地减少带宽使用和非http流量的延迟,除了DNS或防火墙配置之外不需要任何其他内容。我意识到我们可以在防火墙级别转发所有http流量,但客户端希望避免对CDN或媒体繁重站点的http请求,以及最大限度地减少跨不同网络配置的部署工作。

3 个答案:

答案 0 :(得分:0)

OpenDNS的工作原理是黑名单而不是白名单

当主机被列入黑名单时,openDNS会将名称解析为其IP地址,从而阻止客户端访问真实IP。

在您的情况下,看起来您需要透明代理,您可以将所有HTTP流量路由到代理服务器:

见:

答案 1 :(得分:0)

这可能不是您想要的,但请查看我的文章" How To Setup A Transparent Content Filtering Proxy"我利用OpenDNS的黑名单功能。

答案 2 :(得分:0)

你可以用两件来做:

  1. 配置了*的DNS解析器。指向IP A.B.C.D(通配符)
  2. NGINX反向代理侦听A.B.C.D代理请求到主机头中存在的域。