Skip to content

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

字段见 capture、networks 和 路由规则。

包怎么走 ​

  1. LAN 帧从桥或物理口进入 capture;代理流被送到 TAP 后的网关。
  2. 规则命中代理时,“先拨后应”:出站连上目标后才给客人回 SYN-ACK。
  3. 规则判为直连且满足 release 条件时,首包交回内核,由内核 NAT 和转发继续。
  4. 回程如果仍有 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、屏障和持久内核对象。

相关 ​

页面历史

开发者设计、代码地图和验证记录保留在仓库 manual/。