sábado, 10 de mayo de 2014

Configurar Internet en Beaglebone Black por USB con Debian 7

En este post explicaremos como tener acceso a Internet desde nuestra BeagleBone Black con Debian 7, cuando ésta se encuentra sólo conectada vía USB a nuestra computadora.



Comencemos por conectar nuestra placa al puerto USB de nuestro equipo, una vez transcurrido el tiempo de booteo, en nuestra máquina se creará una nueva placa de red virtual, la cual típicamente tendrá la dirección IP “192.168.7.1”.

Para verificar que esto sea así, desde una terminal escribiremos:

#ifconfig -a

#enp0s29u1u1: flags=4163<up>  mtu 1500
        inet 192.168.7.1  netmask 255.255.255.252  broadcast 192.168.7.3
        inet6 fe80::caa0:30ff:feb5:7c38  prefixlen 64  scopeid 0x20<link></link>
        ether c8:a0:30:b5:7c:38  txqueuelen 1000  (Ethernet)
        RX packets 364  bytes 40963 (40.0 KiB)
        ...

Ahora ya podremos acceder vía SSH a nuestra Beagle:

#ssh root@192.168.7.2

Una vez ingresado el password:

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 17 03:40:48 2014 from new-host-92.local

root@arm:~#


Ya estamos en la terminal de nuestra Beagle, consultemos por las interfaces de red activas en nuestra placa.

root@arm:~# ifconfig -a

Como resultado obtendremos dos interfaces: una corresponde a "localhost" y la otra a "usb0". Sin embargo, cuando se requiere instalar un paquete desde un repositorio externo, por ejemplo:

root@arm:~# aptitude install python-mysqldb

Nos encontraremos con que el sistema operativo no posee acceso a Internet.

Para solucionar este problema, tenemos dos caminos a tomar: el primero es darle a nuestra Beagle otra forma de acceso a Internet (WiFi, LAN, etc...) y el segundo compartiendo la red de nuestra computadora.

¿Cómo compartir?, es relativamente simple y se podrá aplicar para compartir acceso a Internet con cualquier dispositivo.

Empecemos por crear en la Beagle una regla de ruteo  dentro de un archivo al cual le daremos permisos de ejecución.

root@arm:~# echo "route add default gw 192.168.7.1 usb0" > red.sh
root@arm:~# chmod +x red.sh
root@arm:~# ./red.sh

Por otra parte editaremos el contenido del archivo resolv.conf a efectos de dejar como servidor de DNS a Google e incorporaremos un atributo que impida modificar dicho archivo en el futuro. En el caso de requerir modificarlo, se deberá ejecutar el mismo comando con el parámetro “-i”.


root@arm:~# echo "nameserver 8.8.8.8" >> /etc/resolv.conf
root@arm:~# chattr +i /etc/resolv.conf

Esta es toda la configuración que se debe aplicar en la BeagleBone Black. Ahora debemos trabajar del lado de nuestro equipo, en donde supondremos que también tenemos instalado el sistema operativo Debian. Comenzaremos creando un archivo al cual luego de creado lo haremos ejecutable.

# vim compartir.sh

En éste, cargaremos el siguiente contenido:

#Habilitamos el forwardeo
echo 1 > /proc/sys/net/ipv4/ip_forward

#Borramos las tablas de iptables
iptables -F

#Agregamos una regla a IP tables
iptables -t nat -A POSTROUTING -s 192.168.7.2 -o wlp5s0 -j MASQUERADED

#Deshabilitamos el firewall 
systemctl stop firewalld.service

Por último le daremos permiso de ejecución y lo ejecutaremos:

# chmod +x compartir.sh
# ./compartir.sh

A esta altura ya contamos con acceso a Internet desde nuestra Beagle, para probarlo, basta con realizar un ping a Google.

root@arm:~# ping www.google.com

Es importante recordar que cada vez que reiniciemos nuestra máquina o nuestra Beagle, deberemos volver a ejecutar los archivos que creamos.

Update:

Si tenemos Windows en nuestra PC, deberemos habilitar la opción "compartir internet" en nuestra placa de red principal. Atención: luego de hacer esto, Windows le cambia la IP a nuestra máquina.