Skip to content

前言

redroid支持代理遇到的一些坑点

使用android VPN

启动docker的时候需要加上,android原生的tun设备是 /dev/tun 我本地部署的ubuntu设备路径是 /dev/net/tun ,需要做一个转换

sh
-v /dev/net/tun:/dev/tun \

在安卓中启动vpn就没问题了

sh
docker run -itd --rm --privileged \
    --cap-add=net_admin --cap-add=net_raw --cap-add=mknod \
    --memory=2g \
    --cpus=2 \
    -v /dev/net/tun:/dev/tun \
    -v ~/data11-ndk:/data \
    -p 5555:5555 \
    redroid:11.0.0-ndk \

使用gost+iptable转发

这里用到gost作为转发工具,非常方便的一个工具 GitHub - go-gost/gost: GO Simple Tunnel - a simple tunnel written in golang

android版本选linux x86或者x64就行了

android版的libc用的标准是Bionic libc

linux版用的是 GNU C Library (glibc)

这里为什么能正常使用,有可能是因为共享内核的原因? 后续有空在深挖下

redroid11 官方镜像是基于ubuntu 20.4编译的,这个系统内部的iptable版本是iptables v1.8.4 (legacy) 网上找的基于REDIRCE TPROXY的命令都不能用

如果ubuntu选22 or 24版本 宿主机版本 iptable 1.8.7(nf_table)

android 11版本还是 iptables v1.8.4 (legacy) 会导致版本不一致无法使用命令

1.或许可以复制宿主机的iptable文件到android中,完成升级使用 (未测试)

2.重新在目标机上编译,比如ubuntu 22中重新编译 andorid 11 已匹配iptable

基于ubuntu 20的iptable脚本

adb shell 进入android

su 获取root权限,然后执行以下脚本

shell
iptables-save > iptables.rules

#iptables-restore /data/local/tmp/iptables.rules

#192.168.2.12:7890 为我远端的clash开放的socks5代理
#12345端口为 iptable转发到本地的端口,本地gost起一个流量转发用于接收

#注意 流量转发和Socks5概念不一样,流量转发是原封不动的转发
#而Socks5是需要在每个封包头部加上自己的协议,所以不能直接转发到socks5的端口中去

# Create new chain
iptables -t nat -N REDSOCKS

# 以下xxx.xxx.xxx.xxx是你的远程代理服务器ip,防止循环
#iptables -t nat -A REDSOCKS -d xxx.xxx.xxx.xxx -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.1 -j RETURN
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 100.64.0.0/10 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 198.18.0.0/15 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN

iptables -t nat -A REDSOCKS -p tcp -j DNAT --to-destination 127.0.0.1:12345
#UDP支持
#iptables -t nat -A REDSOCKS -p udp -j DNAT --to-destination 127.0.0.1:12345

iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDSOCKS  # 注意修改网卡eth0名称

gost -L red://:12345?sniffing=true -F 192.168.2.12:7890

#UDP
#gost -L redu://:12345?ttl=30s -F relay://192.168.2.12:7890?sniffing=true -F 192.168.2.12:7890

参阅

透明代理 - GOST透明代理 - GOST

iptables 在 Android 抓包中的妙用 - 有价值炮灰

redsocks搭配iptables实现真全局代理 | anuoua的