Executar um servidor DNS em um telefone Android antigo

Um escritor do XDA tirou um telefone Snapdragon 845 de um gaveta, instalou Debian dentro do Termux e acabou com um servidor DNS que servia toda a casa melhor do que o Raspberry Pi que substituía. O hardware já era excessivo: 6 GB de RAM, armazenamento UFS, Wi-Fi integrado e uma bateria que continua respondendo consultas mesmo durante um apagão. Custo total, zero.

O hardware é a parte fácil. Escolher software é onde a maioria das pessoas fica presa, porque quase todo aplicativo DNS no Android foi construído para proteger um telefone, não para responder perguntas para toda a casa. Passamos pelos aplicativos Android que podem genuinamente colocar um resolvedor em sua rede, verificamos o que cada um realmente serve e classificamos os melhores aplicativos para executar um servidor DNS em um telefone Android antigo abaixo.

Uma nota de escopo antes da lista. Isso não é uma comparação de provedores de DNS, e não é outro resumo de clientes que mudam DNS. Se você quiser esses, temos AdGuard DNS vs NextDNS vs ControlD vs Quad9 e o resumo de alternativas Pi-hole. Tudo abaixo é julgado em uma pergunta: o telefone em si pode responder DNS para sua TV, laptop e tablet do colega de quarto?

O que procurar em um aplicativo de servidor DNS do Android

Seis coisas separam um resolvedor de rede real de um aplicativo que apenas filtra o telefone em que é executado.

Os dois primeiros importam muito mais do que os listas de recursos sugerem. A maioria dos aplicativos de privacidade do Android ocupam o slot VPN, envolvem o tráfego do telefone e não têm conceito de um segundo dispositivo. Isso está bem para um motorista diário e inútil para um servidor.

Os limites que ninguém coloca na caixa

A porta 53 é a parede em que a maioria dos projetos bate. No Android, portas abaixo de 1024 são privilegiadas, e proot (a camada de compatibilidade que o Termux usa para executar um userland Debian) não pode vinculá-las em absoluto, então remapeia silenciosamente portas privilegiadas para cima. Sem root você acaba servindo DNS em algo como a porta 5353, e a maioria dos roteadores de consumidor apenas permite que você digite um endereço IP para DNS, sem campo de porta. Root, significando um bootloader desbloqueado e Magisk, é o que lhe dá a porta 53 e um resolvedor que o roteador aceitará. Isso também anula a garantia na maioria dos telefones, quebra Play Integrity e prejudica aplicativos bancários e de carteira, portanto use um telefone do qual você se desfez em vez de um que ainda está em serviço.

O resto da encanação é mundano mas fácil de esquecer. Dê ao telefone uma reserva DHCP ou um IP LAN estático, porque um servidor cujo endereço se move é um apagão em toda a casa esperando acontecer. Isente o resolvedor da otimização de bateria e mantenha um bloqueio de vigília, ou Android o suspenderá após alguns minutos de inatividade. E não deixe o telefone carregando para 100% para sempre se você puder evitar, porque uma célula de bolsa quente em carga completa por meses é como essas compilações terminam. Muitas ROMs e skins OEM expõem um limite de carga; se a sua não fizer, ciclar o telefone do carregador ocasionalmente é melhor do que nada.

Comparação rápida

Aplicativo Melhor para Serve Precisa de root Preço
Termux Um Pi-hole ou AdGuard Home real no telefone LAN completo Para porta 53 Gratuito
personalDNSfilter DNS de rede sem terminal LAN completo Para porta 53 Gratuito
Servers Ultimate Configuração baseada em formulários, sem shell LAN completo Para porta 53 Avaliação, depois pago
RethinkDNS O telefone em si, e apontando clientes para seu servidor Um dispositivo Não Gratuito
InviZible Pro Dispositivos através do ponto de acesso do telefone Clientes de ponto de acesso Para as boas partes Versão gratuita disponível
Nebulo Criptografia upstream leve Um dispositivo Não Gratuito
AdAway Bloqueio no telefone servidor sem slot VPN Um dispositivo Sim para modo hosts Gratuito
Termux:Boot Sobrevivendo a reinicializações Papel de suporte Não Gratuito

Os aplicativos

1. Termux, melhor para um resolvedor de rede real

Termux é a única opção nesta lista que oferece o mesmo software que um Raspberry Pi executaria. Instale proot-distro, entre em um userland Debian, e AdGuard Home, Pi-hole, Unbound ou dnsmasq instalam-se como fazem em outros lugares. AdGuard Home é o mais suave dos dois grandes: um único binário, painel de controle na porta 3000, listas de bloqueio e regras por cliente incluídas. Pi-hole também funciona, embora FTL precise ser iniciado em primeiro plano com pihole-FTL -f dentro de uma sessão tmux, porque proot mata processos que se daemon e se desconectam.

Onde fica aquém: porta 53, como discutido acima. Sem root você serve em uma porta alta que a maioria dos roteadores não aceitará, o que torna um resolvedor de rede em um por dispositivo. A compilação do Google Play também é um fork mantido separadamente com mudanças revertidas de lançamentos recentes, portanto para um servidor você quer a compilação F-Droid ou GitHub.

Preço: Gratuito e de código aberto (GPLv3).

Plataformas: Android.

Baixar: Termux no Google Play · F-Droid · GitHub

Conclusão: Tome este caminho se quiser regras de bloqueio por cliente e um painel, e você tiver um telefone rooteado mais uma noite para gastar.

2. personalDNSfilter, melhor servidor DNS de rede sem terminal

personalDNSfilter é um pequeno proxy DNS em Java que se conecta à resolução de nomes e retorna um endereço de loopback para tudo em sua lista de bloqueio. O que o torna incomum é que foi projetado para executar localmente em um dispositivo ou centralmente como o servidor DNS de uma rede, que é uma sentença que quase nenhum outro aplicativo DNS do Android pode dizer. A filtragem ocorre inteiramente no telefone, funciona com qualquer resolvedor upstream que você apontar, e o modo local é executado sem root.

Onde fica aquém: a configuração parece editar um arquivo de configuração em vez de tocar em switches, e a interface é uma lista de configurações mais uma janela de log. Reivindicar a porta 53 ainda é uma questão de root, portanto em um telefone estoque você volta a uma porta alta.

Preço: Gratuito e de código aberto.

Plataformas: Android.

Baixar: personalDNSfilter no Google Play · F-Droid

Conclusão: A melhor escolha se você quer que o telefone sirva DNS para a rede, mas não está interessado em aprender Termux.

3. Servers Ultimate, melhor configuração de servidor de toque

Servers Ultimate executa mais de 60 tipos de servidor no Android, e um servidor DNS e um servidor dnsmasq estão entre eles. Tudo é configurado através de formulários, portanto não há shell, não há gerenciador de pacotes e não há camada proot entre você e o serviço. Para um telefone de gaveta que também executará um compartilhamento de arquivos ou um endpoint FTP, um aplicativo cobre tudo.

Onde fica aquém: a versão gratuita limita você a dois servidores e deixa de funcionar após um teste de sete dias, portanto é necessário um desbloqueio pago para qualquer coisa permanente. É código fechado, e as telas de configurações empacotam muitos campos em muito pouco espaço. A porta 53 continua sendo um privilégio de apenas root aqui também.

Preço: Teste gratuito (dois servidores, sete dias), depois desbloqueio pago único.

Plataformas: Android.

Baixar: Servers Ultimate no Google Play

Conclusão: Vale a pena pagar se a linha de comando é o que o impede, e pule se você fosse instalar o Termux de qualquer forma.

4. RethinkDNS, melhor resolvedor para o telefone e clientes ao redor

RethinkDNS é o aplicativo DNS e firewall para executar no telefone em si, e desempenha um segundo papel que é fácil de perder: suporta um tipo de resolvedor proxy DNS simples onde você digita um endereço IP e uma porta. É exatamente assim que você aponta outro dispositivo Android para o telefone servidor, inclusive quando seu servidor está preso em uma porta alta que o roteador se recusa a entregar. Ele também faz DoH, DoT, DNSCrypt e ODoH upstream, envia mais de 190 listas de bloqueio no dispositivo e inclui um firewall por aplicativo com rastreador de conexão.

Onde fica aquém: não responde a consultas de outros dispositivos. Rethink protege o telefone em que é executado, e o faz através do slot VPN, o que significa que o telefone servidor não pode usar esse slot para mais nada ao mesmo tempo.

Preço: Gratuito e de código aberto, sem anúncios.

Plataformas: Android 6 e mais recente.

