La funcionalidad de tethering wifi integrada en Android está diseñada para usar 192.168.43.1/24 como servidor, con netd manejando el tethering, utilizando dnsmasq. El primer rango DNS es 192.168.42.1-254 y el segundo rango 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 usa cuando Android inicia el tethering. Pero al revisar los archivos fuente para Tethering.java (usé Froyo) vemos:
// el cliente usb se le asignará 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 - el wifi por defecto es 192.168.43.1 y 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 RESPALDO.
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 dhcp no es el 42 y 43 codificados, sino que se leen del array.config_tether_dhcp_range, un array de strings interno. Pero actualmente está vacío.
Puedes editar el framework de Android. En mi teléfono, está en /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 desearías cambiar es el /res/values/arrays.xml
Busca
Cambia a:
192.168.x.y
192.168.x.z
compila/comprime/firma según sea necesario (sigue un tutorial), luego reinstala.
Si deseas más de un rango, simplemente copia los dos ítems una y otra vez. Siempre necesitas proporcionar un inicio y una finalización 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
luego usa el pid en cat /proc/pid/cmdline
. Deberías obtener (o similar):
/system/bin/dnsmasq --no-daemon --no-poll -no-resolv --dhcp-range=192.168.50.5,192.168.50.99,1h
Por si acaso, mi tethering WIFI utiliza los rangos predeterminados de dnsmasq, sin embargo, a mi computadora se le asignó la dirección 192.168.43.147/24 y la puerta de enlace 192.168.43.1/24. No estoy seguro de por qué la tuya se asignó a una dirección 42.x por defecto.
1 votos
Ver esta respuesta — si estás utilizando el soporte de tethering integrado, no hay configuración, las direcciones IP utilizadas para el hotspot de Wi-Fi y el tethering por USB están codificadas en duro.
0 votos
Hasta ahora, Pie
dnsmasq
es el servidor DHCP/DNS de Android. Puede configurarlo de alguna manera a través dednsmasq.conf
por ejemplo, para asignar permanentemente una dirección IP estática a los clientes conectados, o a través de algunos trucos, por ejemplo, para cambiar permanentemente la dirección IP del hotspost de tethering o para cambiar el rango de direcciones IP DHCP predeterminado del hotspot.