Router:接管现有路由器网络
Router 接法适合路由器、旁路由或一台已经承担转发的 Linux 主机。mayami 在现有 LAN/WAN 上挂 tc/eBPF,不要求客人改变网关之外的设置。
完整配置
yaml
inbounds:
router:
type: capture
lan: [br-lan]
wan: [eth0]
flowtable: software
full_cone: true
fail: closed
outbounds:
direct:
type: direct
proxy:
type: socks
server: 127.0.0.1:1080
route:
rules:
- {ip_is_private: true, outbound: direct}
- {network: udp, port: 443, outbound: proxy}
final: proxy
dns:
servers:
real: {type: udp, address: 1.1.1.1:53}
fake: {type: fakeip, inet4_range: 198.18.0.0/15}
rules:
- {domain_suffix: [lan], server: fake}
final: real包怎么走
- LAN 帧从桥或物理口进入 capture;代理流被送到 TAP 后的网关。
- 规则命中代理时,“先拨后应”:出站连上目标后才给客人回 SYN-ACK。
- 规则判为直连且满足
release条件时,首包交回内核,由内核 NAT 和转发继续。 - 回程如果仍有 conntrack 映射,可以走普通转发;参与直连快路径的连接可能已进入 flowtable。
失败与快路径
fail: closed 在 capture 就绪前用屏障封住接管口,牺牲一个很短的启动窗口,避免本应代理的流量先直出。fail: open 让程序消失时内核照常转发,要求 Linux 6.6+。
flowtable: software 接管直连快路径;hardware 请求硬件卸载。full_cone 只改变 UDP NAT 行为,不会让不支持的代理 UDP 变可用。
宿主机会被改什么
mayami 会在 LAN/WAN 和网桥成员上挂 tc/XDP,创建 TAP、自有 nftables 表、conntrack/NAT 与 flowtable 状态,并按配置打开转发和调整 RA sysctl。启动失败和强杀后的状态取决于 fail、屏障和持久内核对象。