Baixar: Rethink no Google Play · F-Droid · GitHub

Conclusão: Instale-o nos telefones que você deseja apontar para seu novo resolvedor, não no resolvedor em si.

5. InviZible Pro, melhor para servir dispositivos através do ponto de acesso do telefone

InviZible Pro agrupa DNSCrypt, Tor e I2P, e é um dos poucos aplicativos Android com suporte real de tethering: ative as opções de tethering, inicie DNSCrypt, e os dispositivos conectados ao ponto de acesso do telefone resolvem através dele. No modo root com a opção Fix TTL ativada, ele também mostrará um log de consultas DNS ao vivo para clientes tethered, o que é genuinamente útil para pegar uma Smart TV que relata em casa a cada trinta segundos.

Onde fica aquém: clientes de ponto de acesso não são a mesma coisa que sua rede Wi-Fi existente, portanto isso cobre dispositivos que você conecta deliberadamente ao telefone em vez de tudo que já está no roteador. Root desbloqueia a maioria do que o torna interessante, e executar um ponto de acesso mais Tor mantém o telefone quente e a bateria ocupada.

Preço: Código aberto, com uma compilação gratuita no F-Droid.

Plataformas: Android.

Baixar: F-Droid · GitHub

Conclusão: A resposta certa quando a “rede” que você deseja cobrir é alguns dispositivos que você pode conectar diretamente ao telefone, como uma configuração de viagem ou um quarto de hóspedes.

6. Nebulo, melhor criptografia upstream leve

Nebulo é um cliente DoH, DoT e DoH3 de Frostnerd sem anúncios, sem rastreamento e com a reputação de ficar fora das estatísticas de bateria. Sua relevância aqui é um modo sem VPN experimental que executa um servidor DNS local em vez do VPN fictício usual, que deixa o slot VPN livre em um telefone já ocupado com outros trabalhos.

Onde fica aquém: o modo sem VPN é experimental, e espera que um aplicativo de terceiros encaminhe consultas para ele em vez de capturá-las para você. Nebulo também não está no repositório principal de F-Droid, portanto instalar fora do Google Play significa adicionar o próprio repositório do desenvolvedor.

Preço: Gratuito.

Plataformas: Android 6 e mais recente.

Baixar: Nebulo no Google Play · Espelho GitHub

Conclusão: Um bom upstream criptografado para os telefones cliente da casa, e uma opção de nicho no telefone servidor quando o slot VPN já foi falado.

7. AdAway, melhor bloqueador para o telefone servidor em si

AdAway toma uma rota diferente para o mesmo resultado: no modo root reescreve o arquivo de hosts do sistema, portanto o bloqueio se aplica em todo o sistema sem ocupar o slot VPN. Em um telefone que executa Termux, um ponto de acesso ou qualquer coisa que queira esse slot, essa diferença é tudo. Um modo VPN sem root também está disponível, e o aplicativo foi mantido no F-Droid por mais de uma década.

Onde fica aquém: bloqueio de arquivo de hosts apenas cobre o telefone em que é executado, portanto não contribui nada para o lado da rede do projeto. Modo root significa bootloader desbloqueado, e na maioria dos telefones isso significa fim de garantia, quebra verificações Play Integrity em aplicativos bancários e de carteira, e coloca atualizações de segurança do fornecedor em suas mãos em vez das do fabricante. AdAway também não está no Google Play.

Preço: Gratuito e de código aberto.

Plataformas: Android 8 e mais recente.

Baixar: F-Droid · GitHub

Conclusão: Adicione-o assim que o telefone já estiver rooteado, para que o servidor se mantenha limpo sem roubar o slot VPN de nada mais.

8. Termux:Boot, a diferença entre um servidor e uma demo de fim de semana

Termux:Boot é um pequeno complemento que executa scripts de ~/.termux/boot/ quando o telefone é iniciado. Isso é tudo que faz, e é o motivo pelo qual a compilação de XDA continuou funcionando: após um apagão, uma reinicialização OTA ou uma falha, o resolvedor volta sozinho em vez de esperar você perceber que a internet está quebrada e SSH. Emparelhe com a notificação de bloqueio de vigília do Termux e uma isenção de otimização de bateria para o Termux.

