Wie konfiguriere ich die DHCP-Einstellungen von WIFI Tethering (Hotspot) auf Android?

Beim Verbinden meines PCs mit dem Android-WLAN-Hotspot wurde 192.168.42.xmeinem PC eine Adresse zugewiesen. Ich muss das wirklich ändern, da es mit einem unserer Arbeits-Subnetze in Konflikt steht - ist das möglich?

Mein Handy ist gerootet. Es macht mir nichts aus, Systemdateien bei Bedarf zu ändern.
Als Reaktion auf Nuancen in einigen der oben genannten großartigen Antworten ist in meiner Praxis der Bereich 192.168.43.0/24 standardmäßig für Android/Anbieter für WiFi-Tethering und 192.168.42.0/24 für USB-Tethering zugewiesen.

Antworten (5)

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 :

+1 für die Info. Mein Gerät ist gerootet, aber die App „Wireless Tether for Root Users“ funktioniert auf meinem Handy nicht. Es sollte eine Möglichkeit geben, den IP-Bereich auf dem gerooteten Telefon zu ändern, C'Mon Man!, Android ist schließlich ein offenes Betriebssystem.
@VVK Es gibt einen Weg. Kompilieren Sie einfach die Quelle neu.
Die von Ihnen erwähnten Apps scheinen nicht mehr zu existieren. Können Sie neue Versionen online finden, da Sie die Namen der Herausgeber kennen? Ich habe einige andere gefunden, aber keiner von ihnen war kostenlos ...
@pgr Einige funktionierende Links gefunden, aber keine neueren Versionen.
Unter Android 11 scheint sich meine Gateway-IP meines Hotspots jedes Mal zu ändern, wenn ich den Hotspot deaktiviere und wieder aktiviere. Diese Antwort ist also für das neueste Android veraltet. Die Frage ist nun, gibt es irgendwann eine Lösung?

Das in Android integrierte WLAN-Tethering ist so konzipiert, dass es 192.168.43.1/24 als Server verwendet, wobei netddas Tethering mit dnsmasq. Der erste DNS-Bereich ist 192.168.42.1-254und 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.99oder was auch immer. Sie können bestätigen, dass es funktioniert mit busybox ps | grep dnsmasqoder wenn Sie keine busybox haben, ps dnsmasqverwenden 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/24und Gateway 192.168.43.1/24. Ich bin mir nicht sicher, warum bei Ihnen standardmäßig eine 42.xAdresse verwendet wurde.

42 ist für USBNET 43 ist für WLAN
Denn wenn Sie per USB anbinden, erhalten Sie 42. Wenn Sie per WLAN anbinden, erhalten Sie 43.
Ich bin auf Android 11 und es weist IP sogar von 192.168.17.* zu. Sieht so aus, als hätten sich die Reichweiten geändert
@ just yeah, es ist komplett überarbeitet. source.android.com/devices/architecture/modular-system/… nicht mehr Teil des Frameworks, sondern in ein eigenes austauschbares Modul verschoben. Und es hängt immer noch von Ihrer Herstelleranpassung ab.

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

Wissen Sie, ob neue HTC-Telefone diese Option auch haben?

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 dnsmasqBinärdatei ausgeführt wird.

Ausführliche Schritte finden Sie unter So ändern Sie den standardmäßigen DHCP-IP-Adressbereich?

Was nutzt Android 10 jetzt?
@sudo Java-Implementierung des DHCP/DNS-Servers. Aber zumindest einige ROMs verwenden immer noch dnsmasq.
@Irfan wie wird bei der Umsetzung vorgegangen?
@JustKhaithang siehe meine Kommentare hier und hier .
Gute alte Hüllen.
DHCP-Bereiche sind derzeit in neueren Android-Geräten nicht konfigurierbar, siehe Code für Details, android.googlesource.com/platform/frameworks/base/+/refs/tags/…

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.