什么是Tproxy透明代理

文章目录

  • 什么是Tproxy透明代理
    • 1 什么是代理?
      • 1.1 代理的功能
      • 1.2 代理的分类
    • 2 使用 tproxy 透明代理
    • 3 透明代理的优点
    • 4 透明代理的缺点
    • 5 总结

转载自:https://jimmysong.io/blog/what-is-tproxy/

本文介绍了 tproxy 透明代理及其使用方法。

  • 日期 :2022年11月21日
  • 分类 : 其他
  • 字数 :1513 字
  • 阅读大约需要 :7 分钟

在 Istio 最新的 Ambient 模式中,使用了 tproxy 做透明流量劫持(见此博客 ),这与 Sidecar 模式中基于 IPtables 的流量劫持方式有些许不同,这篇文文章,我们就就一起来探究下什么是 tproxy。

1 什么是代理?

在介绍透明代理之前,我们先了解下什么是代理。

1.1 代理的功能

代理在互联网中的用途非常广泛,例如:

  • 缓存请求:加快网络响应速度,作用类似于 CDN;
  • 请求过滤:用于网络监管,屏蔽或允许对某些主机、网站的访问;
  • 请求转发:用于负载均衡或作为网络中继;
  • 流量管理:对进出代理的流量进行细粒度的管理,例如按百分比发布到不同的后端、超时和重试设置、熔断等;
  • 安全审计:记录和限制客户端请求,用于计费或审计;

1.2 代理的分类

代理的分类方式有很多,下图根据代理的位置将其划分为了两类:

  • 前向代理(Forward Proxy):运行在客户端侧,代替客户端想服务端发送请求,例如我们日常使用的各种科学上网代理;
  • 反向代理(Reverse Proxy):代替服务端接受互联网或外部请求,然后将请求路由到对应的服务端,例如各种 Web 服务器,在这里 你可以看到一个代理列表;

代理可能与客户端或服务器位于同一节点(或网络空间,如 Kubernetes 中的 Pod),也可以位于远端。另外还可以根据代理对客户端或服务端是否可见(visible)来分为透明代理和非透明代理。下图展示了客户端(A)通过代理(B)向服务端(C)发送请求的过程。

非透明代理和透明代理

  • 非透明代理:客户端需要修改目的地址为代理服务器的地址,并使用代理协议连接代理服务器;
  • 透明代理:所谓透明代理,即客户端和服务端感知不到代理的存在,客户端无需修改目的地址,也不需要采用代理协议连接代理服务器,所有目的地址转换都是在透明代理中完成的;

2 使用 tproxy 透明代理

tproxy 是 Linux 的内核模块(自 Linux 2.2 版本开始引入),用于实现透明代理,其名称中的字母 t 即代表透明(transparent)。

要使用透明代理首先需要把指定的数据包使用 iptables 拦截到指定的网卡上,然后在该网卡监听并转发数据包。

使用 tproxy 实现透明代理的步骤如下:

  1. 首先需要实现流量拦截:在 iptables 的 PREROUTING 链的 mangle 表中创建一个规则,拦截流量发送给 tproxy 处理,例如 iptables -t mangle -A PREROUTING -p tcp -dport 9080 -j TPROXY --on-port 15001 --on-ip 127.0.0.1 --tproxy-mark 0x1/0x1,给所有目的地为 9080 端口的 TCP 数据包打上标记 1,你还可以指定来源 IP 地址或者 IP 集 ,进一步缩小标记范围,tproxy 监听在 15001 端口;
  2. 创建一个路由规则,将所有带有标记 1 的数据包查找特定的路由表:例如 ip rule add fwmark 1 lookup 100,让所有 fwmark 为 1 的数据包查找 100 路由表;
  3. 将数据包映射到特定的本地地址:例如 ip rule add local 0.0.0.0/0 dev lo table 100,在 100 路由表中将所有 IPv4 地址声明为本地,当然这只是一个例子,实际使用时需要请将特定的 IP 的数据包转发到本地的 lo 回环网卡;
  4. 至此流量已被拦截到 tproxy 的监听端口 15001(从 Linux 内核空间进入用户空间),你可以编写网络应用处理数据包或使用 Squid 或 Envoy 等支持 tproxy 的软件来处理数据包;

3 透明代理的优点

透明代理具有以下优点:

  • 透明代理提供更高的带宽并减少传输延迟,从而提高服务质量;
  • 用户无需配置网络和主机;
  • 企业可以控制对其网络服务的访问;
  • 用户可以通过透明代理连接互联网以绕过一些监管;

4 透明代理的缺点

