在 Mihomo(Clash.Meta)中,可以通过 listeners 配置可实现不同代理组绑定不同本地端口,使特定端口的流量自动路由到指定代理组。以下是具体实现方法和配置示例:


🔧 核心配置步骤

  1. 修改配置文件​
    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)、httpsocks
    proxy: 必须与 proxy-groups 中定义的组名严格一致。

  2. ​配置代理组​
    proxy-groups 中定义代理组,并关联节点:

    proxy-groups:
      - name: "代理组A"       # 组名需与 listener 中的 proxy 字段匹配
        type: select
        proxies:
          - "节点A"
      - name: "代理组B"
        type: select
        proxies:
          - "节点B"
  3. ​定义节点​
    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
  4. 规则启用
    rules部分添加规则:

    rules:
      - SRC-PORT,7890,代理组A
      - SRC-PORT,7891,代理组B
    # 指定代理组走某个端口需要写在最前面
    # 下面再写原本的规则
      - xxx
      - xxx
      - xxx

⚠️ 注意事项

  1. ​端口冲突检查​
    确保配置的端口未被其他进程占用(如 78907891 等),可通过 netstat -tunlp | grep <端口号> 检测。

  2. ​代理组名称一致性​
    listeners.proxyproxy-groups.name 必须完全一致(包括大小写),否则流量无法正确路由。

  3. 重启生效​
    修改配置后需重启 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,端口按需选择 78907891


💡 应用场景

  • ​多任务分流​​:浏览器 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