外观
Clash进阶指南:路由器配置透明代理实现家庭网络一键共享
你是否已经厌倦了为家里的每一台新设备——手机、平板、笔记本、游戏机——都手动配置一次代理?你是否梦想过,无论任何设备,只要连上家里的 Wi-Fi,就能自动、无感地访问全球网络?
如果你的答案是肯定的,那么欢迎来到网络无拘无束的“终极形态”——透明代理 (Transparent Proxy)。
与需要在设备上手动设置的“网关代理”不同,透明代理是在网络的最源头——路由器上,对所有流量进行拦截和处理。对于连接到路由器的设备来说,代理是完全“透明”的,它们甚至不知道自己正在被代理。
今天,我们就来一步步实现这个一劳永逸的终极解决方案。
⚠️ 重要提醒:这不是一篇新手教程!
在开始之前,请务必了解:
- 需要特定硬件:你家里的普通光猫或运营商送的路由器,99% 都无法完成这项任务。
- 有变砖风险:操作过程涉及到刷写路由器固件,有一定风险让你的设备无法工作(俗称“变砖”)。
- 需要网络基础:你需要对 IP 地址、网关、DNS 等基本网络概念有一定的了解。
如果你已准备好迎接挑战,那就让我们开始吧!
第一部分:奠定基石 - 硬件与系统
1. 为什么我的普通路由器不行?
普通家用路由器被设计用来稳定地转发数据,它们的 CPU 性能、内存大小和固件功能都非常有限,无法承载运行 Clash 和处理复杂防火墙规则所需的计算能力。
2. 选择一台“强大”的路由器
你需要一个可以刷写第三方开源固件的路由器。这类设备主要分为两种:
- 高性能硬路由:一些高端的市售路由器(如华硕、领势的某些型号)可以刷写梅林 (Merlin) 或 OpenWrt 固件。
- 软路由 (Soft Router):这是更灵活、性能更强的选择。它本质上是一台小型电脑(如 NanoPi R4S/R5S、x86 工控机),你可以为其安装 OpenWrt 等专门的路由器操作系统。
3. 安装“魔法系统” - OpenWrt
OpenWrt 是一个基于 Linux 的开源路由器操作系统,它高度可定制,拥有强大的网络功能和丰富的插件。
你需要根据你选择的硬件型号,从 OpenWrt 官网或相关的开发者社区下载对应的固件,并按照教程将其“刷入”你的路由器。
这一步是整个过程中最关键也最危险的一步,请务必仔细阅读你设备的刷机教程。
第二部分:核心配置 - 在 OpenWrt 上安装并运行 Clash
假设你已经成功安装了 OpenWrt 并能通过 192.168.1.1
访问其管理后台。
1. 安装 Clash 核心程序
你需要通过 SSH 连接到你的 OpenWrt 路由器后台,然后使用 opkg
包管理器来安装 Clash。
# 更新软件包列表
opkg update
# 安装 Clash 核心和 dashboard UI
# 注意:不同固件源的包名可能略有不同,可能是 `clash-premium` 或 `mihomo`
opkg install clash
2. 配置 Clash
Clash 的配置文件(config.yaml)需要你手动上传。
获取配置文件:
1.你可以从机场网站下载 Clash 订阅,得到一个 .yaml 文件。
2.对这个文件进行编辑,确保 mixed-port 等端口设置是正确的。
上传配置文件:使用 SFTP 工具(如 WinSCP 或 Termius)将你的 config.yaml 文件上传到路由器的 /etc/clash/ 目录下。
3. 启动并测试 Clash
在 SSH 终端里,运行以下命令来启动 Clash:
# 在后台启动 Clash
/etc/init.d/clash start
# 设置 Clash 开机自启
/etc/init.d/clash enable
启动后,你可以通过访问 http://192.168.1.1:9090/ui (9090 是 Clash dashboard 的默认端口)来查看 Clash 的运行状态、切换节点。
第三部分:流量重定向 - 配置防火墙规则
现在 Clash 已经在路由器里运行了,但路由器并不会自动把流量交给它。我们需要设置防火墙规则,像一个“交通警察”一样,把需要代理的流量引导到 Clash那里去。
1. 开启 TPROXY 模式
为了实现透明代理,我们需要在 Clash 的 config.yaml 配置文件中,开启 TPROXY 模式。这是 Linux 内核提供的一种高效的流量重定向方式。
# 在你的 config.yaml 文件中找到或添加以下设置
tproxy-port: 7895 # 透明代理的 TPROXY 端口
mixed-port: 7890 # 普通代理端口
allow-lan: true
mode: rule
# ... 其他配置
修改并上传配置文件后,记得重启 Clash 服务。
2. 编写防火墙规则
我们需要告诉 OpenWrt 的防火墙 (iptables):“请把所有来自局域网的、要去国外的 TCP 和 UDP 流量,都转发给 Clash 的 TPROXY 端口 7895。”
进入 OpenWrt 的管理后台 (192.168.1.1)。
进入 网络 → 防火墙 → 自定义规则。
将以下规则粘贴进去:
# 创建一个新的 iptables 链,用于处理需要代理的流量
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 192.168.0.0/16 -j RETURN
# 更多需要避开的国内 IP 段...
# 将所有剩余的 TCP 流量都转发给 TPROXY 端口
iptables -t mangle -A CLASH -p tcp -j TPROXY --on-port 7895 --tproxy-mark 0x01/0x01
# 将所有剩余的 UDP 流量也转发给 TPROXY 端口
iptables -t mangle -A CLASH -p udp -j TPROXY --on-port 7895 --tproxy-mark 0x01/0x01
# 让所有从局域网 (br-lan) 进来的流量都先经过我们上面的 CLASH 链进行处理
iptables -t mangle -A PREROUTING -i br-lan -j CLASH
- 点击 保存并应用。
验证与排错
配置完成后,拿出你的手机(确保它连接的是这个路由器的 Wi-Fi),不要做任何代理设置,直接打开浏览器访问 google.com。如果能打开,恭喜你,你已经成功了!
如果失败了,可以从以下几点排查:
DNS 问题:确保你的路由器上游 DNS 或 DHCP 分配的 DNS 是可靠的(如 8.8.8.8)。
防火墙规则:检查自定义规则是否正确应用。
Clash 日志:访问 http://192.168.1.1:9090/ui,查看 Logs,看看是否有错误信息。
结语
配置透明代理无疑是一个充满挑战的过程,但它带来的“一次配置,全屋享受”的无感体验是无与伦比的。从这一刻起,你的每一台设备,无论是现在拥有的还是未来购买的,只要连上 Wi-Fi,就自动拥有了通往世界的能力。
享受这来之不易的、真正无拘无束的家庭网络吧!