透明代理有以下缺点:

  • 如果透明代理配置不当,可能导致用户无法连接互联网,而对于不知情的用户来说,他们无法排查和修改透明代理中的错误;
  • 透明代理的安全性无法得到保证,因为被拦截的用户流量可能被透明代理篡改;
  • 透明代理可能缓存用户信息,导致用户隐私泄露的风险;

5 总结

透明代理作为代理中的一类重要类型,它的用途广泛,不论是 xray、clash 等代理软件,还是 Istio 服务网格中得使用了应用。了解它的原理和工作方式有助于我们科学正确的使用代理,而是否使用透明代理取决于你对它的信任和了解程度。
我们一般使用的浏览器代理及服务器反向代理都不是透明代理。

# 什么是Tproxy透明代理相关推荐

  1. 什么是 tproxy 透明代理?

    在 Istio 最新的 Ambient 模式中,使用了 tproxy 做透明流量劫持(见此博客 [1] ),这与 Sidecar 模式中基于 IPtables 的流量劫持方式有些许不同,这篇文文章,我 ...

  2. iptables:tproxy做透明代理

    什么是透明代理 客户端向真实服务器发起连接,代理机冒充服务器与客户端建立连接,并以客户端ip与真实服务器建立连接进行代理转发.因此对于客户端与服务器来说,代理机都是透明的. 如何建立透明代理 本地so ...

  3. tproxy_Linux使用TPROXY进行UDP的透明代理

    1.为什么使用TPROXY才能代理UDP 在进行TCP的代理时,只要在NET表上无脑进行REDIRECT就好了.例如使用ss-redir,你只要把tcp的流量redirect到ss-redir监听的端 ...

  4. Haproxy全透明代理

    1. 系统环境搭建 操作系统Centos7 内核版本3.10 Centos7已自带TPROXY模块,不需要安装TPROXY 2. Haproxy下载,编译,安装,配置 下载地址 http://www. ...

  5. 记玄妙莫测的透明代理

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权. 若无特殊说明,内核源码版本为4.1 ...

  6. tpproxy-tcp透明代理

    tcp transparent proxy Background  最近有个需求,需要在路由器设备中截获数据包,从而实现中转.按照下面的拓补,说明.我们需要在主机h2上截获h1发往h3的TCP协议包. ...

  7. redsocks 透明代理

    整体架构 #mermaid-svg-ON8oZJjAaCC8MQPU .label{font-family:'trebuchet ms', verdana, arial;font-family:var ...

  8. WAF nginx反向代理和透明代理

    下面看一下实例:反向代理(10.0.13.222)和透明代理(10.0.1.66)站点. 反向代理: Nginx自带反向代理功能,只需在Linux系统上开启相应的端口. 反向代理规则链移植: ipta ...

  9. 绑定非本机地址与透明代理

    内核代码 内核中对绑定非本地地址的相关判断代码,位于net/ipv4/af_inet.c中: int inet_bind(struct socket *sock, struct sockaddr *u ...

最新文章

  1. 一文讲清楚什么是迁移学习?以及它都用在哪些深度学习场景?
  2. 【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
  3. 支付宝18年账单已出,你消费了多少钱?
  4. 21 Fragment和短语法应用
  5. createjs中shape的属性regX和regY
  6. Python SimpleITK实现医学图像增强算法
  7. 投递简历得不到回复,并不是你的简历不好,可能是这个原因
  8. django-多级联动课堂版0912
  9. antimalware service executable占用内存过高_SQLServer占用服务器内存过高,更改这个设置就能降低内存使用率
  10. 面向对象分析过程案例实战
  11. Android背景图片设置
  12. 字典攻击——彩虹表攻击与防御
  13. java ror_Java会因为RoR的流行而过时吗?
  14. 斐讯K3路由器TTL快速刷机
  15. Libfetion在Ubuntu下的中文输出了局
  16. 怎样将生成的pdf文件转为eps文件
  17. HTTP ERROR 404 Problem accessing /hwi/authorize.jsp. Reason: HWI HIVE
  18. 概率熵物质混乱能量耗散信息熵
  19. kali linux 账号管理
  20. 文件上传到云服务器对象存储oos流程

热门文章

  1. vue组件传值方式有哪些
  2. 10s型计算机在线使用,Win10系统使用教程 windows10S新特性有哪些
  3. 汽车速度性能测试软件,最高速度代表性能?这款软件让你了解固态硬盘的真实性能...
  4. 苹果a13_苹果A13跑分出炉,今年依旧秒安卓
  5. python超出范围异常处理_Python异常处理
  6. #Redis问题排查#Connection failure occurred
  7. 驴子圈资讯:同程发力无线业务布局休闲旅游O2O
  8. Fusion360学习记录:灯泡
  9. Nginx配置WS代理
  10. wenxue city