AOSP: Android Pie (android-9.0.0_r16)
Build: PQ1A.181105.017.A1
Appareil: Pixel 2
J'essaie de connecter un modem cellulaire en utilisant dhcptool (renommé dhcpdbg) avec Android 9 Pie en mode RNDIS. La même configuration fonctionnait bien pour les versions précédentes d'Android, mais pour Pie, elle échouait sur ioctl (3, SIOCADDRT, 0x7ffb9b8030). Il dit "Le réseau est inaccessible".
J'ai vérifié le port c'est-à-dire usb0 dans ifconfig, il énumère correctement mais l'appel dhcpdbg échoue et le réseau n'est pas pingable.
Sepolicy sur l'appareil est en mode permissif. De plus, il n'y a pas d'autorisation ou d'autres erreurs dans le journal dmesg. Remarque: Par défaut, les pilotes RNDIS ne sont pas configurés dans le noyau Android Pie, nous avons donc activé le mode RNDIS dans le noyau et intégré le noyau modifié dans la source AOSP.
Voici quelques journaux de "strace dhcpdbg usb0"
XXX
Voici quelques résultats des commandes de mise en réseau:
ifconfig:
ioctl(3, SIOCGIFFLAGS, {ifr_name="usb0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(3, SIOCSIFFLAGS, {ifr_name="usb0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(3, SIOCSIFADDR, {ifr_name="usb0", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.100")}}) = 0 ioctl(3, SIOCSIFNETMASK, {ifr_name="usb0", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.0")}}) = 0 ioctl(3, SIOCADDRT, 0x7fd2bb6cd0) = 0 close(3) = 0 socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3 connect(3, {sa_family=AF_UNIX, sun_path="/dev/socket/property_service"}, 31) = 0 writev(3, [{iov_base="\1\0\2\0", iov_len=4}, {iov_base="\r\0\0\0", iov_len=4}, {iov_base="net.usb0.dns1", iov_len=13}, {iov_base="\v\0\0\0", iov_len=4}, {iov_base="192.168.1.1", iov_len=11}], 5) = 36 recvfrom(3, "\0\0\0\0", 4, MSG_WAITALL, NULL, NULL) = 4 close(3) = 0 socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3 connect(3, {sa_family=AF_UNIX, sun_path="/dev/socket/property_service"}, 31) = 0 writev(3, [{iov_base="\1\0\2\0", iov_len=4}, {iov_base="\r\0\0\0", iov_len=4}, {iov_base="net.usb0.dns2", iov_len=13}, {iov_base="\0\0\0\0", iov_len=4}], 4) = 25 recvfrom(3, "\0\0\0\0", 4, MSG_WAITALL, NULL, NULL) = 4 close(3) = 0 write(2, "dhcptool: ", 10dhcptool: ) = 10 write(2, "IP assignment is for debug purpo"..., 40IP assignment is for debug purposes ONLY) = 40 write(2, ": ", 2: ) = 2 write(2, "Success\n", 8Success ) = 8 mprotect(0x7729153000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x7729153000, 4096, PROT_READ) = 0 mprotect(0x7729153000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x7729153000, 4096, PROT_READ) = 0 munmap(0x7729153000, 4096) = 0 exit_group(0) = ? +++ exited with 0 +++ bullhead:/ # ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=131 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=58.4 ms ^C --- 8.8.8.8 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 58.496/95.044/131.592/36.548 ms bullhead:/ #
ip add show: p >
connect: Network is unreachable
ip route show:
Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 usb0 192.168.43.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Table de routage IP du noyau:
192.168.1.0/24 dev usb0 proto kernel scope link src 192.168.1.100 192.168.43.0/24 dev wlan0 proto kernel scope link src 192.168.43.222
ping 8.8.8.8:
28: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000 link/ether 02:06:06:15:00:0b brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global usb0 valid_lft forever preferred_lft forever
Cet outil dhcptool fonctionne correctement sur toutes les versions antérieures d'Android jusqu'à Android 8. Vous trouverez ci-dessous le journal de démarrage d'Android 8 dhcptool fonctionnant sur le même port usb0.
usb0 Link encap:Ethernet HWaddr 02:06:06:15:00:0b Driver rndis_host inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:80 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1312 TX bytes:25155
3 Réponses :
Il semble qu'il vous manque une route vers la 8.8.8.8 (probablement la route par défaut). Comparez les itinéraires entre une configuration fonctionnelle et non fonctionnelle.
D'après les informations partagées ci-dessus, il apparaît que l'itinéraire par défaut est manquant. Vous pouvez ajouter la route par défaut en utilisant la commande ci-dessous:
ip route add default dev usb0
Après avoir ajouté la route ci-dessus, je vous recommande d'utiliser l'outil traceroute ou ping (avec TTL modifié si traceroute n'est pas disponible) pour tracer les paquets plus loin à partir de là.
Voir https://elinux.org/Android_Networking#Setting_up_networking_on_bootup . Les commandes
netcfg eth0 dhcp setprop net.dns1 8.8.8.8
devraient suffire.
Salut, je suis confronté à la même situation, avez-vous réussi à trouver une solution à cela? si oui, cela vous dérangerait-il de partager?