我正在创建自己的AOSP,其中包含我自己的应用和服务。其中一个服务创建了ppp0接口,并尝试链接要通过该接口转发的特定应用程序。 我已经尝试过这些命令,但它没有按预期工作。
iptables -t mangle -A OUTPUT -m owner --uid-owner 10088 -j MARK --set-mark 100
ip route add 10.0.0.201 dev ppp0 table 100
从所有fwmark 100表100中添加ip规则
iptables -t nat -A POSTROUTING -m owner --uid-owner 10088 -j SNAT --to-source 10.0.0.201
ip route add default dev wlan0
顺便说一句,10.0.0.201是ppp0接口的IP地址。
这对用户10088工作正常,但是当我使用android chrome浏览器(不是UID 10088)时,我有DNS问题,所以任何URL都无法解析这意味着没有互联网,除了我的UID用户10088
启用vpn后我已经分析了orroids iptables,我找到了这些行:
-A st_mangle_OUTPUT -m mark --mark 0x3c -g st_mangle_ppp0_OUTPUT
-A st_mangle_OUTPUT -m owner --uid-owner 0-99999 -g st_mangle_ppp0_OUTPUT
-A st_mangle_ppp0_OUTPUT -j MARK --set-xmark 0x0/0xffffffff
-A st_mangle_ppp0_OUTPUT -j MARK --set-xmark 0x3c/0xffffffff
听起来他们标记了一些数据包并选择了一系列uid,这正是我想做的事情除了我想要特定的uid而不是它们的范围。
ip route为我提供了这个:
default via 192.168.0.1 dev wlan0
default via 192.168.0.1 dev wlan0 metric 310
10.10.0.200 dev ppp0 proto kernel scope link src 10.10.0.201
67.219.95.113 via 192.168.0.1 dev wlan0
70.83.139.168 via 192.168.0.1 dev wlan0
72.38.129.202 via 192.168.0.1 dev wlan0
104.167.113.112 via 192.168.0.1 dev wlan0
130.102.128.23 via 192.168.0.1 dev wlan0
139.112.153.37 via 192.168.0.1 dev wlan0
159.203.8.72 via 192.168.0.1 dev wlan0
190.181.129.115 via 192.168.0.1 dev wlan0
192.168.0.0/24 dev wlan0 scope link
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.110 metric 310
192.168.0.1 dev wlan0 scope link
209.81.9.7 via 192.168.0.1 dev wlan0
218.75.4.130 via 192.168.0.1 dev wlan0
218.189.210.4 via 192.168.0.1 dev wlan0
我正在寻找能够完成工作的任何解决方案,无论是解决这个问题还是其他新解决方案。
期待收到你的来信。提前致谢。