Mihomo 有好几种入口:系统代理、透明代理、TUN。它们不是叠得越多越稳。入口越多,日志越难读。
官方示例配置里能看到 mixed-port、redir-port、tproxy-port、tun 和 dns.listen 这些键。先确定流量从哪个入口进 Mihomo,再看规则。
各入口适合什么场景?
| 配置键 | 典型场景 | 第一条验证命令 |
|---|---|---|
mixed-port | 桌面系统代理,HTTP/SOCKS 混合入口 | curl -x http://127.0.0.1:7890 https://example.com -I |
redir-port | Linux/macOS TCP 透明代理 | `ss -lntup |
tproxy-port | Linux/OpenWrt TCP/UDP 透明入口 | fw4 print 或 ip rule/ip route |
tun | 本机大部分流量进入虚拟网卡 | 看虚拟接口和 TUN 日志 |
dns.listen | Mihomo 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 可以是 system、gvisor、mixed。文档说 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 上游和规则集。
怎么确认入口没有串?
同一个测试域名,分别做三次:
curl -x走mixed-port。- 透明入口设备直接访问,不设置系统代理。
- 打开 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 文档列出 system、gvisor、mixed,其中 mixed 在无异常时推荐。排错时一次只测一种 stack。
dns-hijack 没反应怎么办?
先确认 TUN 已接管流量,再看 dns-hijack 是否写了 any:53 或 tcp://any:53。macOS/Windows 对 LAN DNS 自动劫持有限制。