Al conectar mi PC al punto de acceso Wi-Fi de Android, asignó una 192.168.42.x
dirección a mi PC. Realmente necesito cambiar esto porque entra en conflicto con una de nuestras subredes de trabajo. ¿Es esto posible?
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 :
El anclaje wifi incorporado de Android está diseñado para usar 192.168.43.1/24 como servidor, con netd
el manejo del anclaje, usando dnsmasq
. El primer rango de DNS es 192.168.42.1-254
y 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.99
o lo que sea. Puede confirmar que está funcionando busybox ps | grep dnsmasq
o, 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 dnsmasq
rangos predeterminados, pero mi computadora fue asignada 192.168.43.147/24
y la puerta de enlace 192.168.43.1/24
. No estoy seguro de por qué el tuyo tiene una 42.x
dirección predeterminada.
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
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 dnsmasq
binario real.
Para conocer los pasos detallados, consulte ¿Cómo cambiar el intervalo de direcciones IP de DHCP predeterminado?
dnsmasq
.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.
VVK
Jim Klímov
Irfan Latif