注意:根是必需的。

默认的DHCP IP地址范围是硬编码的(1),如果不使用修改后的源代码重建ROM,就无法更改它。或使用一点技巧。

开启网络共享时,至少会发生以下情况:

hostapd -管理访问点的守护程序-已启动。

网络接口设置,IP地址被添加到Wi-Fi接口(Android的饼图之前硬编码(2,3),然后随机化(4)),并加入路由表(5)用于本地网络(6)。

dnsmasq-DHCP / DNS服务器(最多Pie)-从硬编码的命令行参数(7)启动(否则可以通过/etc/dnsmasq.conf (8)设置)。

因此,我们可以/system/bin/dnsmasq用一个自定义的shell脚本替换它,从而控制两者之间的过程。将原始二进制文件重命名为其他名称:

# mv /system/bin/dnsmasq /system/bin/dnsmasq.bin

创建脚本/system/bin/dnsmasq:

#!/system/bin/sh

OLD_SUBNET='192.168.43'

NEW_SUBNET='192.168.1'

WIFI_INTERFACE='wlan0'

LOCAL_TABLE='97'

export PATH=/system/bin

# delete old route, add new

ip route del ${OLD_SUBNET}.0/24 dev ${WIFI_INTERFACE} table $LOCAL_TABLE

ip route add ${NEW_SUBNET}.0/24 dev ${WIFI_INTERFACE} table $LOCAL_TABLE

# set new IP address on Wi-Fi interface

ip address add ${NEW_SUBNET}.1/24 dev $WIFI_INTERFACE

# inject new subnet in hard-coded arguments received from netd

set -- $(printf '%s' "$*" | sed 's/'${OLD_SUBNET}'/'${NEW_SUBNET}'/g')

unset OLD_SUBNET NEW_SUBNET WIFI_INTERFACE LOCAL_TABLE

# execute original binary with new arguments

exec dnsmasq.bin $*

确认您的Wi-Fi接口的名称(wlan0通常)。用ip link或检查ls /sys/class/net/。

另外,请确认您的本地网络的路由表是97:grep local_network /data/misc/net/rt_tables。Android的路由非常混乱,每个新版本都变得更加复杂。因此,我不确定这是否一直存在。同样,在进行任何更改之前,请检查您的路由策略和表以弄清楚应在脚本中添加的内容:

~# RULES="$(ip rule | grep -vE 'unreachable|local')"

~# echo "$RULES"

~# for t in $(echo "$RULES" | awk '{print $NF}' | uniq); do ip r s table $t; done

如果(全部或部分)尚未定义并且status为,则还需要定义SELinux规则enforcing。使用Magisk suploicy或其他类似工具sepolicy-inject:

# execute binaries from /system/bin

allow netd system_file dir { read open getattr search }

allow netd system_file file { read gettattr open execute execute_no_trans }

# execute /system/bin/sh

allow netd shell_exec file { read getattr open execute execute_no_trans }

# execute /system/bin/toolbox and its applets

allow netd toolbox_exec file { read gettattr open execute execute_no_trans }

# configure RPDB rules / routing tables

allow netd netd capability { sys_admin }

*重新启动后无法永久使用,使用某些init.d脚本或替换/sepolicy为ramdisk

设置文件权限:

~# chown 0.0 /system/bin/dnsmasq*

~# chmod 0755 /system/bin/dnsmasq*

~# chcon u:object_r:dnsmasq_exec:s0 /system/bin/dnsmasq*

请享用!

或者,您可以从命令行设置完整的网络共享,运行自己的进程。该答案包括说明,尽管问题有所不同。

有关:

