38 votes

Comment configurer les paramètres DHCP de la fonctionnalité WIFI Tethering (Point d'accès) sur Android ?

Lorsque je connecte mon PC au point d'accès Wi-Fi Android, il attribue une adresse 192.168.42.x à mon PC. J'ai vraiment besoin de changer cela car cela entre en conflit avec l'un de nos sous-réseaux de travail - est-ce possible?

4 votes

Mon mobile est rooté. Je n'ai pas de problème à modifier les fichiers système si nécessaire.

0 votes

Tout comme réponse aux nuances dans certaines des réponses précédentes, dans ma pratique, la plage 192.168.43.0/24 est par défaut assignée par Android/fournisseur pour le partage de connexion WiFi et 192.168.42.0/24 est pour le partage de connexion USB.

0 votes

30voto

Sergey Vlasov Points 2739

Malheureusement, il n'y a aucun moyen de changer la plage d'adresses IP pour le support de tethering intégré, même dans CyanogenMod. L'IP du point d'accès Wi-Fi est codée en dur dans android.net.wifi.WifiStateMachine.startTethering(); l'IP du tethering USB est codée en dur dans com.android.server.connectivity.Tethering.

Cependant, si votre téléphone est rooté, vous pouvez essayer d'utiliser des applications tierces pour le tethering qui ont l'option de changer la plage d'adresses IP. Par exemple, lorsque le tethering USB intégré était inutilisable dans les alphas de CyanogenMod pour le Samsung Galaxy W, j'ai utilisé Wired Tether for Root Users, qui possède une telle option. Pour le tethering Wi-Fi, vous pouvez essayer l'application Wireless Tether for Root Users des mêmes auteurs, qui a également l'option de modifier la plage d'adresses IP.


Étant donné que Google Code a été fermé, les liens ci-dessus ne fonctionnent plus. Certaines personnes ont exporté le code source de ces dépôts vers GitHub:

Cependant, il n'y a pas eu d'activité de développement supplémentaire, et les applications ne fonctionnent probablement plus sur les versions récentes d'Android.

Au cas où quelqu'un voudrait essayer ces applications obsolètes, j'ai pu trouver certains fichiers APK dans les Google Code Archive:

0 votes

+1 pour l'info. Mon appareil est rooté, mais l'application Wireless Tether for Root Users ne fonctionne pas sur mon téléphone mobile. Il devrait y avoir un moyen de changer la plage d'adresses IP sur le téléphone rooté, Allez!, Android est un système d'exploitation ouvert après tout.

0 votes

@VVK Il y a un moyen. Il suffit de recomplier la source.

0 votes

Les applications que vous mentionnez semblent ne plus exister. Pouvez-vous trouver de nouvelles versions en ligne, puisque vous connaissez le nom des éditeurs ? J'en ai trouvé d'autres, mais aucune d'entre elles n'était gratuite...

25voto

cde Points 713

Le partage de connexion WiFi intégré à Android est conçu pour utiliser 192.168.43.1/24 comme serveur, avec netd gérant le partage de connexion, utilisant dnsmasq. La première plage DNS est 192.168.42.1-254 et la 2ème plage DNS est 192.168.43.1-254.

Netd n'est pas facile à changer. Il nécessite un socket pour communiquer avec lui, et ce socket est pris lorsque Android démarre le partage de connexion. Mais en examinant les fichiers source de Tethering.java (j'ai utilisé Froyo) on voit :

// Le client USB sera fourni avec 192.168.42.129
private static final String USB_NEAR_IFACE_ADDR      = "192.168.42.129";
private static final String USB_NETMASK              = "255.255.255.0";

// Pour info - le wifi par défaut est 192.168.43.1 et 255.255.255.0

private String[] mDhcpRange;
private static final String DHCP_DEFAULT_RANGE1_START = "192.168.42.2";
private static final String DHCP_DEFAULT_RANGE1_STOP  = "192.168.42.254";
private static final String DHCP_DEFAULT_RANGE2_START = "192.168.43.2";
private static final String DHCP_DEFAULT_RANGE2_STOP  = "192.168.43.254";

Et plus tard, on voit ces plages utilisées, COMME BACKUPS.

mDhcpRange = context.getResources().getStringArray(
        com.android.internal.R.array.config_tether_dhcp_range);
