13 junho 2010

Internet em Android através de PC

Como ter Internet num dispositivo Android através de um pc? martelando levezinho ...

Nota prévia, tem que se ter acesso root ao Android e ter a opção de tethering, testado num HTC Magic com cyanogenmod 5.0.7 e do outro lado um Linux Fedora 13.

[ Android ]
Activar - Internet tethering [x]
- Infelizmente isto faz com que o dispositivo Android comece a funcionar para dar acesso à Internet ao PC, o que pode ser útil, mas no nosso caso vamos fazer ao contrário.

Num Terminal
# su (acesso como root)
- Apagar as regras do iptables que foram activadas quando activámos o tethering
# iptables -F
- Mostra as várias interfaces, só estamos interessados na tether
# ip addr
- Apagar o ip anteriormente lá colocado quando activámos o tethering.
# ip addr del 192.168.77.254 dev tether
- Agora colocar lá o nosso ip :)
# ip addr add 10.0.0.1/24 dev tether
- Finalmente adicionar a default route, 10.0.0.254 é o ip na interface usb no linux
# ip route add default via 10.0.0.254 dev tether
- Configurar o DNS, este é do google e é público
# setprop net.dns1 8.8.8.8

[ PC Linux :-D ]
- Colocar o ip na interface usb0, acho que não é necessário dizer que tem que ser como root :)
# ip addr add 10.0.0.254/24 dev usb0
- Activar o forward de pacotes
# sysctl -w net.ipv4.ip_forward=1
- Activar o masquerading no iptables
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -A FORWARD -i usb0 -j ACCEPT

E é tudo ... é claro que isto pode ser automatizado tanto do lado do Android como do Linux através de scripts e afins :)