在家庭或小型办公网络中,将一台 Linux 设备(树莓派 4B、软路由、旧笔记本)配置为 Clash 透明网关,可以让局域网内所有设备无感享受分流能力,无需逐台安装客户端。本文记录一套在 Debian 12 上实测稳定的部署方案。🐧
网络拓扑 — 旁路网关模式
树莓派通过以太网接入主路由器 LAN 口,获取 192.168.1.0/24 地址。局域网设备将默认网关指向树莓派 IP(192.168.1.2),DNS 同样指向树莓派。mihomo 以 TUN 模式接管流量并按规则分流。📡
第一步:安装 mihomo 二进制
# 下载最新 arm64 构建 wget https://github.com/MetaCubeX/mihomo/releases/download/v1.18.9/mihomo-linux-arm64-v1.18.9.gz gunzip mihomo-linux-arm64-v1.18.9.gz chmod +x mihomo-linux-arm64-v1.18.9 mv mihomo-linux-arm64-v1.18.9 /usr/local/bin/mihomo
第二步:systemd 服务单元
# /etc/systemd/system/mihomo.service [Unit] Description=mihomo Clash Meta Daemon After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/usr/local/bin/mihomo -d /etc/mihomo Restart=on-failure RestartSec=5 LimitNOFILE=65535 [Install] WantedBy=multi-user.target
配置文件目录 /etc/mihomo/config.yaml,权限设为 600(含节点密码)。
第三步:开启 IP 转发
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.d/99-clash.conf sysctl -p /etc/sysctl.d/99-clash.conf
第四步:nftables 透明代理规则
#!/usr/sbin/nft -f
table ip clash {
chain prerouting {
type nat hook prerouting priority -100;
iifname "eth0" udp dport 53 redirect to :1053
iifname "eth0" tcp dport 53 redirect to :1053
}
}
DNS 重定向至 mihomo 内置 DNS(listen: 0.0.0.0:1053),配合 TUN 的 dns-hijack 实现全网 DNS 分流。🌐
TUN 配置要点(网关场景)
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
inet4-address: 198.19.0.1/30
inet4-route-address:
- 0.0.0.0/1
- 128.0.0.0/1
使用 0.0.0.0/1 + 128.0.0.0/1 替代 0.0.0.0/0 可避免覆盖物理网卡默认路由,这是网关模式的关键技巧。
性能实测 — 树莓派 4B 4GB
| 场景 | 吞吐 | CPU | 内存 |
|---|---|---|---|
| TUN + Hysteria2 | 278 Mbps | 85% | 62 MB |
| TUN + SS-2022 | 310 Mbps | 72% | 48 MB |
| redir-host DNS | — | +5% | +12 MB |
运维监控 — external-controller API
在 config.yaml 中开启 external-controller: 0.0.0.0:9090 并设置 secret,即可通过局域网内 yacd 面板监控连接。切忌将 9090 端口暴露至公网。📊