¿Cómo configurar los ajustes DHCP de WIFI Tethering (Hotspot) en Android?

Al conectar mi PC al punto de acceso Wi-Fi de Android, asignó una 192.168.42.xdirección a mi PC. Realmente necesito cambiar esto porque entra en conflicto con una de nuestras subredes de trabajo. ¿Es esto posible?

Mi móvil está rooteado. No me importa cambiar los archivos del sistema si es necesario.
Solo como respuesta a los matices en algunas de las excelentes respuestas anteriores, en mi práctica, el rango 192.168.43.0/24 está asignado de forma predeterminada por Android/proveedor para conexión Wi-Fi y 192.168.42.0/24 es para conexión USB.

Respuestas (5)

Desafortunadamente, no hay forma de cambiar el rango de direcciones IP para el soporte de anclaje incorporado, incluso en CyanogenMod. La IP del punto de acceso Wi-Fi está codificada en android.net.wifi.WifiStateMachine.startTethering() ; la IP de conexión USB está codificada en com.android.server.connectivity.Tethering .

Sin embargo, si su teléfono está rooteado, puede intentar usar aplicaciones de terceros para la conexión que tienen la opción de cambiar el rango de direcciones IP. Por ejemplo, cuando la conexión USB integrada se rompió en CyanogenMod alphas para Samsung Galaxy W, usé Wired Tether for Root Users , que tiene esa opción. Para el anclaje de Wi-Fi, puede probar la aplicación Wireless Tether for Root Users de los mismos autores, que también tiene la opción de cambiar el rango de direcciones IP.


Debido a que se cerró Google Code, los enlaces anteriores ya no funcionan. Algunas personas exportaron el código fuente de esos repositorios a GitHub:

Sin embargo, no hubo más actividad de desarrollo y es probable que las aplicaciones ya no funcionen en versiones recientes de Android.

En caso de que alguien quiera probar esas aplicaciones obsoletas, he podido encontrar algunos archivos APK en Google Code Archive :

+1 por la información. Mi dispositivo está rooteado, pero la aplicación Wireless Tether for Root Users no funciona en mi móvil. Debería haber alguna forma de cambiar el rango de IP en el teléfono rooteado, ¡vamos, hombre! Android es un sistema operativo abierto después de todo.
@VVK Hay una manera. Simplemente vuelva a compilar la fuente.
Las aplicaciones que mencionas parecen ya no existir. ¿Puedes encontrar nuevas versiones en línea, ya que conoces el nombre de los editores? Encontré algunos otros, pero ninguno de ellos era gratis...
@pgr Encontré algunos enlaces que funcionan, pero no hay versiones más nuevas.
En Android 11, parece que la IP de mi puerta de enlace de mi punto de acceso cambia cada vez que deshabilito y habilito el punto de acceso, nuevamente. Entonces, esta respuesta está desactualizada para el último Android. La pregunta es ahora, ¿hay una solución, eventualmente?

El anclaje wifi incorporado de Android está diseñado para usar 192.168.43.1/24 como servidor, con netdel manejo del anclaje, usando dnsmasq. El primer rango de DNS es 192.168.42.1-254y y el segundo rango de DNS es 192.168.43.1-254.

Netd no es fácil de cambiar. Requiere un socket para comunicarse con él, y ese socket se toma cuando Android comienza a conectarse. Pero al revisar los archivos fuente Tethering.java(utilicé Froyo) vemos:

// 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";

Y más adelante vemos esos rangos utilizados, COMO 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 fuente principal para los rangos de dhcp no es el 42 y el 43 codificados, sino que se lee desde array.config_tether_dhcp_range, una matriz de cadenas interna. Pero actualmente está vacío.

Puede editar el marco de Android. En mi teléfono, es /system/framework/framework-res.apk. Hay un montón de tutoriales en línea para editar framework-res.apk, desde cadenas simples hasta temas completos. Encuentra uno para tu teléfono y versión de Android.

Lo principal que desea cambiar es el/res/values/arrays.xml

Buscar<array name="config_tether_dhcp_range" />

Cambiar a:

<string-array name="config_tether_dhcp_range">
     <item>192.168.x.y</item>
     <item>192.168.x.z</item>
</string-array>

compile/zip/firme según sea necesario (siga un tutorial), luego vuelva a instalar.

Si desea más de un rango, simplemente copie los dos elementos una y otra vez. Siempre debe proporcionar un inicio y una parada para cada rango. Trate de mantenerlo en el mismo /24, es decir, 192.168.50.5 192.168.50.99o lo que sea. Puede confirmar que está funcionando busybox ps | grep dnsmasqo, si no tiene busybox ps dnsmasq, use el pid en cat /proc/pid/cmdline. Debería obtener (o similar):

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

FWIW, mi anclaje WIFI usa los dnsmasqrangos predeterminados, pero mi computadora fue asignada 192.168.43.147/24y la puerta de enlace 192.168.43.1/24. No estoy seguro de por qué el tuyo tiene una 42.xdirección predeterminada.

42 es para USBNET 43 es para wifi
Porque si te conectas por usb obtienes 42. Si te conectas por wifi obtienes 43.
estoy en Android 11 y asigna IP incluso desde 192.168.17.*. Parece que los rangos han cambiado
@solo sí, está completamente renovado. source.android.com/devices/architecture/modular-system/… ya no forma parte del marco, se ha movido a su propio módulo reemplazable. Y todavía depende de la personalización de su fabricante.

Sé que esta es una publicación antigua, pero pensé en proporcionar una actualización. Parece que algunos fabricantes y versiones de Android ahora SÍ permiten el cambio del rango de subred de IP para el servidor DHCP a través de la interfaz de usuario cuando se usa la función de punto de acceso WiFi. Aquí es donde encontrarlo en un HTC One M8 con Android 6.0. YMMV.

Desde la pantalla Mobile Hotspot, haga clic en el ícono de 3 puntos (más), vaya a Avanzado, luego a Configuración de LAN. En "IP local", cambie la dirección IP a la IP deseada. En "DHCP local", cambie la IP inicial para que coincida con la subred de su dirección IP.

Trento

¿Sabes si los nuevos móviles HTC también tienen esta opción?

El rango de direcciones IP de DHCP predeterminado está codificado, por lo que no puede cambiarlo sin reconstruir la ROM con el código fuente modificado. O usa un pequeño truco. Reemplace /system/bin/dnsmasq(el servidor DHCP/DNS hasta Android 9) con un script de shell personalizado que reemplaza la subred antigua por una nueva antes de ejecutar el dnsmasqbinario real.

Para conocer los pasos detallados, consulte ¿Cómo cambiar el intervalo de direcciones IP de DHCP predeterminado?

¿Qué usa Android 10 ahora?
@sudo Implementación Java del servidor DHCP/DNS. Pero al menos algunas ROM todavía usan dnsmasq.
@Irfan ¿cuál es el procedimiento en la implementación?
@JustKhaithang mira mis comentarios aquí y aquí .
Buenos viejos envoltorios.
Los rangos de DHCP no se pueden configurar a partir de ahora en los Android más nuevos, consulte el código para obtener más detalles, android.googlesource.com/platform/frameworks/base/+/refs/tags/…

Ahora son dinámicos. Tengo un dispositivo que cuando se conecta al punto de acceso del teléfono obtiene la dirección 192.168.XXX.85 donde XXX cambia todo el tiempo, posiblemente a diario o con cada reinicio.