Como eu crio uma interface de rede USB para passar internet ao meu telefone Android?

3

Eu estou trabalhando em passar pela internet do meu computador para o meu telefone (rodando o Android) via USB. Não sei como conseguir isso, mas sei que precisarei de uma interface de rede usb, como usb0 . Esta interface não é criada automaticamente ao conectar o telefone.

Como eu crio essa interface de rede USB? Isso pode ser feito dentro do Linux ou deve ser feito a partir do telefone Android?

Observação: Se eu ativar o compartilhamento de USB no telefone, uma interface USB correspondente será criada no Linux. No entanto, isso é configurado automaticamente para usar o telefone como um dispositivo de rede (ou um gateway?) E passar a internet do meu telefone para o meu computador, o que é o oposto do que estou tentando fazer.

    
por drs 10.09.2013 / 04:44

2 respostas

3

Na verdade, o tethering USB cria uma conexão simétrica entre seu telefone e o PC. A direção que seu tráfego pode seguir é definida apenas pela configuração da interface de rede e pelos serviços executados em cada lado.

Para deixar o tráfego ir do telefone para o PC, você pode (por exemplo):

  • configure seu PC para executar o DHCP e compartilhar sua conexão com a internet
  • ative o tethering USB no seu telefone Android:
  • execute um cliente dhcp no seu telefone Android (como root):

netcfg usb0 dhcp

Ou

dhclient usb0

Telefones diferentes podem ter nomes diferentes para a interface, incluindo rndis0 , rmnet0 etc. Esses podem ser descobertos via ifconfig .

Em caso de problemas, pode valer a pena tentar carregar o módulo do kernel g_ether no seu telefone manualmente.

    
por 22.04.2016 / 12:11
1

Bem, posso compartilhar com você minha experiência:

No telefone (Samsung J1 (Android 5.1.1) enraizado ): Opções do desenvolvedor ativas > > Depuração USB ativa > > Eu estou indo para Anchorage para rede e zona portátil e ativa Anchorage (desculpe a tradução, eu sou de Cuba) para rede USB > > Quando faço isso eu abro o emulador do Terminal Virtual (um apk) e acesso como root ( su ) e checo as interfaces de rede com ifconfig , que retorna uma "nova" interface chamada rndis0 e com IP 192.168.42.129

No PC com o Debian: Eu abro o terminal e acesso como root (só para não ter que colocar sudo a cada vez) > > ifconfig e retorna uma "nova" interface chamada usb0 com IP 192.168.42.111

Se você pingar do telefone para o PC e vice-versa e tudo deve estar ok (eu recebo respostas nos dois lados), agora é hora de dar ao telefone um gateway, então no emulador de terminal do telefone: route add default gw 192.168.42.111 dev rndis0 > > colocando aqui o IP do PC Neste ponto, você deve ser capaz de fazer ping no DNS do Google (tanto por IP quanto por nome) do emulador de terminal e, se sua conexão com a Internet não precisar de uma configuração de servidor proxy, você tem internet em seu telefone via cabo USB ... / p>

PS: Se o seu PC e telefone não usarem IP automaticamente, use isto:

No PC:

ifconfig usb0 10.42.0.1 netmask 255.255.255.0
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE  

No telefone:

ifconfig rndis0 10.42.0.2 netmask 255.255.255.0
busybox route add default gw 10.42.0.1 dev rndis0

E configure o DNS (ainda celular):

mount -o remount, rw /system
echo 'nameserver 192.168.6.40' > /system/etc/resolv.conf
mount -o remount, ro /system
iptables -t nat -I OUTPUT 1 -p udp --dport 53 -j DNAT --to-destination 192.168.6.40:53 
    
por 04.01.2018 / 18:11