Al conectar mi PC al punto de acceso Wi-Fi de Android, se ha asignado una dirección 192.168.42.x
a mi PC. Tengo que cambiarla porque entra en conflicto con una de nuestras subredes de trabajo, ¿es posible?
Desafortunadamente, no hay manera de cambiar el rango de direcciones IP para el soporte de tethering incorporado, incluso en CyanogenMod. La IP del punto de acceso Wi-Fi está codificada en android.net.wifi.WifiStateMachine.startTethering(); la IP del tethering USB está codificada en com.android.server.connectivity.Tethering.
Sin embargo, si tu teléfono está rooteado, puedes intentar usar aplicaciones de terceros para el tethering que tienen la opción de cambiar el rango de direcciones IP. Por ejemplo, cuando el tethering USB incorporado no funcionaba en CyanogenMod alphas para el Samsung Galaxy W, utilicé Wired Tether for Root Users, que tiene esa opción. Para el tethering Wi-Fi puedes 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 al cierre de 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 las aplicaciones probablemente ya no funcionan en las versiones recientes de Android.
Por si acaso alguien quiere probar esas aplicaciones obsoletas, he podido encontrar algunos archivos APK en el Google Code Archive:
El tethering wifi incorporado en Android está diseñado para usar 192.168.43.1/24 como servidor, con netd
manejando el tethering, usando dnsmasq
. El primer rango de DNS es 192.168.42.1-254
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 inicia el tethering. Pero revisando los archivos fuente de Tethering.java
(he usado 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 que esos rangos se usan, como respaldos.
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 de los rangos dhcp no son los hardcoded 42 y 43, sino que se leen de array.config_tether_dhcp_range, un array de cadenas interno. Pero actualmente está vacío.
Podrías editar el framework de android. En mi teléfono, es /system/framework/framework-res.apk
. Hay un tón de tutoriales en línea para la edición de framework-res.apk, desde simples cadenas hasta la tematización completa. Encuentra uno para tu teléfono y versión de Android.
Lo principal que quieres cambiar es el /res/values/arrays.xml
.
Busque <array name="config_tether_dhcp_range" />
Cámbialo por:
<string-array name="config_tether_dhcp_range">
<item>192.168.x.y</item>
<item>192.168.x.z</item>
</string-array>
compilar/comprimir/firmar como sea necesario (seguir un tutorial), luego reinstalar.
Si desea más de un rango, simplemente copie los dos elementos una y otra vez. Siempre tienes que proporcionar un inicio y un final para cada rango. Intenta mantenerlo en el mismo /24, es decir, 192.168.50.
5 y 192.168.50.99
o lo que sea. Puedes confirmar que está funcionando con busybox ps | grep dnsmasq
o si no tienes busybox ps dnsmasq
entonces usa el pid en cat /proc/pid/cmdline
. Debería obtener (o algo similar):
/system/bin/dnsmasq --no-daemon --no-poll -no-resolv --dhcp-range=192.168.50.5,192.168.50.99,1h
Por cierto, mi WIFI tethering utiliza los rangos por defecto de dnsmasq
, pero a mi ordenador se le asignó 192.168.43.147/24
y la puerta de enlace 192.168.43.1/24
. No estoy seguro de por qué el tuyo tiene por defecto una dirección 42.x
.
Sé que este es un viejo post, pero pensé que iba a proporcionar una actualización. Parece que algunos fabricantes y versiones de Android ahora permiten el cambio de la gama de subred IP para el servidor DHCP a través de la interfaz de usuario cuando se utiliza la función de punto de acceso WiFi. Aquí'es donde se encuentra en un HTC One M8 con Android 6.0. YMMV.
Desde la pantalla del Hotspot Móvil, haz clic en el icono de los 3 puntos (más), ve a Avanzado, y luego a Ajustes LAN. En "IP local" cambiar la dirección IP a su IP deseada. En "DHCP local" cambiar la IP de inicio para que coincida con la subred de su dirección IP.
Trent