Beim Verbinden meines PCs mit dem Android-WLAN-Hotspot wurde 192.168.42.x
meinem PC eine Adresse zugewiesen. Ich muss das wirklich ändern, da es mit einem unserer Arbeits-Subnetze in Konflikt steht - ist das möglich?
Leider gibt es keine Möglichkeit, den IP-Adressbereich für die integrierte Tethering-Unterstützung zu ändern, auch nicht in CyanogenMod. Die WLAN-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 jedoch gerootet ist, können Sie versuchen, Apps von Drittanbietern für das Tethering zu verwenden, die die Option haben, den IP-Adressbereich zu ändern. Als z. B. das eingebaute USB-Tethering in CyanogenMod Alphas für Samsung Galaxy W defekt war, habe ich Wired Tether für Root-Benutzer verwendet , das über eine solche Option verfügt. Für Wi-Fi-Tethering können Sie die Wireless Tether for Root Users App 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 weitere Entwicklungstätigkeit, und die Apps funktionieren wahrscheinlich nicht mehr auf neueren Android-Versionen.
Für den Fall, dass jemand diese veralteten Apps ausprobieren möchte, konnte ich einige APK-Dateien im Google Code-Archiv finden :
Das in Android integrierte WLAN-Tethering ist so konzipiert, dass es 192.168.43.1/24 als Server verwendet, wobei netd
das Tethering mit dnsmasq
. Der erste DNS-Bereich ist 192.168.42.1-254
und und der zweite DNS-Bereich ist 192.168.43.1-254
.
Netd ist nicht einfach zu ändern. Es erfordert einen Socket, um mit ihm zu kommunizieren, und dieser Socket wird belegt, wenn Android mit dem Tethering beginnt. Aber wenn wir die Quelldateien für Tethering.java
(ich habe Froyo verwendet) durchgehen, sehen wir:
// 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 diese verwendeten Bereiche, AS 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 fest codierten 42 und 43, sondern werden aus array.config_tether_dhcp_range gelesen, einem internen String-Array. Aber es ist derzeit leer.
Sie könnten das Android-Framework bearbeiten. Auf meinem Handy ist es /system/framework/framework-res.apk
. Es gibt eine Menge Tutorials online zum Bearbeiten von framework- res.apk , von einfachen Strings bis hin zu vollständigen Themen. Finden Sie eine für Ihr Telefon und Ihre Android-Version.
Die Hauptsache, die Sie ändern möchten, ist die/res/values/arrays.xml
Suchen<array name="config_tether_dhcp_range" />
Ändern:
<string-array name="config_tether_dhcp_range">
<item>192.168.x.y</item>
<item>192.168.x.z</item>
</string-array>
nach Bedarf kompilieren/zip/signieren (folgen Sie einem Tutorial) und dann neu installieren.
Wenn Sie mehr als einen Bereich wünschen, kopieren Sie einfach die beiden Elemente immer wieder. Sie müssen für jeden Bereich immer einen Start und einen Stopp angeben. Versuchen Sie, es im gleichen /24 zu halten, dh 192.168.50.
5 und 192.168.50.99
oder was auch immer. Sie können bestätigen, dass es funktioniert mit busybox ps | grep dnsmasq
oder wenn Sie keine busybox haben, ps dnsmasq
verwenden Sie die PID in cat /proc/pid/cmdline
. Sie sollten erhalten (oder ähnlich):
/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 Standardbereiche dnsmasq
, aber mein Computer wurde zugewiesen 192.168.43.147/24
und Gateway 192.168.43.1/24
. Ich bin mir nicht sicher, warum bei Ihnen standardmäßig eine 42.x
Adresse verwendet wurde.
Ich weiß, dass dies ein alter Beitrag ist, aber ich dachte, ich würde ein Update bereitstellen. Es scheint, dass einige Hersteller und Versionen von Android jetzt die Änderung des IP-Subnetzbereichs für den DHCP-Server über die Benutzeroberfläche ermöglichen, wenn die WLAN-Hotspot-Funktion verwendet wird. Hier finden Sie es auf einem HTC One M8 mit Android 6.0. YMMV.
Klicken Sie auf dem Bildschirm „Mobiler Hotspot“ auf das Symbol mit den drei 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 passend zum Subnetz Ihrer IP-Adresse.
Trient
Der standardmäßige DHCP-IP-Adressbereich ist fest codiert, sodass Sie ihn nicht ändern können, ohne das ROM mit geändertem Quellcode neu zu erstellen. Oder verwenden Sie einen kleinen Hack. Ersetzen Sie /system/bin/dnsmasq
(den DHCP/DNS-Server bis Android 9) durch ein benutzerdefiniertes Shell-Skript, das das alte Subnetz durch ein neues ersetzt, bevor die eigentliche dnsmasq
Binärdatei ausgeführt wird.
Ausführliche Schritte finden Sie unter So ändern Sie den standardmäßigen DHCP-IP-Adressbereich?
dnsmasq
.Jetzt sind sie dynamisch. Ich habe ein Gerät, das bei Verbindung mit dem Telefon-Hotspot die Adresse 192.168.XXX.85 erhält, wobei sich XXX ständig ändert, möglicherweise täglich oder bei jedem Neustart.
VVK
Jim Klimow
Irfan Latif