Ao ligar o meu PC ao hotspot Wi-Fi do Android, atribuiu um endereço 192.168.42.x
ao meu PC. Preciso realmente de mudar isto, pois entra em conflito com uma das nossas sub-redes de trabalho - será isto possível?
Infelizmente, não há forma de alterar a gama de endereços IP para o suporte de fixação de construção, mesmo em CyanogenMod. O IP do hotspot Wi-Fi é hardcoded em android.net.wifi.WifiStateMachine.startTethering(); o IP de ligação USB é hardcoded em com.android.server.connectivity.Tethering.
No entanto, se o seu telefone estiver enraizado, pode tentar utilizar aplicações de terceiros para amarrar que têm a opção de alterar a gama de endereços IP. Por exemplo, quando a ligação USB foi quebrada em alfas CyanogenMod para Samsung Galaxy W, usei Wired Tether for Root Users, que tem essa opção. Para a ligação Wi-Fi pode experimentar a aplicação Wireless Tether for Root Users dos mesmos autores, que também tem a opção de alterar a gama de endereços IP.
Como o Código Google foi desligado, os links acima já não funcionam. Algumas pessoas exportaram o código fonte desses repositórios para o GitHub:
Contudo, não houve mais actividade de desenvolvimento, e as aplicações provavelmente já não funcionam nas versões recentes do Android.
Para o caso de alguém querer experimentar essas aplicações obsoletas, consegui encontrar alguns ficheiros APK no Google Code Archive:
O dispositivo de ligação wifi do Android foi concebido para utilizar 192.168.43.1/24 como servidor, com netd
a manusear o dispositivo de ligação, utilizando o dnsmasq
. O primeiro intervalo DNS é 192.168.42.1-254
e o segundo intervalo DNS é 192.168.43.1-254
.
A Netd não é fácil de mudar. Requer uma tomada para comunicar com ela, e essa tomada é tomada quando o andróide começa a amarrar. Mas ao percorrer os ficheiros da fonte para Tethering.java
(utilizei 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";
E mais tarde vemos essas gamas utilizadas, **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;
}
A fonte principal para as gamas dhcp não é o hardcoded 42 e 43, mas lido a partir de array.config_tether_dhcp_range, um array de cordas interno. Mas está actualmente vazia.
Poderia editar a estrutura do androide. No meu telefone, é /system/framework/framework-res.apk
. Há uma ton de tutoriais online para editar framework-res.apk, desde simples strings a temas completos. Encontre um para o seu telefone e versão andróide.
O principal que quer mudar é o /res/valores/arrays.xml
.
Procure <array name="config_tether_dhcp_range" />
Mudar para:
<string-array name="config_tether_dhcp_range">
<item>192.168.x.y</item>
<item>192.168.x.z</item>
</string-array>
compilar/zip/assinar conforme necessário (seguir um tutorial), depois reinstalar.
Se quiser mais do que um intervalo, basta copiar os dois itens uma e outra vez. É sempre necessário fornecer um início e uma paragem para cada intervalo. Tente mantê-la no mesmo /24, ou seja 192.168.50.
5 e 192.168.50.99
ou o que quer que seja. Pode confirmar que está a trabalhar com busybox ps | grep dnsmasq
ou se não tiver'não tiver busybox ps dnsmasq
então utilize o pid em cat /proc/pid/cmdline
. Deverá obter (ou similar):
/system/bin/dnsmasq --no-daemon --no-poll -no-resolv --dhcp-range=192.168.50.5,192.168.50.99,1h
FWIW, a minha ligação WIFI utiliza as gamas padrão dnsmasq
, mas o meu computador foi atribuído 192.168.43.147/24
e o gateway 192.168.43.1/24
. Não tenho a certeza porque é que o seu endereço por defeito foi 42.x
.
Eu sei que este é um posto antigo, mas pensei em fornecer uma actualização. Parece que alguns fabricantes e versões do Android permitem agora a mudança da gama de subrede IP para o servidor DHCP através do UI quando se utiliza a funcionalidade de hotspot WiFi. Aqui's onde encontrá-lo num HTC One M8 a executar o Android 6.0. YMMV.
A partir do ecrã do hotspot móvel, clicar no ícone de 3 pontos (mais), ir para Avançadas, depois definições LAN. Em "IP" local; altere o endereço IP para o seu IP desejado. Em "Local DHCP" altere o IP inicial para corresponder à subrede do seu endereço IP.
Trent