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, en 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.
Il n'est pas facile de changer Netd. Cela nécessite un socket pour communiquer avec lui, et ce socket est pris lorsque Android lance le partage de connexion. Mais en examinant les fichiers sources de Tethering.java (j'ai utilisé Froyo) nous voyons :
// 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 nous voyons ces plages utilisées, COMME SAUVEGARDES.
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 43 codés en dur, mais lue à partir de array.config_tether_dhcp_range, un tableau de chaînes interne. Mais il est actuellement vide.
Vous pourriez modifier le framework Android. Sur mon téléphone, il se trouve dans /system/framework/framework-res.apk. Il existe une multitude de tutoriels en ligne pour modifier framework-res.apk, des simples chaînes jusqu'au thème complet. Trouvez-en un pour votre téléphone et votre version d'Android.
La chose principale que vous voulez changer est le fichier /res/values/arrays.xml
Recherchez
Changez en :
192.168.x.y
192.168.x.z
compilez/compressez/signez si nécessaire (suivez un tutoriel), puis réinstallez.
Si vous voulez plus d'une plage, il suffit de copier les deux éléments encore et encore. Vous devez toujours fournir un début et une fin pour chaque plage. Essayez de le garder dans le 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
A titre d'information, mon partage de connexion WIFI utilise les plages dnsmasq par défaut, pourtant mon ordinateur s'est vu attribuer l'adresse 192.168.43.147/24 et la passerelle 192.168.43.1/24. Je ne suis pas sûr pourquoi le vôtre a été défini par défaut sur une adresse 42.x.
1 votes
Voir cette réponse - si vous utilisez le support natif du partage de connexion, il n'y a pas de configuration, les adresses IP utilisées pour le point d'accès Wi-Fi et le partage de connexion USB sont codées en dur.
0 votes
Jusqu'à Pie
dnsmasq
est le serveur DHCP/DNS d'Android. Vous pouvez le configurer quelque peu viadnsmasq.conf
par exemple pour assigner définitivement une adresse IP statique aux clients connectés, ou via quelques hacks pour changer définitivement l'adresse IP du partage de connexion hotspot ou pour changer la plage d'adresses IP DHCP par défaut du hotspot.