Mihomo TUN 模式断网:ip_forward 与 UFW Forward 策略
目录
mihomo 用 TUN 模式(stack: system,auto-route: true)时,启动后全局断网,SSH 也掉线。问题不在 mihomo 配置本身,而是系统两个网络转发设置没开。
原因
stack: system 让 mihomo 依赖内核网络栈转发 TUN 流量。auto-route: true 会接管默认路由,把所有流量导入 TUN 网卡。但内核需要两个条件才能转发:
net.ipv4.ip_forward必须为1- 防火墙 forward 链不能 DROP
Arch Linux 默认 ip_forward=0,UFW 默认 DEFAULT_FORWARD_POLICY="DROP"。两个都挡着,流量进了 TUN 就出不去。
修复
开启 ip_forward:
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-mihomo.conf
sudo sysctl -p /etc/sysctl.d/99-mihomo.confUFW forward 改为 ACCEPT:
sudo sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw
sudo ufw reload改完启动 mihomo。
另一个选择
不想改系统转发配置的话,可以把 config.yaml 里 tun.stack 从 system 改成 gvisor。gvisor 在用户态处理 TCP/IP,不依赖内核转发,但性能略低。