想在手机上通过 shell 开启透明代理,应该如何操作?

2019-06-20 11:33:35 +08:00
 whyou
手机上 iptables 版本为 1.6.1,我自己测试感觉没有数据转发到代理端口。我的写法是这样的

iptables -t mangle -N TPROXY
iptables -t mangle -A TPROXY -d 0/8 -j RETURN
iptables -t mangle -A TPROXY -d 10/8 -j RETURN
iptables -t mangle -A TPROXY -d 127/8 -j RETURN
iptables -t mangle -A TPROXY -d 169.254/16 -j RETURN
iptables -t mangle -A TPROXY -d 172.16/12 -j RETURN
iptables -t mangle -A TPROXY -d 192.168/16 -j RETURN
iptables -t mangle -A TPROXY -d 224/4 -j RETURN
iptables -t mangle -A TPROXY -d 240/4 -j RETURN

iptables -t mangle -A TPROXY -m owner --uid-owner 代理程序的 uid -j RETURN


ip rule add fwmark 0x01/0x01 table 100
ip route add local 0.0.0.0/0 dev lo table 100

iptables -t mangle -A TPROXY -p udp -j TPROXY --on-port 代理程序监听端口 --tproxy-mark 0x01/0x01
iptables -t mangle -A TPROXY -p tcp -j TPROXY --on-port 代理程序监听端口 --tproxy-mark 0x01/0x01
iptables -t mangle -A PREROUTING -j TPROXY



以上命令执行完毕后感觉手机依然是走的直连。测试将最后一行替换为
iptables -t mangle -I PREROUTING -j TPROXY
依然没有变化。请各位大神指点。谢谢!
6030 次点击
所在节点    Android
12 条回复
iwtbauh
2019-06-20 11:53:34 +08:00
有可能是手机的 Linux 内核没有编译某些必要的 iptables 模块,这些命令是否有报错?如果是,则你只能重新编译内核解决。
whyou
2019-06-20 11:56:25 +08:00
所有命令均无报错,而且用命令验证看起来也都启用了。
artandlol
2019-06-20 11:56:49 +08:00
sshuttle
locoz
2019-06-20 18:10:22 +08:00
试试直接用 ProxyDroid ?
justin2018
2019-06-20 19:59:32 +08:00
artandlol
2019-06-21 11:54:25 +08:00
@justin2018 哈哈 之前我也折腾了半天后面发现错了
wslwsl
2019-06-21 12:07:17 +08:00
@whyou 最后弄出来了吗?方便分享一下吗?
whyou
2019-06-21 17:12:21 +08:00
@wslwsl 自己写 shell 肯定是不行,原因未知。目前是想有空测试一下 3 楼 4 楼说的软件。
happyhou
2019-06-22 16:56:49 +08:00
ProxyDroid
whyou
2019-06-25 16:12:27 +08:00
发现一个叫做 go-tun2socks-mobile 的项目,我想先试这个。
whyou
2019-07-01 10:22:04 +08:00
目前状况:
ProxyDroid 只代理 DNS 查询,其他 udp 未做处理,排除。
whyou
2020-02-28 19:52:47 +08:00
目前研究的结果如下

ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

iptables -t mangle -N PROXYAPP

iptables -t mangle -A PROXYAPP -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A PROXYAPP -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A PROXYAPP -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A PROXYAPP -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A PROXYAPP -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A PROXYAPP -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A PROXYAPP -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A PROXYAPP -d 240.0.0.0/4 -j RETURN

iptables -t mangle -A PROXYAPP -p udp -j TPROXY --on-port 65535 --tproxy-mark 1
iptables -t mangle -A PROXYAPP -p tcp -j TPROXY --on-port 65535 --tproxy-mark 1


iptables -t mangle -N PROXYAPP_MARK
iptables -t mangle -A PROXYAPP_MARK -m mark --mark 2 -j RETURN

iptables -t mangle -A PROXYAPP_MARK -p udp -j MARK --set-mark 1
iptables -t mangle -A PROXYAPP_MARK -p tcp -j MARK --set-mark 1

iptables -t mangle -A PREROUTING -j PROXYAPP
iptables -t mangle -A OUTPUT -j PROXYAPP_MARK

据说在 linux 上运行成功,在安卓上还是不行。我还在继续测试。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX