Mihomo 有好几种入口:系统代理、透明代理、TUN。它们不是叠得越多越稳。入口越多,日志越难读。

官方示例配置里能看到 mixed-portredir-porttproxy-porttundns.listen 这些键。先确定流量从哪个入口进 Mihomo,再看规则。

各入口适合什么场景?

配置键典型场景第一条验证命令
mixed-port桌面系统代理,HTTP/SOCKS 混合入口curl -x http://127.0.0.1:7890 https://example.com -I
redir-portLinux/macOS TCP 透明代理`ss -lntup
tproxy-portLinux/OpenWrt TCP/UDP 透明入口fw4 print 或 ip rule/ip route
tun本机大部分流量进入虚拟网卡看虚拟接口和 TUN 日志
dns.listenMihomo DNS 服务dig @127.0.0.1 -p 1053 example.com

桌面端排错时,先从 mixed-port 开始。这个入口最少碰系统路由,也最容易用 curl 复现。

最小 mixed-port 配置

先把配置缩到能启动、能代理一次请求:

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

proxies:
  - name: test
    type: socks5
    server: 127.0.0.1
    port: 1080

proxy-groups:
  - name: PROXY
    type: select
    proxies:
      - test
      - DIRECT

rules:
  - MATCH,PROXY

这个配置只是用来排入口,不是让你长期使用。curl 能进 Dashboard 后,再把真实订阅和规则加回来。

redir-port 和 tproxy-port 不能只看端口

Mihomo 示例配置里,redir-port: 7892 注释为 Linux/macOS 透明代理端口,tproxy-port: 7893 用于 Linux TProxy。它们依赖系统转发规则。

OpenWrt 上只看到端口监听还不够:

ss -lntup | grep -E '7890|7892|7893'
fw4 print | grep -i 7892
fw4 print | grep -i 7893
ip rule
ip route show table all | grep -i proxy

没有防火墙重定向,浏览器不会自动进入 redir-port。没有策略路由,UDP 也不会凭空进 tproxy-port

TUN stack 最后再测

Mihomo TUN 文档列出:

tun:
  enable: true
  stack: gvisor
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53

stack 可以是 systemgvisormixed。文档说 mixed 在没有问题时推荐,但排错时不要一开始就混测。先选一个,日志稳定后再换。

dns-hijack 会把匹配的 DNS 连接交给 Mihomo 内部 DNS。macOS/Windows 不能自动劫持 LAN DNS 请求,Android Private DNS 也会挡住一部分 DNS 行为。桌面测试时只看本机 DNS,别把路由器上的设备一起算进来。

端口占用先查,不要猜

常见日志:

address already in use
failed to create tun device
dns-hijack
auto-route

查端口:

lsof -i :7890
lsof -i :7892
ss -lntup | grep -E '7890|7892|7893|1053'

Windows:

netstat -ano | findstr "7890 7892 7893 1053"

端口被占时,先改端口或停掉旧进程。不要同时换 TUN stack、DNS 上游和规则集。

怎么确认入口没有串?

同一个测试域名,分别做三次:

  1. curl -xmixed-port
  2. 透明入口设备直接访问,不设置系统代理。
  3. 打开 TUN 后本机直接访问。

每次都看 Dashboard 或日志。能看到 inbound 类型、目标域名、命中的规则和出站组,才说明链路清楚。只看网页能打开,不足以判断流量从哪个入口进来。

相关阅读

FAQ

mixed-port 和 redir-port 可以一起开吗?

可以,但用途不同。mixed-port 给 HTTP/SOCKS 系统代理用,redir-port 给 Linux/macOS 透明 TCP 入口用;桌面排错先只留 mixed-port

tproxy-port 什么时候需要?

tproxy-port 主要在 Linux/OpenWrt 处理 TCP/UDP 透明代理。没有对应防火墙规则时,开了端口也不代表流量会进 Mihomo。

TUN stack 选哪个?

Mihomo TUN 文档列出 systemgvisormixed,其中 mixed 在无异常时推荐。排错时一次只测一种 stack。

dns-hijack 没反应怎么办?

先确认 TUN 已接管流量,再看 dns-hijack 是否写了 any:53tcp://any:53。macOS/Windows 对 LAN DNS 自动劫持有限制。