538 字
3 分钟
Linux Server 使用 Clash TUN 模式实现透明代理(Clash + Yacd 管理界面)保姆级教程
WARNING

已有更加优雅的实现,详见 clash-for-linux-install

引言#

在使用 Linux 服务器的过程中,常常遇到这样的问题:在 Clash 启动后还要为各种应用或服务设置系统代理,还可能遇到一些无法设置代理的软件导致无法访问。所以我们可以通过 Clash 的 TUN 模式实现系统级透明代理,让所有应用无需单独配置代理即可直接访问外网。再配合 Yacd 可视化管理面板,我们就能更直观地管理和切换节点,大大提升使用体验。

开始前准备#

  • 安装脚本依赖
  • git
  • iproute
  • nftables
  • Yacd 依赖
  • docker

安装 Clash-TUN#

安装 clash-tun#

  1. 克隆项目
Terminal window
git clone https://github.com/blue7wings/clash-tun
# 连不上 github 可使用反代
# 如: git clone https://gh.llkk.cc/https://github.com/blue7wings/clash-tun
cd clash-tun
  1. 配置设置
Terminal window
sudo mkdir /srv/clash/
sudo mv config.yaml Country.mmdb /srv/clash/
sudo mv clash /usr/bin/

安装 clash-core#

  1. 下载 Clash Core 并解压
Terminal window
# AMD64 架构为例
wget https://downloads.clash.wiki/ClashPremium/clash-linux-amd64-2023.08.17.gz
# 使用 gunzip 解压
gunzip clash-linux-amd64-2023.08.17.gz
  1. 安装 Clash 并设置权限
Terminal window
sudo mv clash-linux-amd64-2023.08.17 /usr/bin/clash
sudo chmod 775 /usr/bin/clash

完成安装#

Terminal window
sudo ./installer.sh install

安装 Yacd#

Terminal window
docker run -p 1234:80 -d --name yacd ghcr.io/haishanh/yacd:master

安装后可通过 http://hostip:1234 访问。


修改 config.yaml 以开启 TUN 和 Web 管理#

通过 vim 修改配置文件#

Terminal window
sudo vim /srv/clash/config.yaml

向配置文件中修改以下选项#

# 主机修改为 0.0.0.0 以支持外部访问
# 端口号修改为 9091 以避免与 web 管理冲突
external-controller: "0.0.0.0:9091"
# 启用 tun
tun:
enable: true

修改后的配置文件示例#

mixed-port: 7890
allow-lan: true
bind-address: "*"
mode: rule
log-level: info
external-controller: "0.0.0.0:9091"
tun:
enable: true
dns:
enable: true
ipv6: true
default-nameserver: [223.5.5.5, 119.29.29.29]
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
use-hosts: true
nameserver: [223.5.5.5, 119.29.29.29, 8.8.8.8, 1.1.1.1]
fallback:
[8.8.4.4, 1.0.0.1, "https://dns.twnic.tw/dns-query", "tls://8.8.4.4:853"]
fallback-filter: { geoip: true, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
proxies:
TIP

修改后就能通过 Web 管理选择连接节点了。


最终效果#

clash服务

yacd控制台


服务管理#

  • 设置开机自启(如有需要)
Terminal window
sudo systemctl enable clash
  • 启动 clash
Terminal window
sudo systemctl start clash
  • 查看服务状态
Terminal window
sudo systemctl status clash

一些疑难杂症#

Yacd 无法连接到 Clash 解决方案#

  • 方法一:放行 external-controller 端口 sudo firewall-cmd --add-port=9091/tcp
  • 方法二:关闭防火墙
WARNING

尽量不要关闭防火墙,这样会使你的服务器更易受到攻击。

sudo systemctl stop firewalld.service

Linux Server 使用 Clash TUN 模式实现透明代理(Clash + Yacd 管理界面)保姆级教程
https://blog.ccwait.com/posts/linux-server-clash-tun/
作者
Ctanhuawu
发布于
2025-08-15
许可协议
CC BY-NC-SA 4.0

评论

欢迎留下你的想法。