拦截http代理 - 与普通代理相比的缺点

时间:2012-02-14 09:54:05

标签: networking proxy network-programming network-protocols

我想知道如何“现实”考虑实现拦截代理(具有缓存支持)以实现 Web过滤的目的。我也想支持IPv6,客户端身份验证和缓存。

阅读实现拦截代理的squid wiki http://wiki.squid-cache.org/SquidFaq/InterceptionProxy的缺点列表,它提到了一些在使用时需要考虑的缺点(我想澄清):

  1. 需要带NAT的IPv4 - 代理拦截不支持IPv6,为什么?
  2. 它会导致路径MTU(PMTUD)可能失败 - 为什么?
  3. 代理身份验证不起作用 - 客户端认为它直接与原始服务器通信,在这种情况下是否有办法进行身份验证?
  4. 拦截缓存仅支持HTTP协议,而不支持gopher,SSL或FTP。您无法为除HTTP以外的其他协议为代理服务器设置重定向规则,因为它不知道如何处理它 - 这似乎很合理,因为在这种情况下将流量重定向到代理的方式是通过防火墙更改从始发服务器到代理自己的地址(目标NAT)的数据包的目标地址。在这种情况下,如果我想拦截除http以外的其他协议知道连接的目的地,那么我可以将它转发到该目的地吗?

1 个答案:

答案 0 :(得分:1)

  1. 可能会以多种方式截获流量。它不一定需要使用NAT(IPv6不支持)。例如,透明拦截肯定不会使用NAT(透明,因为Proxy不会使用自己的地址生成请求,而是使用客户端地址,欺骗IP地址)。

  2. PMTUD用于检测客户端和服务器之间路径中可用的最大MTU大小,反之亦然,它有助于避免客户端和服务器之间路径上的Ip数据包碎片化。当您在中间使用代理时,即使检测到MTU,它也不一定与从客户端到代理以及从代理到服务器的代理相同。但这并不总是相关的,这取决于所服务的流量以及代理的行为方式。

  3. 如果代理服务器代表客户端进行身份验证,则需要知道身份验证方法,并且可能需要客户端中存在的某些cookie。可以这样想......如果代理可以代表您验证对受限资源的访问权限,则意味着任何人都可以代表您进行访问,并且良好身份验证的目的是保护您免受此类可能性的侵害。

  4. 我想这是来自Squid人员的一篇非常古老的帖子,但该技术可以将您想要的任何内容重定向到特定的服务器。一种简单的方法是将您的服务器作为网络的默认网关,然后所有数据包都通过它,您可以将您喜欢的数据包重定向到您的应用程序(或其他服务器)。并且您不仅限于HTTP,但您仅限于应用程序协议的工作方式。