Como configurar as definições DHCP do WIFI Tethering (Hotspot) no Android?

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:

Comentários (4)

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 ``

Mudar para:


     192.168.x.y
     192.168.x.z

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.

Comentários (3)

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&quot 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

Comentários (1)