在 Mihomo(Clash.Meta)中,可以通过 listeners
配置可实现不同代理组绑定不同本地端口,使特定端口的流量自动路由到指定代理组。以下是具体实现方法和配置示例:
🔧 核心配置步骤
修改配置文件
在config.yaml
中定义多个listener
,每个监听器指定端口和对应的代理组(proxy-group):listeners: - name: "proxy1_port" # 监听器名称 type: mixed # 支持 HTTP/Socks5 混合流量 port: 7890 # 本地端口号 proxy: "代理组A" # 绑定到代理组A - name: "proxy2_port" type: mixed port: 7891 proxy: "代理组B" # 绑定到代理组B
关键参数说明:
type
: 可选mixed
(HTTP+Socks5)、http
、socks
。proxy
: 必须与proxy-groups
中定义的组名严格一致。配置代理组
在proxy-groups
中定义代理组,并关联节点:proxy-groups: - name: "代理组A" # 组名需与 listener 中的 proxy 字段匹配 type: select proxies: - "节点A" - name: "代理组B" type: select proxies: - "节点B"
定义节点
在proxies
部分填写实际代理节点信息:proxies: - name: "节点A" type: vmess server: server1.com port: 443 uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx alterId: 0 cipher: auto - name: "节点B" type: trojan server: server2.com port: 443 password: your_password
规则启用
在rules
部分添加规则:rules: - SRC-PORT,7890,代理组A - SRC-PORT,7891,代理组B # 指定代理组走某个端口需要写在最前面 # 下面再写原本的规则 - xxx - xxx - xxx
⚠️ 注意事项
端口冲突检查
确保配置的端口未被其他进程占用(如7890
、7891
等),可通过netstat -tunlp | grep <端口号>
检测。代理组名称一致性
listeners.proxy
与proxy-groups.name
必须完全一致(包括大小写),否则流量无法正确路由。重启生效
修改配置后需重启 Mihomo 服务:mihomo -d . -f /path/to/config.yaml
🛠️ 测试方法
终端测试:
curl --socks5 127.0.0.1:7890 https://ipinfo.io # 应走代理组A curl --socks5 127.0.0.1:7891 https://ipinfo.io # 应走代理组B
客户端设置:
在浏览器插件(如 SwitchyOmega )或设置中,将代理地址设为127.0.0.1
,端口按需选择7890
或7891
。
💡 应用场景
多任务分流:浏览器 A 用端口 7890 访问网站 A,浏览器 B 用端口 7891 访问网站 B。
开发调试:为不同开发环境(测试/生产)分配独立代理端口。
流量隔离:敏感业务(如支付)与非敏感业务使用不同出口 IP。
🔔后记
listeners
中的proxy
可以写策略组,也可以是单个指定的节点名称:
listeners:
- name: "proxy1_port" # 监听器名称
type: mixed # 支持 HTTP/Socks5 混合流量
port: 7890 # 本地端口号
proxy: "节点A" # 绑定到节点A
- name: "proxy2_port"
type: mixed
port: 7891
proxy: "节点B" # 绑定到节点B
改用单个节点的话需要改一下rules中的配置:
rules:
- SRC-PORT,7890,节点A
- SRC-PORT,7891,节点B
# 指定节点走某个端口需要写在最前面
# 下面再写原本的规则
- xxx
- xxx
- xxx