重定向 & TProxy — mihomo
mihomo 提供 两种 方式声明 Linux 透明代理入站:顶层快捷字段 (redir-port 与 tproxy-port),或统一的 listeners: 形态 (type: redir、type: tproxy)。
顶层快捷字段
直接放在根文档上;最简形式:
yaml
redir-port: 7892 # 仅 TCP(iptables REDIRECT 模式)
tproxy-port: 7893 # TCP + UDP(iptables / nftables TPROXY 模式)两者均在 基础 页面中有更详细说明。
Listener 形态
要使用多个实例或获得更多控制,请改放在 listeners: 下:
type: redir
yaml
listeners:
- name: redir-in
type: redir
listen: 127.0.0.1
port: 7892RedirOption 只携带继承的 BaseOption(listen、port、name)。
type: tproxy
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
udp | bool | false | true | false | 同时监听 UDP 包。在 Linux 上 TPROXY 是做透明 UDP 代理的唯一方式。 |
源码: listener/inbound/tproxy.go:13-16 · 锚定版本 v1.19.27 (5184081)
yaml
listeners:
- name: tproxy-in
type: tproxy
listen: 0.0.0.0
port: 7893
udp: trueiptables 设置
REDIRECT(仅 TCP):
sh
iptables -t nat -N MIHOMO
iptables -t nat -A MIHOMO -d 192.168.0.0/16 -j RETURN
iptables -t nat -A MIHOMO -d 10.0.0.0/8 -j RETURN
iptables -t nat -A MIHOMO -p tcp -j REDIRECT --to-ports 7892
iptables -t nat -A OUTPUT -p tcp -j MIHOMOTPROXY(TCP + UDP):
sh
iptables -t mangle -N MIHOMO
iptables -t mangle -A MIHOMO -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A MIHOMO -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A MIHOMO -p tcp -j TPROXY --on-port 7893 --tproxy-mark 0x1
iptables -t mangle -A MIHOMO -p udp -j TPROXY --on-port 7893 --tproxy-mark 0x1
iptables -t mangle -A PREROUTING -j MIHOMO
ip rule add fwmark 0x1 table 100
ip route add local 0.0.0.0/0 dev lo table 100要让 mihomo 全程接管 iptables 配置,优先使用顶层 iptables: 块 —— mihomo 会自行安装与清理 规则。
说明
- 顶层快捷字段(
tproxy-port)与 listener 形态(type: tproxy) 可以共存。当需要多个绑定地址、或在同一守护进程上混合透明代理与 其他入站类型时,使用 listener 形态。 redir-port与type: redir监听器 仅 TCP。需要透明 UDP 时用tproxy-port或带udp: true的type: tproxy。- mihomo 的
iptables:块(见 iptables) 自动化了标准模式的规则配置 —— 设iptables.enable: true即可让 mihomo 自行管理规则。 - TPROXY 仅 Linux。macOS / Windows 请改用 TUN。
跨内核说明
- Xray-core 使用 Dokodemo-door 入站配合
streamSettings.sockopt.tproxy实现两种模式。参见 Redirect/TProxy — Xray-core。 - sing-box 提供专用的
redirect与tproxy入站类型(字段名 snake_case),内核侧要求相同。参见 Redirect/TProxy — sing-box。
源码: listener/inbound/tproxy.go:13-16 · v1.19.27 (5184081)
