前言
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