android wifi设置dhcp,如何在Android上配置WIFI共享(热点)的DHCP设置?相关推荐

  1. 如何在Mac上查找WiFi密码并在iPhone上共享它?

    MacBooks上的"钥匙串访问"应用程序存储您的个人数据和密码.也可以将其称为macOS密码管理器.每当您在登录网站,电子邮件帐户,网络或任何受密码保护的项目时保存密码时,都可以 ...

  2. 如何在PyCharm上配置Python解释器,以及解决Windows上PyCharm不能识别C:\Users\Me\AppData路径的问题。

    最近遇到这么一个问题.在Windows上安装Python解释器后,我在PyCharm上却不能找到相应的路径.我花了一些时间去解决这个问题,将解决方案记录于此. 1 如何在PyCharm上配置Pytho ...

  3. 如何在IDEA上配置使用Git

    如何在IDEA上配置使用Git 一.IDEA对于Git&GitHub的支持 1.IDEA对GitHub和Git的基本配置 案例演示 首先建立一个演示项目(web项目即可),然后建立一个User ...

  4. 你们公司还没使用HTTP3?赶紧来补一补,学习一下如何在Nginx上配置HTTP3。

    你们公司还没使用HTTP3?赶紧来补一补,学习一下如何在Nginx上配置HTTP3. NGINX最新版本,已提供对 QUIC 和 HTTP/3的支持,本文介绍一下如何安装与配置 很高兴能在一个特殊的开 ...

  5. 如何在mac上配置Apache服务器

    如何在mac上配置Apache服务器 1. 打开终端,开启Apache: //开启apache:  sudo apachectl start //重启apache:  sudo apachectl r ...

  6. 阻止android应用调用_如何在Android上设置应用时间限制和阻止应用

    阻止android应用调用 Khamosh Pathak Khamosh Pathak Spending way too much time on your Android device? Use a ...

  7. icloud电脑设置_如何在Android上设置iCloud电子邮件访问

    icloud电脑设置 Ben Stockton 本·斯托克顿 If you switch from iPhone to Android, you don't have to ditch iCloud ...

  8. android studio创建md,如何在Android Studio中设置*md文件打开方式

    最近在Android Studio中写一些Demo的时候,会顺便在里面创建一个.md文件用来进行Demo笔记的书写.然而Android Studio不带有markdown预览功能,所以我就琢磨如何在A ...

  9. android 禁用通知栏_如何在Android上禁用通知

    android 禁用通知栏 Notifications are great, and Android's notification system is arguably the best out th ...

最新文章

  1. Python为图像添加水印(add watermark to an image)
  2. how fast can we post information from ipad to mac through type c?
  3. linux键盘设置的文件在哪个文件夹,「正点原子Linux连载」第十五章按键输入试验...
  4. 【CMS】安装CMS
  5. 【PAT甲级 排序】1036 Boys vs Girls (25 分) C++
  6. 【进程】进程通信-信号方式(中断)
  7. Git 相关使用命令
  8. java pcm16位_Java – 将16位带符号的pcm音频数据数组转换为双数组
  9. 1-3-JavaScript技术
  10. 吃了核辐射食物怎么办_不瞒你说:经常胃酸烧心怎么办?,多吃这些食物,保护胃黏膜远...
  11. 《Perl语言入门》学习笔记
  12. 第三方支付3(易宝支付)
  13. deepin 惠普打印驱动安装
  14. 漫威女性电影背后所体现出来的性别观念转变
  15. Java中的一个类怎么调用另一个类中的成员
  16. SNF开发平台WinForm-EasyQuery统计分析-效果-非常牛逼的报表查询工具
  17. 基于Android的高校家校互通平台
  18. Ubuntu 安装 php8.1
  19. 性能测试中的二八原则
  20. 【C++】map、set、multimap、multiset的介绍和使用

热门文章

  1. 乐观锁以及乐观锁的实现
  2. Nginx正向代理和反向代理详解及其配置
  3. 公钥加密应用--数字签名
  4. 汇编 王爽老师实验三,查看psp区
  5. Macbook 系统偏好设置总喜欢弹出消息气泡数字,尤其是放在苹果Dock栏,有点儿强迫症的小伙伴总想把它消除而避免自己被打搅,然后又无法将其拖走或删除,怎么办呢?【进入终端】
  6. OPPOA59M_官方线刷包_救砖包_解账户锁
  7. MSP430F169 Timer_A原理(一)----定时器的四个模式
  8. 年月日时分秒格式的转换为时间戳。
  9. mac m2 编译dubbo3.1.x版本报Missing:com.google.protobuf:protoc:exe:osx-aarch_64
  10. 关于margin: auto及margin: 0 auto的一些见解