在国内网络环境下,服务器既要能对外发布服务,又要自身能访问谷歌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
六、 在系统层面设置环境变量
1、创建proxy.sh
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
2、针对 DNF/YUM 包管理器(独立配置)
在 CentOS 9 中,即使设置了系统变量,dnf 命令有时仍需单独配置。
编辑配置:
sudo vi /etc/dnf/dnf.conf
在末尾添加一行:
proxy=http://127.0.0.1:7890
3、生产环境的“开关”脚本
由于长期开启全局代理可能导致某些国内 API 请求变慢,你可以通过 .bashrc 设置快捷开关。
编辑当前用户的 bash 配置:
vi ~/.bashrc
在末尾添加两个快捷指令(Alias):
# 开启代理
alias proxy_on='export http_proxy=http://127.0.0.1:7890; export https_proxy=http://127.0.0.1:7890; echo "Proxy ON"'
# 关闭代理
alias proxy_off='unset http_proxy; unset https_proxy; echo "Proxy OFF"'
生效:
source ~/.bashrc
使用:输入 proxy_on 即可魔法,输入 proxy_off 恢复直连。系统启动后,默认是proxy_on。
七、在应用层面使用环境变量(推荐)
建议仅在需要的应用上配置,避免整体通过代理访问。
评论列表(1条)
[…] […]