Como configurar um host para mapeamento de IP no Android não raiz?

10

Tenho um site em execução no meu computador e quero testá-lo no meu tablet Nexus 7. Ou seja, através da LAN WiFi local. Se eu digitar o endereço IP, ele se conectará, mas exibirá o site errado, porque estou usando um host virtual nomeado.

Então, o que eu quero fazer é poder digitar mysite.localno Chrome / Firefox no Nexus, fazer com que eles o convertam para 10.1.2.3(ou qualquer que seja o endereço IP local) e, em seguida, ligue para o 10.1.2.3servidor, fornecendo mysite.localcomo host o pedido.

Minha pergunta: um tablet Android 4.x tem /etc/hostsarquivos ou equivalente que eu posso editar? (Sem ter que torcer o tablet, ou algo assim.)

Nos meus computadores Linux, faço isso adicionando uma entrada em /etc/hosts:

10.1.2.3  mysite.local

(Ou Windows\System32\drivers\etc\hostsem uma máquina Windows faz o mesmo.)

BTW, este é um semi-duplicado de Definir manualmente um nome de host para o endereço IP (ou seja, / etc / hosts equiv.?) , Mas essa pergunta era para o Android 2.2, onde aparentemente não era possível. (Uma das idéias alternativas sugeridas foi a configuração do DNS no roteador local, mas, até onde posso dizer, meu roteador não faz DNS localmente, não possui essa opção. Eu poderia configurar meu próprio servidor DNS para fazer isso, mas que parece uma solução de grande trabalho.)

Darren Cook
fonte
Essa é uma pergunta para a falha do servidor ou superusuário . E você deve configurar esses nomes de host com o servidor local (que é apresentado pelo servidor DHCP como nó DNS).
Izzy
11
@ Izzy Obrigado Izzy, mas eu sei como configurar o / etc / hosts nos servidores. O que não sei fazer é encontrar / editar o equivalente em um tablet Android 4.x (ou mesmo se houver um equivalente sem fazer o root). (Meu servidor DHCP, ou seja, o roteador wifi, parece não oferecer opções para adicionar nomes personalizados: eu tenho a opção de especificar um servidor DNS personalizado, mas esse é um pool lamacento no qual eu realmente não queria colocar minhas mãos. )
Darren Cook
Você me entendeu errado, Darren: não sugeri editar /etc/hosts, mas configurar seu "servidor de nomes" (por exemplo, DNSMasq ou o que você usar). Seu roteador pode lhe dar um lugar para isso. /etc/hostsprecisa ser editado em cada máquina de outra forma - e o arquivo correspondente no Android só pode ser editado com "poderes de raiz" (não sei sua localização exata, mas está em algum lugar dentro do /data/systemAFAIR). Veja: Como editar o arquivo etc / hosts
Izzy

Respostas:

6

Você não pode simplesmente editar o arquivo hosts no Android, pois ele reside em um sistema de arquivos somente leitura:, /system/etc/hostsconsulte:

As alternativas são:

  • use um servidor DNS como o DNSMasq em sua rede local para cuidar disso "centralmente"
  • use "poderes raiz" para forçar a edição do arquivo do sistema conforme descrito acima
  • instale um "servidor DNS local" no seu dispositivo Android para usá-lo, por exemplo, servidor DNS
Izzy
fonte
ei Izzy, tentei usar o servidor DNS para lidar com isso, pois não tenho acesso root ao meu telefone; Eu adicionei uma regra simples que redireciona o nome do host para o ip em questão .. mas não funciona .. o que estou fazendo de errado?
George Katsanos
O servidor DNS deve servir outros dispositivos na sua rede (como a descrição diz, você também precisa usar o encaminhamento de porta para isso). Isso sempre exige que esses dispositivos (incluindo o seu dispositivo Android) estejam configurados para usá-lo. Como não usei nenhum servidor DNS nos meus dispositivos Android, não verifiquei exatamente o que precisa ser feito aqui; mas é mais provável que você precise ajustar as entradas DNS nas configurações de rede (pressione e segure a entrada da rede Wi-Fi, escolha "Avançado" e ajuste a primeira entrada DNS - deixe a segunda como está para um "backup").
Izzy
@GeorgeKatsanos Você pode estar interessado em: stackoverflow.com/a/14211550/1768141
Vinayak
2

Conforme mencionado por lzzy, você pode usar o servidor DNSMasq para conseguir isso. Mas o Chrome usa o próprio processo de resolução de DNS e esse método pode não funcionar.

Para iniciar o servidor, use o seguinte comando:

sudo /usr/local/sbin/dnsmasq -d \
                             --no-hosts \
                             --no-resolv \
                             --conf-file=/dev/null \
                             --server=8.8.8.8 --server=8.8.4.4 \
                             --address=/example.com/192.168.0.101
  • sudo necessário para ligar na porta 53
  • -d iniciar servidor em primeiro plano
  • --no-hosts não use o arquivo hosts local
  • --conf-file=/dev/null não use nenhum arquivo de configuração
  • --server=8.8.8.8 --server=8.8.4.4 endereços de servidores upstream (Google DNS neste exemplo)
  • --address=/example.com/192.168.0.101hosts a serem substituídos. Você precisa adicionar seus hosts nesta linha. Você também pode adicionar vários hosts lá.

Em seguida, altere o servidor DNS no dispositivo. Isso pode ser feito facilmente usando o aplicativo DNS Changer .

Após essas etapas, as solicitações para esses hosts devem ser enviadas para seus endereços.

ZeroDivisi0n
fonte
0

A maneira mais simples de definir um host para o mapeamento de IP é o hostsarquivo, pois os resolvedores de DNS respeitam esse arquivo . Mas, como mencionado em outras respostas, não é possível editar /etc/hostssem fazer o root no dispositivo Android. O acesso ao servidor da Web com endereço IP também não funcionará para você devido à hospedagem virtual. Aqui estão algumas opções que você pode usar no dispositivo não raiz:

  • Use um aplicativo VPN que intercepte o tráfego DNS e procure um hostsarquivo personalizado antes de fazer consultas ao servidor DNS upstream configurado.
  • Execute um servidor DNS; eles podem ser configurados para retornar um endereço IP predefinido para um nome específico. Por exemplo, se estiver usando dnsmasq, adicione address=/mysite.local/10.1.2.3ao "dnsmasq.conf" . Ou em dnscrypt-proxyadd mysite.local 10.1.2.3para “cloaking-rules.txt” .
  • Configure o telefone para usar um proxy ou VPN e adicione a entrada 10.1.2.3 mysite.localao hostsarquivo no servidor proxy ou execute um servidor DNS local no servidor VPN.
  • Se o carregador de inicialização for desbloqueável, edite o hostsarquivo da recuperação personalizada.

Para obter mais detalhes, consulte: Como sempre resolver um nome de domínio para um IP fixo sem fazer root?


RELACIONADOS:

Irfan Latif
fonte