# ===== 路由与策略规则 ===== # 100 表(tun_socks)→ tun0 ip route replace default dev "$TUN_IF" table "$TBL_NAME"
# main 表不得出现 “default dev tun0” ip route del default dev "$TUN_IF" 2>/dev/null || true
# 旁路标记:hev-socks5-tunnel 自身连接 mark=438 走 main ip rule add fwmark "$MARK" lookup main priority 50 2>/dev/null || true
# 旁路 LAN/本机/容器网段(避免被表100吸走) ip rule add iif "$LAN_IF" to "${SELF_IP}/32" lookup main priority 900 2>/dev/null || true ip rule add iif "$LAN_IF" to "$LAN_NET" lookup main priority 900 2>/dev/null || true ip rule add iif "$LAN_IF" to 172.17.0.0/16 lookup main priority 900 2>/dev/null || true ip rule add iif "$LAN_IF" to 172.18.0.0/16 lookup main priority 900 2>/dev/null || true
# LAN 其余流量 → 表100(经 tun0) ip rule add iif "$LAN_IF" lookup "$TBL_NAME" priority 1000 2>/dev/null || true
# 自动识别 LAN 接口(亦可预先导出 LAN_IF 覆盖) if [ -z "${LAN_IF:-}" ]; then LAN_IF="$(ip -o -4 addr show | awk -v ip="${SELF_IP}" '$4 ~ ip"/" {print $2; exit}')" fi : "${LAN_IF:?无法识别 LAN 接口,请手动设置 SELF_IP 或 LAN_IF}" echo"清理: LAN_IF=${LAN_IF} TUN_IF=${TUN_IF} TBL=${TBL_NAME}(${TBL_NUM}) MARK=${MARK}"
# ===== 删除策略路由 ===== # 旁路标记 ip rule del fwmark "$MARK" lookup main priority 50 2>/dev/null || true
# 旁路本机/LAN/容器网段 ip rule del iif "$LAN_IF" to "${SELF_IP}/32" lookup main priority 900 2>/dev/null || true ip rule del iif "$LAN_IF" to "$LAN_NET" lookup main priority 900 2>/dev/null || true ip rule del iif "$LAN_IF" to 172.17.0.0/16 lookup main priority 900 2>/dev/null || true ip rule del iif "$LAN_IF" to 172.18.0.0/16 lookup main priority 900 2>/dev/null || true
# LAN → 代理表 ip rule del iif "$LAN_IF" lookup "$TBL_NAME" priority 1000 2>/dev/null || true ip rule del iif "$LAN_IF" lookup "$TBL_NUM" priority 1000 2>/dev/null || true
# ===== 清空代理表路由并移除误设默认路由 ===== ip route flush table "$TBL_NAME" 2>/dev/null || true ip route flush table "$TBL_NUM" 2>/dev/null || true ip route del default dev "$TUN_IF" 2>/dev/null || true# 防止 main 表存在 default dev tun0