Clash 透明代理(TPROXY)配置完全教程:网关级全局代理

立即下载Clash入门 全平台支持 · 官方最新版

什么是 Clash 透明代理

普通 Clash 客户端工作时,需要应用程序主动配置 HTTP/SOCKS 代理才能将流量导向 Clash。而**透明代理(Transparent Proxy)**则是在网络层截获流量,无需应用配合即可实现全局代理。

Clash 透明代理主要有两种实现方式:

  1. TUN 模式:创建虚拟网卡,通过路由表将系统流量导入虚拟网卡,由 Clash 处理。适合单机使用。
  2. TPROXY 模式:利用 Linux 内核的 TPROXY 机制,在 Netfilter 层面重定向流量到 Clash 监听端口。适合网关/路由器部署。

本文重点讲解 TPROXY 模式,这是在 OpenWrt 软路由、Linux 网关上实现全局代理的主流方案。

TPROXY 与 TUN 的区别

对比项 TPROXY 模式 TUN 模式
工作层级 Netfilter(网络层) 虚拟网卡(链路层)
需要内核模块 是(xt_TPROXY) 否
适合场景 网关/旁路由 单机
性能 较高(内核态转发) 稍低(用户态处理)
配置复杂度 高 低
UDP 支持 原生支持 需额外配置
全局代理 是(网关下所有设备) 是(仅本机)

简单理解:TUN 适合个人电脑,TPROXY 适合路由器给全家设备代理。

TPROXY 工作原理

TPROXY(Transparent Proxy)是 Linux 内核提供的一种透明代理机制,工作在 Netfilter 的 mangle 表 PREROUTING 链。其核心流程:

  1. 数据包到达网关,进入 PREROUTING 链。
  2. iptables 规则将匹配的包标记(mark)并重定向到 Clash 的 TPROXY 监听端口。
  3. Clash 接收数据包,根据规则决定走代理还是直连。
  4. 响应数据包原路返回,对客户端完全透明。
客户端 → 网关(PREROUTING) → iptables TPROXY 重定向 → Clash(redir-port/tproxy-port) → 代理/直连

关键点:TPROXY 不修改数据包的目标地址,因此 Clash 能获取到原始目标 IP 和端口,这是它与 REDIRECT 模式的最大区别。

前置条件

在开始配置前,请确保满足以下条件:

系统要求

内核模块检查

# 检查 TPROXY 模块是否加载
lsmod | grep TPROXY

# 手动加载
modprobe xt_TPROXY

如果提示模块不存在,可能需要安装 kmod-ipt-tproxy(OpenWrt)或重新编译内核。

Clash 配置准备

确保 Clash 配置文件中包含 TPROXY 相关端口:

# Clash 配置片段
redir-port: 7892        # TCP 透明代理端口
tproxy-port: 7893       # TPROXY 端口(UDP)
bind-address: "*"       # 监听所有地址
allow-lan: true
mode: rule

完整配置步骤

步骤一:配置 iptables 规则

以下规则适用于标准 Linux 网关环境:

# 新建链
iptables -t mangle -N CLASH

# 蚀回流量和本地流量跳过
iptables -t mangle -A CLASH -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A CLASH -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A CLASH -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A CLASH -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A CLASH -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A CLASH -d 224.0.0.0/4 -j RETURN

# 其余流量打标记并重定向到 TPROXY 端口
iptables -t mangle -A CLASH -p tcp -j TPROXY --on-port 7892 --tproxy-mark 0x1/0x1
iptables -t mangle -A CLASH -p udp -j TPROXY --on-port 7893 --tproxy-mark 0x1/0x1

# 将 PREROUTING 流量引入 CLASH 链
iptables -t mangle -A PREROUTING -j CLASH

步骤二:配置路由策略

TPROXY 需要配合策略路由,让打了标记的包走本地回环:

# 创建路由表 100
ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

步骤三:配置 DNS 劫持

透明代理中 DNS 处理是最关键的环节。推荐使用 Clash 的 DNS 模块进行劫持:

dns:
  enable: true
  listen: 0.0.0.0:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - 8.8.8.8
    - 1.1.1.1
  fallback-filter:
    geoip: true
    geoip-code: CN

然后在 iptables 中将客户端的 DNS 请求劫持到 Clash:

# 将所有 53 端口流量重定向到 Clash DNS
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 1053
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 1053

步骤四:启动并验证

# 启动 Clash
./clash -d /etc/clash -f config.yaml &

# 验证 TPROXY 规则是否生效
iptables -t mangle -L CLASH -n -v

# 测试透明代理
# 在客户端设备上访问外网,如果能打开说明配置成功
curl -I https://www.google.com

旁路由部署方案

旁路由(Side Router)是最常见的家庭透明代理部署方式——主路由正常拨号上网,旁路由只跑 Clash 透明代理。

网络拓扑

光猫 → 主路由(192.168.1.1) ── 旁路由(192.168.1.2, 跑Clash)
                                    ↓
                              手机/电脑(网关设为192.168.1.2)

旁路由配置要点

  1. 关闭 DHCP:旁路由不分配 IP,由主路由负责。
  2. 设置静态 IP:旁路由 IP 固定为 192.168.1.2。
  3. 开启 IP 转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
  1. 客户端配置:将需要代理的设备网关改为 192.168.1.2,或者直接在主路由 DHCP 中将默认网关设为旁路由 IP。

旁路由的优缺点

优点 缺点
不影响主路由稳定性 多一层转发,延迟略增
故障可快速切换 需手动配置网关
可选择性代理部分设备 非代理设备不经过旁路由

常见问题排查

问题一:部分网站打不开

可能原因:DNS 未正确劫持,客户端直接用本地 DNS 解析。

解决方案:

问题二:UDP 流量不走代理

可能原因:TPROXY 端口未正确配置或缺少 UDP 规则。

解决方案:

问题三:连接速度慢

可能原因:fake-ip 模式下 DNS 缓存异常,或 iptables 规则匹配范围过大。

解决方案:

问题四:重启后规则丢失

iptables 规则默认重启后消失,需要持久化:

# 保存规则
iptables-save > /etc/iptables/rules.v4

# 或写入启动脚本
# OpenWrt: 写入 /etc/firewall.user
# Debian: 安装 iptables-persistent 包

安全注意事项

  1. 不要在公网暴露 TPROXY 端口:透明代理端口只应在局域网内监听。
  2. 限制 PREROUTING 规则的来源:仅处理来自内网网段的流量,避免被外部利用。
  3. 定期检查 iptables 规则:防止规则被意外修改或覆盖。
  4. 关注 Clash 内核更新:及时更新以修复安全漏洞。

总结

Clash TPROXY 透明代理是实现网关级全局代理的强大方案,适合在 OpenWrt 软路由或 Linux 旁路由上部署。相比 TUN 模式,TPROXY 在多设备场景下更有优势——一次配置,全家所有设备自动代理,无需逐个安装客户端。

配置要点回顾:

  1. 确保 TPROXY 内核模块可用
  2. 正确配置 iptables mangle 表规则和策略路由
  3. 使用 fake-ip 模式处理 DNS 劫持
  4. 旁路由方案兼顾灵活性与稳定性
  5. 持久化 iptables 规则防止重启丢失

掌握 TPROXY 后,你就能将任何 Linux 设备变成全家的代理网关,彻底告别逐设备配置的烦恼。

这篇教程有帮助吗?立即下载Clash入门试试吧!

全平台支持 · 安全无毒 · 官方最新版

下载Clash入门