Onde fica aquém: apenas trata da inicialização. Se o Android decidir matar o processo duas horas depois, o bloqueio de vigília e a isenção de otimização são o que o salva, não isto. Skins OEM agressivos de Xiaomi, Samsung e Oppo também querem que sua própria permissão de inicialização automática seja concedida antes que scripts de inicialização funcionem confiavelmente.

Preço: Gratuito e de código aberto.

Plataformas: Android, juntamente com uma instalação do Termux da mesma fonte.

Baixar: F-Droid · GitHub

Conclusão: Instale nos primeiros dez minutos, não depois da terceira vez que a casa perder DNS.

Como escolher o certo

Se você quer a experiência completa, regras por cliente, painel de controle, gráficos de consultas e a opção de trocar Unbound mais tarde, use Termux com AdGuard Home dentro de um proot Debian, e faça root no telefone para que ele possa manter a porta 53.

Se o terminal é o grande problema, mas você ainda quer toda a rede coberta, use personalDNSfilter. É o único aplicativo sem shell aqui que foi realmente projetado para responder a outros dispositivos.

Se você preferir pagar alguns euros do que configurar algo à mão, Servers Ultimate obtém um servidor DNS ou dnsmasq executando a partir de um formulário, e também executará outros odds and ends do servidor doméstico.

Se o telefone for ser um roteador de viagem ou uma caixa de quarto de hóspedes, InviZible Pro sobre o ponto de acesso é mais simples do que qualquer um dos anteriores e não requer mudanças no roteador.

Se você tentou a rota Termux e desistiu na porta 53, instale RethinkDNS em seus telefones e aponte seu tipo de resolvedor proxy DNS para o IP e porta alta do servidor. O roteador nunca precisa saber.

E qualquer que seja o servidor em que você aterrisse, adicione Termux:Boot, uma reserva DHCP e uma isenção de otimização de bateria antes de chamar o projeto de concluído.

FAQ

Um telefone Android antigo pode realmente substituir um Raspberry Pi como servidor DNS?

Para DNS, sim. Um telefone de 2018 tem mais RAM e armazenamento mais rápido do que a maioria dos modelos Pi, além de Wi-Fi e uma bateria integrada que funciona como um pequeno UPS durante apagões. A troca é o esforço de configuração: Android não foi construído para ser um servidor, portanto fazer com que scripts de inicialização, vinculação de porta e execução em segundo plano funcionem corretamente leva mais tempo do que piscar um cartão SD.

Você precisa de root para executar um servidor DNS em um telefone Android?

Não para executar um, mas efetivamente sim para fazer seu roteador usá-lo. Android reserva portas abaixo de 1024, e proot não pode vinculá-las em absoluto, portanto um telefone não rooteado serve DNS em uma porta alta que a maioria dos roteadores de consumidor não pode ser instruid a usar. Root lhe dá a porta 53, ao custo da garantia, Play Integrity e atualizações de segurança do fornecedor.

Qual aplicativo permite que um telefone Android sirva DNS para outros dispositivos?

Termux (executando AdGuard Home, Pi-hole, Unbound ou dnsmasq), personalDNSfilter em seu modo de rede e Servers Ultimate respondem a consultas de outras máquinas. InviZible Pro cobre dispositivos conectados ao ponto de acesso do telefone. Rethink, Nebulo e AdAway protegem apenas o telefone em que são executados.

A otimização de bateria do Android matará o servidor DNS?

Vai se você deixar. Isente o aplicativo da otimização de bateria nas configurações do Android, mantenha o bloqueio de vigília do Termux de sua notificação e conceda qualquer permissão de inicialização automática adicional que sua pele OEM exigir. Sem isso, o resolvedor fica em silêncio durante o Doze e todos os dispositivos da casa perdem a resolução de nomes de uma vez.

Você pode executar Pi-hole no Android?

Você pode, através do Termux e proot-distro com um contêiner Debian. O único passo não óbvio é iniciar FTL em primeiro plano com pihole-FTL -f dentro de tmux, porque proot termina processos que se daemon e se desconectam do shell.

É seguro deixar o telefone conectado permanentemente?

É uma prática comum, mas calor e uma bateria mantida em carga completa por meses eventualmente inflarão a célula de bolsa. Use um recurso de ROM ou OEM que limite o carregamento abaixo de 100% se um estiver disponível, mantenha o telefone em um local ventilado e fora de uma gaveta, e verifique o painel traseiro a cada poucos meses para sinais de inchaço.