一、 安装 Mihomo 内核
Mihomo 是 Clash Meta 内核的继任者,原生支持多种代理协议。本文选用 AnyTLS 协议进行部署——它是一个基于 TLS 的轻量隧道,配置直观,非常适合搭配自签或受信证书使用。
1.1 检查系统架构
首先确认你的 Linux 机器架构,以便下载对应的二进制文件:
uname -m
通常 VPS 输出为 x86_64,对应 amd64。若为 aarch64 请选择 arm64 版本。本文以 amd64 为例。
1.2 下载并安装二进制
进入临时目录,下载最新版 Mihomo(此处以 v1.19.27 为例,请自行替换为最新版本):
cd /tmp
# 下载 amd64 v3 版本(性能最优)
wget https://github.com/MetaCubeX/mihomo/releases/download/v1.19.27/mihomo-linux-amd64-v1.19.27.gz
# 解压
gzip -d mihomo-linux-amd64-v1.19.27.gz
# 重命名并移动到系统路径
sudo mv mihomo-linux-amd64-v1.19.27 /usr/local/bin/mihomo
# 赋予可执行权限
sudo chmod +x /usr/local/bin/mihomo
随后创建配置目录:
sudo mkdir -p /etc/mihomo
如果你的 VPS 缺少
wget,先执行sudo apt install -y wget(Debian/Ubuntu)或sudo yum install -y wget(CentOS)。
二、 申请 TLS 证书
AnyTLS 需要一对有效的证书与私钥。这里使用 acme.sh 通过 Cloudflare DNS 自动申请 Let’s Encrypt 泛域名证书,并直接安装到 /etc/mihomo。
2.1 安装 acme.sh 并设置默认 CA
wget -O - https://get.acme.sh | sh
source ~/.bashrc
acme.sh --set-default-ca --server letsencrypt
2.2 使用 Cloudflare DNS 签发证书
先获取你的 Cloudflare API Token(需具备 Zone DNS Edit 权限),然后设置环境变量并签发:
export CF_Token="你的Cloudflare_API_Token"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf --keylength ec-384 --force
这一步会在后台等待 DNS 验证,通常 30 秒内完成。泛域名证书会同时覆盖
example.com和*.example.com。
2.3 安装证书到指定目录
切换至 root 身份,将证书与私钥复制到 Mihomo 配置目录:
sudo -i
acme.sh --installcert -d example.com -d '*.example.com' --ecc --fullchain-file /etc/mihomo/fullchain.pem --key-file /etc/mihomo/privkey.key
acme.sh --upgrade # 可选:升级 acme.sh 到最新版
完成后,证书路径为(由于 mihomo 权限限制,这里的路径必须为/etc/mihomo或其下子文件夹内):
- 证书:
/etc/mihomo/fullchain.pem - 私钥:
/etc/mihomo/privkey.key
三、 编写 Mihomo 配置
3.1 基础配置文件
使用编辑器创建配置文件:
sudo nano /etc/mihomo/config.yaml
填入以下内容(请务必修改密码及域名):
ipv6: true
log-level: warning
rules:
- MATCH,DIRECT
listeners:
- name: JP-oracle
type: anytls
port: 65443
listen: "::"
users:
你的用户名: 你的强密码
certificate: /etc/mihomo/fullchain.pem
private-key: /etc/mihomo/privkey.key
3.2 注册 Systemd 服务
为了让 Mihomo 持久化运行,需要创建一个 systemd 单元文件:
sudo nano /etc/systemd/system/mihomo.service
粘贴以下配置:
[Unit]
Description=mihomo Daemon, Another Clash Kernel.
After=network.target NetworkManager.service systemd-networkd.service iwd.service
[Service]
Type=simple
LimitNPROC=500
LimitNOFILE=1000000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE
Restart=always
ExecStartPre=/usr/bin/sleep 1s
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
保存后重载配置并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable mihomo
sudo systemctl start mihomo
3.3 检查运行状态
确认服务正常运行:
sudo systemctl status mihomo
若看到 active (running) 且无报错,说明启动成功。查看最新日志可用:
journalctl -u mihomo -n 20 --no-pager
如需修改配置,只需 sudo systemctl reload mihomo 即可热重载。
四、 防火墙与客户端
4.1 防火墙放行端口
如果开启了 ufw,执行:
sudo ufw allow 65443/tcp
同时记得确保云服务商的安全组/防火墙也已放行该端口。
4.2 客户端连接示例
在支持 AnyTLS 的客户端(如 Mihomo 自身、FlClash、某些 Clash Meta 分支)中,节点配置格式如下:
anytls://你的密码@mihomo.example.com:65443?skip-cert-verify=false#日本-oracle
参数解释:
你的密码:必须与配置文件中users的密码一致。mihomo.example.com:替换为你的域名,必须与证书匹配,且 DNS 解析到服务器。65443:监听端口。skip-cert-verify=false:因为是受信 Let’s Encrypt 证书,建议保持为false以验证证书有效性。
4.3 优化小贴士
- 开启 BBR 加速:跨国连接时,BBR 能显著提升吞吐量:
# 添加参数配置文件并指定开启 BBR
sudo nano /etc/sysctl.d/99-bbr.conf
# 把下面的内容添加进去
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
# 读取配置,使 BBR 设置生效
sudo sysctl --system
# 确认BBR开启,此时应该返回这样的结果:net.ipv4.tcp_congestion_control = bbr
sysctl net.ipv4.tcp_congestion_control
# 如果你在疑惑这个 ipv4,无需在意,只是历史命名遗留,实际上对 ipv6 也是生效的。
# 如果你想确认 fq 算法是否正确开启,可以使用下面的命令,此时应该返回这样的结果:net.core.default_qdisc = fq
sysctl net.core.default_qdisc
- 自动续签证书:acme.sh 默认会添加 cron 任务自动续签,可使用
crontab -l查看。续签后需要手动 reload mihomo 来加载新证书,可在/etc/mihomo/下写一个续签钩子脚本,但最简单的方式是定期重启服务。
4.4 停止服务并卸载
如果将来不再需要该节点,可以干净地移除所有相关文件:
- 停止并禁用服务
sudo systemctl stop mihomo sudo systemctl disable mihomo - 删除 systemd 单元文件并重载
sudo rm /etc/systemd/system/mihomo.service sudo systemctl daemon-reload - 移除二进制程序
sudo rm /usr/local/bin/mihomo - 删除配置与证书目录(若不再需要证书可一并清除)
sudo rm -rf /etc/mihomo - (可选)卸载 acme.sh
如果不再使用 acme.sh 管理其他证书,可彻底移除:
注意执行卸载后会提示删除相关 cron 任务。acme.sh --uninstall rm -rf ~/.acme.sh
安全建议:在执行删除前,建议备份
/etc/mihomo/config.yaml与证书,以备日后恢复或迁移。
希望这篇博文能帮到同样在折腾的小伙伴!欢迎在评论区交流。
喜欢的话,留下你的评论吧~