在国内网络环境下,服务器既要能对外发布服务,又要自身能访问谷歌API等外网服务,最优的网络方案是在服务器上最小化的跑一个Mihomo服务。
服务器部署一个Mihomo服务, 并配置代理访问谷歌API,然后服务器的其他网络设置按正常的来,这样配置的网络最稳定可靠,比用旁路由等其他方案靠谱。
具体如下:
一、下载Mihomo
# 下载(以 1.18.1 版本为例)
curl -LO https://github.com/MetaCubeX/mihomo/releases/download/v1.18.1/mihomo-linux-amd64-v1.18.1.gz
# 解压并重命名
gunzip mihomo-linux-amd64-v1.18.1.gz
chmod +x mihomo-linux-amd64-v1.18.1
sudo mv mihomo-linux-amd64-v1.18.1 /usr/local/bin/mihomo
二、创建配置文件
在/etc/mihomo/config.yaml 中,利用Mihomo 的 proxy-providers:
port: 7890
allow-lan: true
mode: rule
log-level: info
external-controller: 0.0.0.0:9090
secret: "你的密码"
# 1. 节点供应商:自动拉取机场节点
proxy-providers:
my_airport:
type: http
url: "你的机场订阅链接"
interval: 3600
path: ./proxies.yaml
health-check:
enable: true
interval: 600
url: http://www.gstatic.com/generate_204
# 2. 策略组:决定如何选择节点
proxy-groups:
- name: "🚀 自动选择"
type: url-test
use:
- my_airport
url: "http://www.gstatic.com/generate_204"
interval: 300
tolerance: 50
- name: "🔰 选个节点"
type: select
use:
- my_airport
proxies:
- "🚀 自动选择"
- "DIRECT"
# 3. 分流规则:让系统自动判断
rules:
# 优先让 Google 走代理(防止被误伤)
- DOMAIN-SUFFIX,google.com,🚀 自动选择
- DOMAIN-SUFFIX,googleapis.com,🚀 自动选择
# 常见的自动分流(使用 Mihomo 内置的 GEOIP/GEOSITE)
- GEOSITE,cn,DIRECT # 国内网站直连
- GEOIP,CN,DIRECT,no-resolve # 国内 IP 直连
# 其余所有不在列表里的国外流量,全部走代理
- MATCH,🚀 自动选择
三、防火墙打开端口
端口:7890 和 9090
四、配置开机自启 (Systemd)
创建一个服务文件:
sudo vi /etc/systemd/system/mihomo.service
[Unit]
Description=Mihomo Daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=always
[Install]
WantedBy=multi-user.target
然后启动:sudo systemctl enable –now mihomo
五、docker-compose部署Mihomo
1、docker-compose.yml
services:
mihomo:
image: metacubex/mihomo:latest
container_name: mihomo
restart: always
volumes:
- /opt/mihomo:/root/.config/mihomo
ports:
- "7890:7890" # HTTP 代理端口
- "9090:9090" # 外部控制面板端口(用于远程连接 UI)
environment:
- TZ=Asia/Shanghai
2、创建目录
mkdir -p /opt/mihomo
cd /opt/mihomo
touch config.yaml
3、 把config.yml 和docker-compose.yml 放入 /opt/mihomo目录
4、启动容器
docker compose up -d
5、检查是否生效
a. 检查日志
命令行实时日志
journalctl -u mihomo -f
docker 看docker log
docker logs mihomo
b.验证访问
# 测试 Google(验证代理是否能翻墙)
curl -x http://127.0.0.1:7890 -I https://www.google.com
# 测试百度(验证分流是否走直连)
curl -x http://127.0.0.1:7890 -I https://www.baidu.com
应该能看到,
[TCP] 172.17.0.1:xxxxx –> www.google.com:443 match DomainSuffix(google.com) using 🚀 自动选择[香港节点]
[TCP] 172.17.0.1:xxxxx –> api.bt.cn:443 match GeoSite(cn) using DIRECT
六、 在系统层面设置环境变量
sudo vi /etc/profile.d/proxy.sh
写入如下内容:
# 设置代理服务器地址
proxy="http://127.0.0.1:7890"
export http_proxy="$proxy"
export https_proxy="$proxy"
export ftp_proxy="$proxy"
# 设置不走代理的白名单(非常重要:避免内网请求被转发)
export no_proxy="localhost,127.0.0.1,172.16.10.0/24,bt.cn,.bt.cn"
配置立即生效
source /etc/profile
七、在应用层面使用环境变量(推荐)
建议仅在需要的应用上配置,避免整体通过代理访问。