Clash Linux 旁路网关部署教程

Linux Clash 网关服务器机架

在家庭或小型办公网络中,将一台 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 + Hysteria2278 Mbps85%62 MB
TUN + SS-2022310 Mbps72%48 MB
redir-host DNS+5%+12 MB

运维监控 — external-controller API

在 config.yaml 中开启 external-controller: 0.0.0.0:9090 并设置 secret,即可通过局域网内 yacd 面板监控连接。切忌将 9090 端口暴露至公网。📊

延伸阅读

TUN 排障 · → mihomo 下载