如何使用 Android 上的移动数据接口通过 WiFi 和其他所有内容路由本地流量?

How to route local traffic over WiFi and everything else using the mobile data interface on android?

提问人:vetkak 提问时间:10/13/2023 更新时间:10/13/2023 访问量:86

问:

我有一部扎根的 android 13 手机(一加 10 pro),在家里我有一个用于智能家居设备 NAS 和 CCTV 的本地 WiFi 网络,该网络未连接到互联网。

如果我使用手机连接到这个网络,我就可以访问我的本地设备,但浏览网页变得不可能,因为当连接到 wifi 网络时,所有流量都默认通过 WiFi 网络接口(没有互联网接入的网络)路由在 android 上。 我希望我的手机通过 WiFi 网络接口 (Wlan0) 路由本地 IP (192.168.1.x) 的流量,并使用移动数据接口 (rmnet_data2) 路由所有其他流量。

我尝试了多种方法,但我还没有找到可靠的解决方案来解决这个问题,我希望有人可以帮助我解决这个问题。 以下是我在尝试让它工作时所做的一些事情,我取得了一些成功,但无法让它可靠地工作。

#1。移动数据始终处于活动状态 首先,我启用了开发人员设置“移动数据始终处于活动状态”,以确保在连接到 WiFi 网络时,WiFi 和移动数据适配器同时保持启用状态

#2.USB调试和shell
我启用了USB调试并将手机连接到PC上,这样我就可以打开shell在手机上执行命令(android使用linux内核)。 使用命令提示符和 adb 我连接到我的手机并打开了一个 shell:

接下来我将其提升为根 shell
$ adb shell
$ su

#3 更改路由内容
检查当前的路由规则。

$ ip rule list

检查路由表
$ cat /proc/net/route

使用 ip route get 命令检查本地和公共 IP 的路由
$ ip route get 10.10.10.10
$ ip route get 192.168.1.135

为本地 IP 添加了规则,以将 wlan0 与路由器 IP 一起用作网关
$ ip route add 192.168.1.0/24 via 192.168.1.1 dev wlan0

使用移动连接路由其他所有内容
$ ip route add default dev rmnet_data2

Android Linux 路由 iproute

评论

0赞 Robert 10/13/2023
这应该已经可以通过 Stock Android 13 实现:“并发本地和互联网连接”source.android.com/docs/core/connect/wifi-sta-sta-concurrency 不确定您的手机是否支持。
0赞 vetkak 10/14/2023
@Robert 我的手机支持 Wi-Fi STA/STA 并发(允许设备同时连接到两个 Wi-Fi 网络。这不是我要帮凶的,我没有两个WiFi网络。我有移动连接和本地 WiFi 网络。
0赞 Robert 10/14/2023
Wi-Fi STA/STA 的主要用途是两个 Wifi 连接,但在我看来,这种情况听起来像是 Wi-Fi 和移动数据的组合。Concurrent local-only and internet connection: The device connects to a local-only network without disrupting the device's primary internet-providing connection.
1赞 vetkak 10/15/2023
@Robert 假设你是对的(我仍然不相信),我该如何使用它。对我来说,它看起来像是应用程序开发的文档,因此您可以创建一个应用程序,该应用程序可以使用 wifi 注册/配置 IOT 设备,而不会在这样做时丢失互联网访问。我不是在开发应用程序,我想根据目标 IP 系统范围强制流量通过特定接口。

答: 暂无答案