1 votes

Détails architecturaux du service VPN Android : Comment tun0 est créé ?

Je voudrais savoir comment Android crée une interface VPN tun0. Après avoir appelé establish depuis VPNService, Builder, le ServiceManager prend en charge le processus et crée le tun0. Pour cela, il utilise des paquets à envoyer à Binder, mais je suis un peu perdu quant à ce qu'il fait après cela. Je veux comprendre en détail comment une interface est créée.

J'ai essayé d'utiliser strace sur l'application pour voir quels types d'appels système sont exécutés, mais je n'ai pas vu d'appels ioctl à partir du pid de l'application, mais je les ai vus sur le pid de system_Server. Je comprends que c'est le system_Server qui crée l'interface, mais comment Binder parle au system_Server pour lui demander de créer une interface. Merci de m'indiquer le code source. Ce serait vraiment utile.

0 votes

S'agit-il d'une question axée sur l'utilisateur ? Demander le code source fait plutôt penser à une question centrée sur le développeur. Et les questions de développement sont hors sujet ici. Elles appartiennent plutôt à notre site frère StackOverflow.

2voto

Irfan Latif Points 16863

Il s'agit plutôt d'une question liée au développement, mais ce que je sais, c'est que classeur est la communication inter-processus (IPC) (comme prises de courant ) que les processus utilisent en ouvrant /dev/*binder dispositifs de caractères. Binder IPC est usado par le cadre Java d'Android (pour la communication JNI) ainsi que par des processus natifs (par exemple pour la communication avec les blobs binaires du fournisseur).

tun est une interface réseau virtuelle de type Ethernet créée par le noyau (à condition qu'elle soit construite avec tuntap ) afin qu'un programme puisse directement lire/écrire des paquets IP depuis/vers cette interface. Création de tun a besoin de ioctl TUNSETIFF être envoyé au noyau par /dev/net/tun dispositif de caractères (c'est /dev/tun sur Android). Manuellement, vous pouvez le faire :

~# ip tuntap add dev tun0 mode tun

Le service VPN d'Android utilise binder pour appeler le code natif de tun création.

RESSOURCES :

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X