深色proxyscrape 徽标

什么是透明代理?

代理, 2021 年 7 月 4 日5 分钟阅读

We can define a transparent proxy as a server that acts as an intermediary system intercepting the connection between an end-user and a content provider. Other names for transparent proxy are inline proxy or forced proxy. We use the word ‘transparent’ with the proxy because it intercepts requests by intercepting packets directed to the destination

我们可以把透明代理定义为作为中间系统拦截终端用户和内容提供商之间连接的服务器。透明代理的其他名称还有内联代理或强制代理。我们用 "透明 "一词来形容代理,是因为它通过拦截指向目的地的数据包来拦截请求,让人觉得是目的地自己在处理请求。透明代理由网站或网络运营商设置,而不是由终端用户设置。

有时,我们也用 "强制代理 "来表示透明代理。这是因为它可以在不修改用户电脑代理设置的情况下应用于用户连接。因此,透明代理可以在未经用户同意的情况下强制用户使用,但在很多情况下用户确实知道它们的存在。 

透明代理示例

防火墙就是透明代理的一个例子,它允许内部网络和互联网之间的流量通过,但如果流量违反了防火墙的规则表,则会被阻止。

透明代理的其他例子还有内容交付网络(CDN)。它们在不修改或暴露源系统的情况下提供冗余、缓存并提高速度。用户以为自己直接连接到了服务提供商,但实际上,CDN 会处理用户的所有请求。谷歌、Twitter 和 Facebook 等科技公司就是这样以最少的停机时间管理数百万个请求的。

常用透明代理设置

以下是我们设置透明代理时的标准设置:

  • 身份验证: 它为服务器提供与代理后面的用户相同的凭证。
  • 拦截: 它定义了透明代理如何在路由器层或操作系统层拦截流量。
  • 缓存: 指定代理服务器是否应为返回用户缓存内容。
  • 反向代理:与其设置代理拦截远程访问,我们可以将其置于网络服务器之前,以加快用户性能。 
  • 数据流、聊天过滤: 我们可以 配置透明代理,禁止用户访问特定端口或协议。

透明代理的使用 - 客户端

我们可以在客户端部署透明代理,即代理拦截所有进出客户端终端的流量。客户端透明代理的用途包括

透明缓存

当多人从同一区域或地点访问同一内容时--例如,当多名学生通过大学网络浏览同一新闻网站时,使用透明代理对内容进行初始缓存并从缓存中向后续用户提供服务会更有效。

认证

蜂窝网络运营商和公共 wifi 点有时会使用透明代理,强迫用户在网络上进行身份验证并同意其服务条款。只有当用户认证并同意条款和条件后,他们才可以上网。 

大多数用户不知道,即使在通过透明代理进行初始验证屏幕之后,整个连接也会被运营商拦截和监控。

交通监控

在运营网络时,我们可以设置透明代理来监控用户流量和行为,但流量监控也有很多非法用途。例如,肆无忌惮、不可信的公共 wifi 运营商可以轻松监控用户连接,窃取凭证和数据。

网关代理

我们可以使用网关代理,根据规则修改或阻止网络流量。上例中讨论的透明防火墙代理就是网关代理的一个例子。

内容过滤

我们还可以使用透明代理来过滤不必要和不需要的内容。例如,在请求访问特定网站时,代理可以避免将请求转发到网络服务器。相反,它会拦截连接,并向用户显示通知或错误信息。

透明代理的使用 - 服务器端

拒绝服务(Dos)保护

我们可以使用一种透明代理(即 TCP 拦截)来保护服务器免受 SYN-flood 拒绝服务(DoS)攻击。它的功能是拦截到网络服务器的所有流量,接受客户端请求,并执行三方握手。此外,如果流量拦截成功,它还会与服务器进行三方握手,从而连接客户端和服务器之间的两个半连接。

传输控制协议拦截器会检查 TCP 请求,通常会等待 30 秒来建立连接。当非活动连接的数量超过一定阈值时,它就会进入 "攻击模式"。在这种模式下,每个新连接的到来都会导致最旧的被动连接被删除。

然而,上述技术已无法有效对抗现代大规模分布式拒绝服务(DDoS)攻击。这是因为,如今的攻击者控制着数百万台僵尸计算机和大功率服务器来制造 SYN 洪水,使 TCP 拦截控制器不堪重负。

正因为如此,如今大多数企业都使用基于云的服务,如 Imperva 的 DDoS 防护。这些服务可以抵御大规模 DDoS 攻击,还可以按需扩展,进一步应对和处理大规模攻击。 

例如,DDoS 服务可以防止不在 TCP 层发生的应用层攻击和协议攻击。

前端优化的 CDN

我们可以把内容分发网络(CDN)定义为一个由代理服务器组成的全球分布式网络,为用户提供服务并缓存其地理位置附近的内容。

Imperva的全球内容交付网络(Global Content Delivery Network)就是CDN的一个例子,它是一个在服务器端运行的透明代理。其目的是执行前端优化,以改善终端用户体验。它拦截到网络服务器的流量,并从服务器缓存中提供相同的内容,而不是让用户直接访问服务器。因此,用户性能得到了提高,服务器所需的系统资源也减少了。

透明代理的局限性

虽然透明代理具有多种优势,但在复杂的企业环境中也会产生一些问题。

缺乏稳健性: 如果客户端与高速缓存之间建立了连接,但路由发生变化,导致客户端采用的路径不再流经 "分流 "网络设备,会话就会中断,用户必须重新加载页面。

另一方面,如果互联网上的路由器在不停地跳转(路由器以快速的顺序交替宣传目的地网络),那么结果将更加难以预测。

浏览器依赖性: 大多数透明代理都依赖浏览器在 HTTP 请求头中提供源服务器的主机名才能成功运行。

之所以需要这样做,是因为这些缓存无法从数据包的 IP 地址访问源服务器的目标 IP 地址。

因此,当发生缓存缺失时,它们无法确定向哪个源服务器地址发送请求。

结论

我们讨论过,使用透明代理可以监控和过滤互联网流量。它还改变了我们与网络交互的方式。无论是通过过滤掉不需要的内容、高速缓存来更快地提供数据,还是让企业对其网络有更多的控制权,透明代理都为互联网增添了功能,而不会带来任何不便。