{"repo":"zfl9/ss-tproxy","free":true,"listed":false,"github":"https://github.com/zfl9/ss-tproxy","clone":"git clone https://github.com/zfl9/ss-tproxy.git","description":"ss/v2ray/xray/trojan/hysteria/naive/socks5 透明代理","language":"Shell","stars":2394,"topics":["ss","ssr","v2ray","socks5","transparent-proxy","gfwlist","chnroute","tproxy","proxy","shadowsocks"],"license":"AGPL-3.0","category":"networking-infra","readme_excerpt":"Linux 透明代理 什么是正向代理？ 科学上网套件通常分为客户端（client）和服务端（server），server 运行在境外服务器（通常为 Linux 服务器），client 运行在本地主机（如 Windows、Linux、Android、iOS）。本文只关心 client。大多数 client 被实现为一个本地的 http、socks5 代理服务器（如 ss-local），一个程序如果想通过 client 科学上网，必须对它进行特定的设置，使其通过 http、socks5 协议与 client 进行通信，这是大多数人的使用方式。这种代理方式，我们称之为 正向代理 。 什么是透明代理？ 在正向代理中，一个程序要想走代理，必须显式的对其进行一些设置，对该程序来说，有没有走代理是很明确的，大家都“心知肚明”。而透明代理则与之相反，以 Linux 为例，当我们设置好适当的 iptables 规则后，我们将不再需要显式的配置这些程序来让其经过代理或者不经过代理（直连），因为这些程序传出的流量会自动被 iptables 规则处理，那些我们认为需要走代理的流量，会通过合适的方法送往 client，不需要走代理的流量则直接放行（直连）。这个过程对于我们使用的程序来说是完全透明的，程序自身对其一无所知。这就叫做 透明代理 。注意，所谓透明是对我们使用的程序（如浏览器）透明，而非对 client、server 或目标网站透明，理解这一点非常重要。 透明代理如何工作？ 在透明代理中，那些需要走代理的流量，会通过“合适的方法”送往 client。具体到 iptables，有两种方式： - REDIRECT：支持 TCP 协议的透明代理。 - TPROXY：支持 TCP 和 UDP 协议的透明代理。 为方便叙述，本文以 纯 TPROXY 模式 指代 TCP 和 UDP 都使用 TPROXY 来实现，以 REDIRECT + TPROXY 模式 指代 TCP 使用 REDIRECT 实现，而 UDP 使用 TPROXY 来实现，有时候简称 REDIRECT 模式 ，它们都是一个意思。 除了 iptables 这边的支持，client 这边当然也需要实现相应的“传入协议”： - 普通代理：client 实现的是 http、socks5 传入协议。 - 透明代理：client 实现的是 透明代理 传入协议。 以常见的科学上网套件为例： - ss：ss-libev 的 ss-redir 支持透明代理传入，ss-rust 支持透明代理传入。 - ssr：ssr-libev 的 ssr-redir 支持透明代理传入。 - v2ray：通过 dokodemo-door 入站协议来支持透明代理传入。 - trojan：通过 \"run type\": \"nat\" 来支持透明代理传入。 不同科学上网套件，对透明代理传入的支持度并不相同： - ss-libev 支持 TCP 和 UDP 透明代理，3.3.5 版本开始，TCP 支持 TPROXY 传入。 - ssr-libev 支持 TCP 和 UDP 透明代理，TCP 只支持 REDIRECT 传入。 - v2ray 支持 TCP 和 UDP 透明代理，TCP 根据配置可选择 REDIRECT 或 TPROXY 传入。 - trojan 支持 TCP 透明代理，TCP 只支持 REDIRECT 传入。 - trojan-go 支持 TCP 和 UDP 透明代理，TCP 使用 TPROXY 传入。 另外，是否支持 UDP 还取决于 se","default_branch":null,"files":null,"tree":[],"storefront":"/r/zfl9","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/zfl9/ss-tproxy/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}