1. PC 通过USB Rndis 访问Cix P1共享网络
Setting usb setting 选择usb tethering
Cix P1 新增usb0 网络节点:
|
console:/ # ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope: Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 TX bytes:0
dummy0 Link encap:Ethernet HWaddr 26:d9:24:73:51:1b inet6 addr: fe80::24d9:24ff:fe73:511b/64 Scope: Link UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 TX bytes:350
eth0 Link encap:Ethernet HWaddr 12:5f:c0:94:ae:6d Driver macb UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 TX bytes:0 Interrupt:104
usb0 Link encap:Ethernet HWaddr f2:90:cc:d9:ae:f8 Driver configfs-gadget.g1 inet addr:192.168.33.17 Bcast:192.168.33.255 Mask:255.255.255.0 inet6 addr: fe80::f090:ccff:fed9:aef8/64 Scope: Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:256 errors:0 dropped:0 overruns:0 frame:0 TX packets:185 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:23574 TX bytes:25574
|
Pc 新增usb0 网络节点:
|
stephen@stephen-System-Product-Name:~/workdir/Android14_Beta1/out/target/product/sky1_evb$ ifconfig docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.200.1 netmask 255.255.255.0 broadcast 192.168.200.255 ether 02:42:9a:bd:fd:60 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.18.64.27 netmask 255.255.252.0 broadcast 172.18.67.255 inet6 fe80::1e5b:7181:99c3:182c prefixlen 64 scopeid 0x20<link> ether 08:bf:b8:41:0e:3d txqueuelen 1000 (Ethernet) RX packets 7631998 bytes 3895309742 (3.8 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4803586 bytes 955338435 (955.3 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 296163 bytes 1388079428 (1.3 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 296163 bytes 1388079428 (1.3 GB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.33.25 netmask 255.255.255.0 broadcast 192.168.33.255 inet6 fe80::7f01:e9c6:a6af:a10 prefixlen 64 scopeid 0x20<link> ether 42:57:a7:7e:70:eb txqueuelen 1000 (Ethernet) RX packets 241 bytes 19028 (19.0 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 331 bytes 48502 (48.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
Pc 通过usb0 访问Cix P1 usb 共享网络
stephen@stephen-System-Product-Name:~/workdir/Android14_Beta1/out/target/product/sky1_evb$ ping -I usb0 www.baidu.com PING www.a.shifen.com (153.3.238.110) 56(84) bytes of data. 64 bytes from 153.3.238.110 (153.3.238.110): icmp_seq=1 ttl=44 time=23.1 ms 64 bytes from 153.3.238.110 (153.3.238.110): icmp_seq=2 ttl=44 time=22.9 ms |
2. PC Usb Rndis 共享网络给Cix P1
Android 原生不支持该Feature,需要对应Patch 支持DNS。
|
diff –git a/DnsProxyListener.cpp b/DnsProxyListener.cpp index 8064aef7..4d1f7218 100644 — a/DnsProxyListener.cpp +++ b/DnsProxyListener.cpp @@ -33,7 +33,7 @@
#include <algorithm> #include <vector> – +#include “resolv_cache.h” #include <android-base/parseint.h>
@@ -905,8 +905,26 @@ void DnsProxyListener::GetAddrInfoHandler::doDns64Synthesis(int32_t* rv, addrinf }
void DnsProxyListener::GetAddrInfoHandler::run() { LOG(INFO) << “GetAddrInfoHandler::run: {” << mNetContext.toString() << “}”; + if(mNetContext.app_netid == 0) + { + const std::vector<std::string> servers = {“10.128.30.12”}; + const std::vector<std::string> domains = {“”}; + const std::vector<int32_t>& transportTypes = {aidl::android::net::IDnsResolver::TRANSPORT_ETHERNET, aidl::android::net::IDnsResolver::TRANSPORT_VPN}; + const aidl::android::net::ResolverOptionsParcel& resolverOptions = {}; + const res_params params = { + .sample_validity = 1800, + .success_threshold = 25, + .min_samples = 8, + .max_samples = 64, + .base_timeout_msec = 5000, + .retry_count = 2, + }; + LOG(INFO) << “GetAddrInfoHandler::run: resolv_set_nameservers ” << mNetContext.toString() << “}”; + resolv_create_cache_for_net(mNetContext.app_netid); + resolv_set_nameservers(mNetContext.app_netid, servers, domains, params, resolverOptions, transportTypes); + }
|
Setting usb setting 选择usb tethering
Cix P1 新增usb0 网络节点,配置对应路由:
|
console:/ # ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope: Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 TX bytes:0
dummy0 Link encap:Ethernet HWaddr 26:d9:24:73:51:1b inet6 addr: fe80::24d9:24ff:fe73:511b/64 Scope: Link UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 TX bytes:350
eth0 Link encap:Ethernet HWaddr 12:5f:c0:94:ae:6d Driver macb UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 TX bytes:0 Interrupt:104
usb0 Link encap:Ethernet HWaddr f2:90:cc:d9:ae:f8 Driver configfs-gadget.g1 inet addr:192.168.33.17 Bcast:192.168.33.255 Mask:255.255.255.0 inet6 addr: fe80::f090:ccff:fed9:aef8/64 Scope: Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:256 errors:0 dropped:0 overruns:0 frame:0 TX packets:185 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:23574 TX bytes:25574
ip route add 192.168.0.0/24 dev usb0 proto kernel scope link src 192.168.33.17 ip route add default via 192.168.33.17 dev usb0 ip rule add from all lookup main pref 9000
|
Pc 新增usb0 网络节点,配置对应网络路由:
|
stephen@stephen-System-Product-Name:~/workdir/Android14_Beta1/out/target/product/sky1_evb$ ifconfig docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.200.1 netmask 255.255.255.0 broadcast 192.168.200.255 ether 02:42:9a:bd:fd:60 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.18.64.27 netmask 255.255.252.0 broadcast 172.18.67.255 inet6 fe80::1e5b:7181:99c3:182c prefixlen 64 scopeid 0x20<link> ether 08:bf:b8:41:0e:3d txqueuelen 1000 (Ethernet) RX packets 7631998 bytes 3895309742 (3.8 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4803586 bytes 955338435 (955.3 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 296163 bytes 1388079428 (1.3 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 296163 bytes 1388079428 (1.3 GB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.33.25 netmask 255.255.255.0 broadcast 192.168.33.255 inet6 fe80::7f01:e9c6:a6af:a10 prefixlen 64 scopeid 0x20<link> ether 42:57:a7:7e:70:eb txqueuelen 1000 (Ethernet) RX packets 241 bytes 19028 (19.0 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 331 bytes 48502 (48.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
sudo ip route add 192.168.0.0/24 dev usb0 proto kernel scope link src 192.168.33.25
|
Pc 设置网络转发:
|
sudo iptables -A FORWARD -i usb0 -o enp5s0 -j ACCEPT sudo iptables -A FORWARD -i enp5s0 -o usb0 -m state –state ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -A POSTROUTING -o enp5s0 -j MASQUERADE
|
Cix P1 通过usb0 访问Pc usb 共享网络
ping -I usb0 www.baidu.com PING www.a.shifen.com (153.3.238.110) 56(84) bytes of data. 64 bytes from 153.3.238.110 (153.3.238.110): icmp_seq=1 ttl=44 time=23.1 ms 64 bytes from 153.3.238.110 (153.3.238.110): icmp_seq=2 ttl=44 time=22.9 ms |