Linux 服务器 / NAS 怎么用易联(命令行)
适用于云服务器、VPS、家里 NAS、树莓派这类没有图形界面的 Linux。有桌面的 Windows / macOS / Linux 直接用我们客户端就行,不用看这篇。
一句话原理:代理软件在你机器上开一个本地端口(默认 7890),你的程序连这个端口出去,国内网站直连、国外网站走易联节点。
一、先认清一件事:Linux 服务器没有「一键客户端」
我们的客户端是桌面图形程序,要有窗口才能点。纯命令行系统装不上、也点不了。
服务器上用的是命令行软件,但它们读的是同一份订阅、走同一个账号:
| 方案 | 适合谁 | 难度 |
|---|---|---|
| mihomo(推荐) | 绝大多数人,开箱可用 | ★ |
| sing-box | 已经在用 sing-box 的人 | ★★ |
| Docker | NAS 上已经跑 Docker 的 | ★ |
叫法容易混:mihomo = Clash.Meta 的新名字,读的是 Clash 格式订阅;sing-box 读自己的 JSON 格式。我们两种都提供,同一个订阅链接,靠客户端自报的身份区分。
二、最快的方式:一键脚本(mihomo)
登录服务器,把下面的订阅链接换成你自己的(面板里复制),整段粘进去:
curl -fsSL https://dl.ylink.im/yl-linux.sh | sudo bash -s -- "https://cp.yli.world/api/v1/client/subscribe?token=你的token"
脚本会依次做完这些,并在每一步告诉你结果:
- 按你的 CPU 架构下载 mihomo(amd64 / arm64),校验文件指纹后才安装;
- 用正确的格式拉取你的订阅,并检查内容是否正常;
- 生成 systemd 服务,开机自启、进程被杀自动拉起;
- 加一个定时任务,每天凌晨自动重拉订阅(节点有变化不用你管);
- 最后做一次真实验收:走代理访问一次外网、打印出口 IP、确认国内网站仍走直连。
跑完你会看到类似这样的输出:
==> 架构 amd64 · mihomo v1.19.34
==> 下载 mihomo
✓ 校验通过
==> 拉取订阅
✓ 110037 字节
✓ 代理只监听 127.0.0.1:7890(公网访问不到)
==> 配置自检
✓ 配置可用
==> 安装服务
✓ mihomo 已启动
==> 验收
✓ 走代理正常(HTTP 204)
✓ 出口 IP:72.68.x.x(New York City)
✓ baidu 耗时 0.068s(小于 0.5s 说明国内站走直连)
⚠️ 脚本默认把代理口收在 127.0.0.1,只有本机能用。这是我们刻意做的——在公网服务器上把 7890 敞开,等于给全世界一个无密码代理。
需要给容器用、或给局域网其它机器用,加参数重跑一次即可:
# 让本机 Docker 容器能通过 172.17.0.1:7890 走代理
curl -fsSL https://dl.ylink.im/yl-linux.sh | sudo bash -s -- --docker "你的订阅链接"
# 允许局域网其它机器用(先确认防火墙/安全组挡住了公网)
curl -fsSL https://dl.ylink.im/yl-linux.sh | sudo bash -s -- --lan "你的订阅链接"
不想要了:
curl -fsSL https://dl.ylink.im/yl-linux.sh | sudo bash -s -- --uninstall
三、手动安装 mihomo(不想跑脚本的看这里)
3.1 下载
mkdir -p ~/yilian/bin ~/yilian/conf && cd ~/yilian/bin
curl -LO https://github.com/MetaCubeX/mihomo/releases/download/v1.19.34/mihomo-linux-amd64-v1.19.34.gz
gunzip mihomo-linux-amd64-v1.19.34.gz && mv mihomo-linux-amd64-v1.19.34 mihomo && chmod +x mihomo
./mihomo -v
ARM 机器(树莓派、部分云厂商的免费机)把文件名里的
amd64换成arm64。
国内直连 GitHub 慢的话,用我们镜像站上的同一份文件:https://dl.ylink.im/linux/mihomo-linux-amd64-v1.19.34.gz(旁边有.gz.sha256校验文件)。
3.2 拉订阅(这一行的 User-Agent 不能省)
cd ~/yilian
curl -sSL -H "User-Agent: clash-verge/v2.0" -o conf/config.yaml \
"https://cp.yli.world/api/v1/client/subscribe?token=你的token"
ls -l conf/config.yaml
少了 -H "User-Agent: ...",拿到的是别的格式,mihomo 起不来。正常大小是 100 KB 上下。
3.3 先手动跑一次
cd ~/yilian && ./bin/mihomo -d conf -f conf/config.yaml
一路刷日志、没有 FATAL 就是好了。这个窗口先别关,另开一个终端做验收。
3.4 验收(唯一可信的判据)
curl -s -m 12 -o /dev/null -w "直连 %{http_code}\n" https://www.google.com/generate_204
curl -s -m 20 -x http://127.0.0.1:7890 -o /dev/null -w "代理 %{http_code} %{time_total}s\n" https://www.google.com/generate_204
curl -s -m 20 -x http://127.0.0.1:7890 https://ipinfo.io/json | grep -E '"ip"|"city"|"org"'
curl -s -x http://127.0.0.1:7890 -o /dev/null -w "baidu %{http_code} %{time_total}s\n" https://www.baidu.com
我们在大陆实测的回显(出口 IP 已打码):
直连 000 ← 直连被墙,正常
代理 204 1.376405s ← 走代理正常
"ip": "72.68.x.x",
"city": "New York City",
"org": "AS701 Verizon Business", ← 美国住宅出口
baidu 200 0.072920 ← 72 毫秒,说明国内站走直连
四、让它开机自启(systemd)
Ctrl+C 停掉刚才的窗口,然后:
sudo mkdir -p /opt/mihomo /etc/mihomo
sudo cp ~/yilian/bin/mihomo /opt/mihomo/
sudo cp ~/yilian/conf/config.yaml /etc/mihomo/
sudo chmod 600 /etc/mihomo/config.yaml # 里面是你的 token
sudo tee /etc/systemd/system/mihomo.service >/dev/null <<'EOF'
[Unit]
Description=Mihomo Proxy (Yilian)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/opt/mihomo/mihomo -d /etc/mihomo -f /etc/mihomo/config.yaml
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable --now mihomo
systemctl is-active mihomo
active 就成了。进程被杀 3 秒后自动起来(实测过:杀掉主进程,几秒后新 PID 恢复,代理照常)。
常用命令:
systemctl status mihomo # 状态
journalctl -u mihomo -f # 实时日志
sudo systemctl restart mihomo # 重启
节点有更新(我们加了新节点、改了名字)时,重拉一次订阅并重启:
curl -sSL -H "User-Agent: clash-verge/v2.0" -o /etc/mihomo/config.yaml \
"https://cp.yli.world/api/v1/client/subscribe?token=你的token" && sudo systemctl restart mihomo
用第二节的一键脚本装的,这一步已经做成每日定时任务,不用手动做。
五、怎么让程序真的走代理
服务起来了只是「本机 7890 有个代理口」,不等于系统流量自动绕出去。三种用法:
5.1 只让某条命令走(最常用、最安全)
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890
curl https://ipinfo.io/ip
只对一条命令生效:
https_proxy=http://127.0.0.1:7890 git clone https://github.com/xxx/yyy.git
https_proxy=http://127.0.0.1:7890 wget https://example.com/file.zip
5.2 Docker 容器走代理
docker run --rm -e HTTP_PROXY=http://172.17.0.1:7890 -e HTTPS_PROXY=http://172.17.0.1:7890 \
curlimages/curl https://ipinfo.io/ip
172.17.0.1 是 Docker 默认网桥的宿主机地址。用一键脚本的需要先加 --docker 重装一次,代理才会监听这个地址;手动装的请把配置里 allow-lan 改成 true。
5.3 整机透明代理(TUN)——新手别碰
TUN 会接管整台机器的路由。VPS 上开这个很容易把自己的 SSH 弄断(尤其代理一挂、流量全堵)。真要用,先确认你有服务商的网页控制台/VNC 能救回来。
六、sing-box 用户看这里
我们同一份订阅同时支持 sing-box。直接用面板里的订阅链接导入即可,sing-box 会自己带上版本信息,服务器按版本给出对应格式,不需要手动改配置。
2026-11-14 在大陆专线环境实测(出口广州移动):
| sing-box 版本 | 结果 |
|---|---|
| 1.14.4(最新) | ✅ 3/3 成功,出口美国住宅 IP,百度直连 78ms |
| 1.11.15 | ✅ 3/3 成功,出口美国住宅 IP,百度直连 69ms |
| 1.12 / 1.13 | 未单独复测,按版本兼容逻辑应与上面一致 |
拉订阅(服务器上没有浏览器,用 curl):
curl -sSL -H "User-Agent: sing-box/1.14.4" -o config.json \
"https://cp.yli.world/api/v1/client/subscribe?token=你的token"
⚠️ 服务器上一定要先处理掉 TUN 入站。订阅里默认带了一段 tun(auto_route: true),在服务器上以 root 跑会接管整台机器的路由,代理一旦异常 SSH 就断了。
用任意编辑器把 inbounds 里 "type": "tun" 的那一整段删掉,只留这两段:
{ "type": "socks", "tag": "socks-in", "listen": "127.0.0.1", "listen_port": 2333 },
{ "type": "mixed", "tag": "mixed-in", "listen": "127.0.0.1", "listen_port": 2334 }
然后:
sing-box check -c config.json # 先自检
sing-box run -c config.json # 再跑
curl -x http://127.0.0.1:2334 https://ipinfo.io/json # 端口是 2334,不是 7890
两个常见坑:
① 端口号不同——sing-box 的订阅给的是 2333(socks)/ 2334(mixed),照抄 mihomo 的 7890 会连不上。
② 规则文件需要联网下载(约 100 KB),第一次启动请等十几秒再测;下载失败会在启动日志里明确写出来。
七、常见问题
Q:curl -x 报 Failed to connect ... 7890
服务没起来,或者端口不对。查:ss -lnt | grep 7890、journalctl -u mihomo -n 50。
Q:代理通了,但出口 IP 不是我想要的国家
你在客户端/面板里选了别的节点。同一个订阅里的节点是同一批,换节点即可(客户端里选,或改配置里的组)。
Q:这样用会多耗流量吗?怎么计费?
和手机电脑上一样:国内网站走直连不记账;走代理的按节点倍率算。验收用的 ipinfo.io、generate_204 这类请求几乎不占量。
Q:会不会被判定为多设备?
不会。设备数按同时在线算,跟你用哪个系统无关。但别把订阅链接给别人用——那才是共用。
Q:能不能把 7890 开放给同事一起用?
不行。那是无密码代理,等于把账号送人。要多人用请各自订阅。
Q:脚本会不会动我机器上已有的东西?
只写 /opt/mihomo、/etc/mihomo 和一个 systemd 服务;--uninstall 会把它们全部删掉。
八、四条验收清单(照抄)
systemctl is-active mihomo # 期望 active
curl -s -x http://127.0.0.1:7890 https://ipinfo.io/ip # 期望美国住宅 IP
curl -sS -x http://127.0.0.1:7890 -o /dev/null -w "%{http_code}\n" https://www.google.com/generate_204 # 期望 204
curl -s -x http://127.0.0.1:7890 -o /dev/null -w "%{time_total}\n" https://www.baidu.com # 期望 < 0.3s
四条都符合 = 线路通、分流对、住宅出口在起作用。任何一条不对,把四项输出一起发给我们客服。
九、在服务器上跑 AI API 中转(new-api / Sub2API / one-api)
不少人租服务器不只是为了自己上网,而是跑一个 AI API 中转:new-api、Sub2API、one-api 这类开源项目,把 OpenAI、Claude、Gemini 的额度统一成一个接口,自己用,或者和朋友拼车分摊。
这类服务装起来不难,卡住的通常是服务器出去的那条路:
- 这些 AI 服务对机房 IP 比较敏感。同一个出口上登录多个账号,更容易触发验证、限流,严重的会停号;
- 服务器默认没有代理,装好的中转程序直连
api.openai.com可能根本连不上。
把第二、三节装好的 mihomo 接进去就行,两种接法:
9.1 给服务加环境变量(最省事)
以 systemd 起的 new-api 为例,加一个 drop-in,不动原 service 文件:
sudo mkdir -p /etc/systemd/system/new-api.service.d
sudo tee /etc/systemd/system/new-api.service.d/proxy.conf >/dev/null <<'EOF'
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
sudo systemctl daemon-reload && sudo systemctl restart new-api
sudo systemctl show new-api -p Environment
服务名按你实际的改(
systemctl list-units | grep -i api查)。用 Docker 跑的,把-e HTTP_PROXY=http://172.17.0.1:7890加进docker run,或写进 compose 的environment:里——但要先按 5.2 让代理监听网桥地址(一键脚本加--docker重装一次),否则172.17.0.1根本没人在听,容器里只会一直超时。
9.2 在程序后台填代理地址
new-api、Sub2API 这类项目一般有「代理」设置项,填 http://127.0.0.1:7890 即可,效果和上面一样。运行在容器里的例外:容器内的 127.0.0.1 是容器自己,要填 http://172.17.0.1:7890(同样得先按 5.2 打开网桥监听)。
9.3 验证真的走了代理
curl -x http://127.0.0.1:7890 -o /dev/null -w "%{http_code}\n" https://api.openai.com/v1/models
返回 401 是对的——它说明已经连上了,只是没带 key。如果是超时或 000,回去看第四节的 mihomo 服务状态。
⚠️ 一个容易忽略的点:如果你是把中转给别人用(拼车、对外发 key),这条出口会同时承载多个账号的登录态。机房 IP 加多账号是风控最敏感的组合,比单人多设备更容易出问题。这种情况建议让整条线路走固定的美国住宅出口,而不是拿一个共享的机房 IP 去跑一堆账号。