Fazendo um forward de um ip (NAT) para outro em Android via linha de comando

Neste post retorno aos tópicos relacionados com rede no Android. O que vou mostrar agora é bem interessante e nos ajuda muito quando precisamos fazer uma NAT ou forward de um ip no Android para outro ip. As aplicações para isso são as mais diversas, desde adequação às regras de firewall até a criação de novas rotas. Todas as ações relacionadas com este tipo de assunto devem ser executadas utilizando o comando iptables. A utilização do comando iptables é bem similar à utilização no Linux padrão, mas pode apresentar algumas limitações dependendo da compilação do Kernel de seu Android ou versão do próprio Android.

Para efetuar um forward de um ip para outro no Android via linha de comando, abra um adb shell e execute o seguinte comando:

iptables -t nat -A OUTPUT -d [ip origem] -j DNAT –to-destination [ip destino]

Veja que no meu exemplo acima tentei acessar o ip do Google 8.8.8.8 e não consegui por limitações da minha rede. O que fiz foi criar um forward do ip 8.8.8.8 para o ip 192.168.200.120. Veja que a partir deste momento o ping passou a funcionar para o ip 8.8.8.8. Isso significa que redirecionei o ip 8.8.8.8 para o ip 192.168.200.120. Não entenda que estou acessando o real ip 8.8.8.8, mas sim apontando este ip para um outro ip.

Você também deve verificar dentro do diretório /proc/sys/net/ipv4 o arquivo ip_forward. O conteúdo deste arquivo deve ser 1. Caso esteja 0 (zero), faça:

echo 1 > ip_forward

Lembre-se que seu dispositivo deve estar propriamente rooteado para que você possa acessar o comando iptables e possuir instalado o busybox direto do Google Play.

Paras aqueles leitores que não estão familiarizados com o uso do adb shell para executar comandos no prompt do Android OS, leiam o artigo http://www.frameworksystem.com/abrindo-um-adb-shell-terminal-no-android/.

Add Comment

Your email address will not be published. Required fields are marked *

Phone: (31) 3646-1612
Fax: (31) 3646-1614
Loja 01, Lourdes, Belo Horizonte/MG
Rua Rio de Janeiro, 1278