Als ich meinen PC mit dem Android-Wi-Fi-Hotspot verbunden habe, wurde meinem PC die Adresse "192.168.42.x" zugewiesen. Ich muss dies unbedingt ändern, da es zu Konflikten mit einem unserer Arbeitssubnetze kommt - ist dies möglich?
Leider gibt es keine Möglichkeit, den IP-Adressbereich für die eingebaute Tethering-Unterstützung zu ändern, auch nicht in CyanogenMod. Die Wi-Fi-Hotspot-IP ist in android.net.wifi.WifiStateMachine.startTethering() fest codiert; die USB-Tethering-IP ist in com.android.server.connectivity.Tethering fest codiert.
Wenn Ihr Telefon gerootet ist, können Sie jedoch versuchen, Tethering-Anwendungen von Drittanbietern zu verwenden, die die Option haben, den IP-Adressbereich zu ändern. Als z. B. das integrierte USB-Tethering in CyanogenMod alphas für das Samsung Galaxy W nicht funktionierte, habe ich Wired Tether for Root Users verwendet, das eine solche Option bietet. Für Wi-Fi-Tethering können Sie die App Wireless Tether for Root Users von denselben Autoren ausprobieren, die auch die Option hat, den IP-Adressbereich zu ändern.
Da Google Code abgeschaltet wurde, funktionieren die obigen Links nicht mehr. Einige Leute haben den Quellcode aus diesen Repositories nach GitHub exportiert:
Es gab jedoch keine weiteren Entwicklungsaktivitäten, und die Anwendungen funktionieren wahrscheinlich nicht mehr auf aktuellen Android-Versionen.
Nur für den Fall, dass jemand diese veralteten Apps ausprobieren möchte, habe ich einige APK-Dateien im Google Code Archive finden können:
Das in Android eingebaute WLAN-Tethering ist so konzipiert, dass 192.168.43.1/24 als Server verwendet wird, wobei netd
das Tethering mit dnsmasq
verwaltet. Der erste DNS-Bereich ist "192.168.42.1-254" und der zweite DNS-Bereich ist "192.168.43.1-254".
Netd ist nicht einfach zu ändern. Er benötigt einen Socket, um mit ihm zu kommunizieren, und dieser Socket wird belegt, wenn Android das Tethering startet. Aber wenn man die Quelldateien für Tethering.java
durchgeht (ich habe Froyo verwendet), sieht man:
// usb client will be provided 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";
// FYI - the default wifi is 192.168.43.1 and 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";
Und später sehen wir, dass diese Bereiche verwendet werden, Als 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;
}
Die Hauptquelle für die dhcp-Bereiche sind nicht die hartkodierten 42 und 43, sondern werden aus array.config_tether_dhcp_range gelesen, einem internen String-Array. Dieses ist jedoch derzeit leer.
Sie könnten das Android-Framework bearbeiten. Auf meinem Telefon ist das /system/framework/framework-res.apk
. Im Internet gibt es tausende Anleitungen zur Bearbeitung von framework-res.apk, von einfachen Zeichenketten bis hin zur vollständigen Thematisierung. Finden Sie eines für Ihr Handy und Ihre Android-Version.
Das Wichtigste, was Sie ändern möchten, ist die Datei /res/values/arrays.xml
.
Suchen Sie nach <array name="config_tether_dhcp_range" />
Ändern Sie zu:
<string-array name="config_tether_dhcp_range">
<item>192.168.x.y</item>
<item>192.168.x.z</item>
</string-array>
kompilieren/zippen/signieren Sie nach Bedarf (folgen Sie einer Anleitung), dann installieren Sie neu.
Wenn Sie mehr als einen Bereich benötigen, kopieren Sie die beiden Elemente einfach immer wieder. Sie müssen immer einen Start- und einen Endpunkt für jeden Bereich angeben. Versuchen Sie, sie im gleichen /24 zu halten, z.B. 192.168.50.
5 und 192.168.50.99
oder so. Sie können bestätigen, dass es mit busybox ps | grep dnsmasq
funktioniert, oder wenn Sie kein Busybox ps dnsmasq
haben, dann verwenden Sie die pid in cat /proc/pid/cmdline
. Sie sollten (oder ähnlich) erhalten:
/system/bin/dnsmasq --no-daemon --no-poll -no-resolv --dhcp-range=192.168.50.5,192.168.50.99,1h
FWIW, mein WIFI-Tethering verwendet die Standard-"dnsmasq"-Bereiche, dennoch wurde meinem Computer "192.168.43.147/24" und dem Gateway "192.168.43.1/24" zugewiesen. Ich bin mir nicht sicher, warum Ihr Computer standardmäßig eine "42.x"-Adresse zugewiesen bekommen hat.
Ich weiß, dies ist ein alter Beitrag, aber dachte, ich würde ein Update zur Verfügung stellen. Es scheint, dass einige Hersteller und Versionen von Android jetzt erlauben für die Änderung der IP-Subnetz-Bereich für den DHCP-Server durch die UI, wenn mit WiFi-Hotspot-Funktion. Hier's, wo man es auf einem HTC One M8 mit Android 6.0 findet. YMMV.
Klicken Sie auf dem Bildschirm Mobiler Hotspot auf das Symbol mit den 3 Punkten (mehr), gehen Sie zu Erweitert und dann zu LAN-Einstellungen. Ändern Sie unter "Lokale IP" die IP-Adresse auf Ihre gewünschte IP. Ändern Sie unter "Lokales DHCP" die Start-IP so, dass sie dem Subnetz Ihrer IP-Adresse entspricht.
Trent