OpenWrt 独立 WiFi 网段指向 mihomo 旁路由:连上即自动代理

在 OpenWrt 上新建一个独立网段并绑定独立 WiFi,用源地址策略路由把整个网段的流量指向另一个网段里的 mihomo TUN 旁路由。客户端零配置,连上这个 SSID 就自动走代理,切回主网 WiFi 就恢复直连。文末附一个挺隐蔽的踩坑:ImmortalWRT 的 DNS 劫持。 旁路由本身怎么搭的,在上一篇里:用 Docker + macvlan 跑 mihomo 旁路由。 目标 家里已有一个 mihomo 容器当旁路由(TUN 模式),主网设备想走代理就把网关/DNS 指过去。但逐台改设备很烦,家人设备也不适合动手脚。理想状态是: 开一个专用 WiFi,连上就全走 mihomo,断开连回主网就直连。客户端什么都不用设。 拓扑长这样: ┌──────────────────────────────┐ │ OpenWrt (ImmortalWRT) │ WiFi 主网 ── │ br-lan 10.0.0.1/24 │ ── WAN WiFi 代理 ── │ lan_hkt 192.168.88.1/24 │ └──────────────┬───────────────┘ │ 10.0.0.0/24 ┌─────────┴─────────┐ │ N95 小主机 │ │ mihomo (macvlan) │ │ 10.0.0.6 TUN │ └───────────────────┘ mihomo 跑在 N95 上的 Docker 里,macvlan 拿到 10.0.0.6,是 10 段的地址。新 WiFi 绑的是 192.168.88.0/24。 ...

2026年8月20日 · 3 分钟 · Vinkey

用 Docker + macvlan 跑 mihomo 旁路由:宿主机互通与局域网接入

家里用一台 N95 迷你主机当 homelab host,Docker 里跑 mihomo,用 macvlan 给它分一个独立的局域网 IP(10.0.0.6),让它当局域网的旁路由——设备把网关指过去,流量就经过 mihomo 分流代理,不用动主路由的整体路由结构。 容器起来只是第一步,实际会撞上两件事:宿主机和自己衍生出的 macvlan 容器默认互相不通,以及局域网设备到底怎么切到这个网关。这篇把两个都记下来。 为什么用 macvlan docker-compose 配置: services: mihomo: image: metacubex/mihomo:latest container_name: mihomo cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun volumes: - ./data:/root/.config/mihomo networks: macvlan_net: ipv4_address: 10.0.0.6 # 需要 IPv6 就把下面带 # 的行全解开(含 sysctls 里那两行) # driver_opts: # com.docker.network.endpoint.sysctls: "net.ipv6.conf.IFNAME.disable_ipv6=0,net.ipv6.conf.IFNAME.accept_ra=2" sysctls: net.ipv4.ip_forward: 1 # net.ipv6.conf.all.disable_ipv6: 0 # net.ipv6.conf.all.forwarding: 1 networks: macvlan_net: driver: macvlan driver_opts: parent: enp1s0 ipam: config: - subnet: 10.0.0.0/24 gateway: 10.0.0.1 用 macvlan 而不是普通 bridge,是因为要给容器一个和局域网其他设备平级的真实 IP,这样它才能被其他设备当网关直接访问、转发流量。bridge 模式下容器藏在宿主机的 NAT 后面,别的设备根本没法把它当网关。 ...

2026年8月20日 · 更新于 2026年8月26日 · 2 分钟 · Vinkey