if ((mDhcpRange.length == 0) || (mDhcpRange.length % 2 ==1)) {
    mDhcpRange = new String[4];
    mDhcpRange[0] = DHCP_DEFAULT_RANGE1_START;
    mDhcpRange[1] = DHCP_DEFAULT_RANGE1_STOP;
    mDhcpRange[2] = DHCP_DEFAULT_RANGE2_START;
    mDhcpRange[3] = DHCP_DEFAULT_RANGE2_STOP;
}

La source principale des plages DHCP n'est pas le 42 et le 43 en dur, mais est lue à partir de array.config_tether_dhcp_range, un tableau de chaînes interne. Mais il est actuellement vide.

Vous pourriez éditer le framework Android. Sur mon téléphone, c'est dans /system/framework/framework-res.apk. Il y a plein de tutoriels en ligne pour éditer framework-res.apk, des simples chaînes à des thèmes complets. Trouvez-en un pour votre téléphone et votre version d'Android.

La chose principale que vous souhaitez changer est le /res/values/arrays.xml

Cherchez . Changez à :

     192.168.x.y
     192.168.x.z

compiler/zipper/signer au besoin (suivez un tutoriel), puis réinstallez.

Si vous voulez plus d'une plage, copiez simplement les deux éléments à l'infini. Vous devez toujours fournir un début et une fin pour chaque plage. Essayez de les garder dans la même /24, c'est-à-dire 192.168.50.5 et 192.168.50.99 ou autre. Vous pouvez confirmer que cela fonctionne avec busybox ps | grep dnsmasq, ou si vous n'avez pas busybox ps dnsmasq puis utilisez le pid dans cat /proc/pid/cmdline. Vous devriez obtenir (ou similaire) :

/system/bin/dnsmasq --no-daemon --no-poll -no-resolv --dhcp-range=192.168.50.5,192.168.50.99,1h

À titre indicatif, mon partage de connexion WiFi utilise les plages dnsmasq par défaut, mais mon ordinateur a été assigné 192.168.43.147/24 et passerelle 192.168.43.1/24. Je ne sais pas pourquoi le vôtre est configuré sur une adresse en 42.x.

3 votes

42 est pour USBNET 43 est pour wifi

0 votes

Trouvé sympa, où as-tu vu ça?

1 votes

Parce que si vous vous connectez par USB, vous obtenez 42. Si vous vous connectez par wifi, vous obtenez 43.

5voto

Trent Points 51

Il semble que certains fabricants et versions d'Android permettent désormais de modifier la plage de sous-réseau IP du serveur DHCP via l'interface utilisateur lors de l'utilisation de la fonctionnalité de point d'accès WiFi. Voici où le trouver sur un HTC One M8 fonctionnant sous Android 6.0. Votre expérience peut varier.

Depuis l'écran Point d'accès mobile, cliquez sur l'icône des 3 points (plus), allez dans Avancé, puis Paramètres LAN. Sous "IP locale", changez l'adresse IP en votre adresse IP souhaitée. Sous "DHCP local", changez l'IP de départ pour correspondre au sous-réseau de votre adresse IP.

0 votes

Savez-vous si les nouveaux téléphones HTC ont également cette option?

2voto

Irfan Latif Points 16863

La plage d'adresses IP DHCP par défaut est codée en dur, vous ne pouvez donc pas la modifier sans reconstruire le ROM avec du code source modifié. Ou utilisez un petit hack. Remplacez /system/bin/dnsmasq (le serveur DHCP/DNS jusqu'à Android 9) par un script shell personnalisé qui remplace l'ancien sous-réseau par le nouveau avant d'exécuter le binaire dnsmasq réel.

Pour des étapes détaillées, consultez Comment changer la plage d'adresses IP DHCP par défaut?

0 votes

Qu'utilise maintenant Android 10?

1 votes

@sudp Implémentation Java du serveur DHCP/DNS. Mais au moins certains ROM utilisent toujours dnsmasq.

0 votes

@Irfan quelle est la procédure dans la mise en œuvre?

2voto

adamf663b Points 51

Maintenant, ils sont dynamiques. J'ai un appareil qui, lorsqu'il est connecté au point d'accès du téléphone, obtient l'adresse 192.168.XXX.85 où XXX change tout le temps, peut-être quotidiennement ou à chaque redémarrage.

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