Como “falar” com um IP “pai” em uma sub-rede?

Como “falar” com um IP “pai” em uma sub-rede?

Tenho acesso apenas a sistemas *nix. NetBSD e/ou sistema operacional baseado em Linux.

Então minha dúvida vem do fato de ADBnão estar amplamente disponível em todas as plataformas, caso contrário é muito difícil de instalar ou obter (ter acesso à internet, obter acesso de superusuário, etc).

De qualquer forma, RNDISa funcionalidade já é oferecida por quase todos os dispositivos Android. Permitir que o telefone se torne um "roteador" me dará a opção de usar o netcat porque posso simplesmente configurar um "servidor" e obter/receber arquivos bidirecionalmente, sem a necessidade de me envolver ADB.

Assim:

NetBSD
dhcpcd -n urndis0

Linux
udhcpd -i usb0

Isso me dará um IP dentro de uma sub-rede configurada pelo Android. Algo como:192.168.32.225/24

Então, essencialmente, o telefone atua como um roteador, dando ao meu computador *nix um IP pertencente a uma sub-rede configurada pelo próprio telefone. Gostaria apenas de abrir uma porta no meu host local 127.0.0.1e netcatapenas transferir arquivos.

Algo assim:

On Android device:
busybox nc -v -w3 -l -p 3838

On *nix system (Linux in the example below):
nc -v -w3 **(upper higher loopdevice outside subnetted network) 127.0.0.24** 3838

E poder acessar o dispositivo de rede/loop "superior" já existente na própria rede local do Android.

Vamos supor que o telefone Android seja outro host compartilhando sua conexão e atribuindo um IP de sub-rede ao meu computador para que minha caixa *nix possa acessar a Internet:

Minha pergunta é então: Posso usar o IP (que está dentro de uma sub-rede) fornecido pela interface RNDIS do telefone Android para acessar a rede local do próprio telefone apenas com ferramentas padrão em *nix?

Solução @Frédéric Loyer Muito obrigado!

Maravilhoso, com esse método não há necessidade de entrar adbem cada computador em que estou, na maioria das vezes o que consigo é busybox ncand or ssh. Isso é perfeito, com isso eu consigo até fazer ssh no meu Android sem precisar nem de uma conexão ativa no próprio celular, não é incrível!?

Aqui está o que eu fiz.

# This makes my computer to request an IP to my phone.
$sudo udhcpc -i usb0

# Since I got access to busybox-only most of the time, this gives me the IP from the "router" which is the phone.

$route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.42.129  0.0.0.0         UG    0      0        0 usb0
127.0.0.1       *               255.255.255.255 UH    0      0        0 lo
192.168.42.0    *               255.255.255.0   U     0      0        0 usb0

# ifconfig output shows me the new IP assigned to usb0 on my computer.

Depois disso, é só fazer o ssh no meu telefone ou abrir portas com o Termux. Incrível! :)

Responder1

No telefone Android, você digitou:

busybox nc -v -w3 -l -p 3838

Isso parece bom.

No Linux, digite ip route. Você deveria ter algo assim:

default via 37.59.40.254 dev enp1s0 onlink 
37.59.40.0/24 dev enp1s0 proto kernel scope link src 37.59.40.118 

A linha com a defaultrota indica o endereço do roteador. (Aqui 37.59.40.254). Você deve tentar digitar ncno Linux com este endereço de roteador, pois é o endereço do Android na sub-rede RNDIS. Você deve digitar apenas um endereço IP: não 127.0.0.24. (127 endereços são reservados para trocas internas em seu sistema Linux).

Não existe fatiamento aqui: o Android cria uma rede que talvez 192.168.32.0/24. Nesta rede existem dois endereços definidos (um para ambas as extremidades), outros endereços podem não funcionar.

informação relacionada