You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android设备本地流量走WiFi、其余流量走移动数据的配置方法

问题描述

我有一台已Root的Android 13设备(一加10 Pro),家中有个用于智能家居、NAS和监控摄像头的本地WiFi网络,该网络未连接互联网。连接这个WiFi时,能访问本地设备,但没法浏览网页——因为Android默认把所有流量都路由到无互联网的WiFi接口。我需要实现:本地IP段(192.168.1.x)的流量走WiFi接口(wlan0),其余所有流量走移动数据接口(rmnet_data2)。

已尝试的操作(效果不稳定)
  • 始终启用移动数据:开启开发者选项里的“始终启用移动数据”,确保WiFi和移动数据适配器同时在线。
  • USB调试与Shell操作:启用USB调试后连接电脑,通过ADB进入Shell并获取Root权限:
    adb shell
    su
    
  • 修改路由配置:
    1. 查看当前路由规则与路由表:
      ip rule list
      cat /proc/net/route
      
    2. 查看本地/公网IP的路由走向:
      ip route get 10.10.10.10
      ip route get 192.168.1.135
      
    3. 添加路由规则:
      # 本地IP段走WiFi,网关为路由器IP
      ip route add 192.168.1.0/24 via 192.168.1.1 dev wlan0
      # 其余流量走移动数据
      ip route add default dev rmnet_data2
      
稳定解决方案

Android的ConnectivityService会在网络状态变化时自动重置路由表,手动添加的规则容易被覆盖,因此需要用更持久的策略路由方案:

方法1:Linux策略路由配置

利用Linux的策略路由功能,让不同目的IP的流量走指定路由表,避免被系统默认规则覆盖:

  1. 新建自定义路由表(比如编号100):
    # 将自定义表写入路由表配置文件
    echo "100 localwifi" >> /data/local/tmp/rt_tables
    # 初始化路由表并添加本地段路由
    ip route flush table 100
    ip route add 192.168.1.0/24 via 192.168.1.1 dev wlan0 table 100
    
  2. 添加规则,让本地段流量优先走自定义路由表:
    ip rule add to 192.168.1.0/24 lookup 100 priority 1000
    
  3. 调整默认路由优先级,确保移动数据优先:
    # 删除WiFi的默认路由(如果存在)
    ip route del default dev wlan0 2>/dev/null
    # 设置移动数据为默认路由,优先级高于WiFi(数值越小优先级越高)
    ip route add default dev rmnet_data2 priority 500
    

方法2:后台脚本自动维护路由

因为系统会在网络切换时重置路由,写个后台脚本监控网络状态,自动重新应用规则:

  1. 创建脚本文件/data/local/tmp/route_fix.sh:
    #!/system/bin/sh
    while true; do
        # 检查是否连接到目标WiFi
        WIFI_STATUS=$(dumpsys connectivity | grep -E "mNetworkInfo.*CONNECTED.*wlan0")
        if [ -n "$WIFI_STATUS" ]; then
            # 静默应用路由规则(已存在则忽略错误)
            ip rule add to 192.168.1.0/24 lookup 100 priority 1000 2>/dev/null
            ip route add 192.168.1.0/24 via 192.168.1.1 dev wlan0 table 100 2>/dev/null
            ip route del default dev wlan0 2>/dev/null
            ip route add default dev rmnet_data2 priority 500 2>/dev/null
        fi
        sleep 10
    done
    
  2. 给脚本添加执行权限:
    chmod +x /data/local/tmp/route_fix.sh
    
  3. 设置开机自启:
    • 若使用Magisk,将脚本移动到/data/adb/service.d/目录,Magisk会在开机后自动运行。
    • 若系统支持init.d,将脚本放到/system/etc/init.d/并确保权限正确。

方法3:第三方Root工具简化操作

不想手动配置的话,用支持策略路由的Root工具(如NetGuard,需Root权限):

  • 在工具中设置:允许所有应用访问192.168.1.0/24时使用WiFi,其余流量强制走移动数据。工具会自动处理路由规则的持久化,无需手动维护脚本。

内容的提问来源于stack exchange,提问作者vetkak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:33:10