domingo, 17 de abril de 2016

Raspberry: Configurar como router



Lo primero que haremos será comprobar que el dispositivo detecta la tarjeta. Para ello tecleamos:

lsusb

Y nos debería aparecer allí listada. Una vez que aparece ejecutaremos otro comando para comprobar que la tarjeta Wi-Fi puede funcionar en modo AP:

iw list

Si en el resultado que nos aparece en pantalla podemos ver la línea: Mode: AP, la tarjeta es compatible para realizar esta configuración, de lo contrario, debemos buscar otra tarjeta cuyo chipset permita configurarla como punto de acceso, o AP.

Instalar software necesario y dependencias

La mayor parte del software necesario viene por defecto instalado en Raspbian, aunque los únicos que podrían darnos problemas son el servidor DHCP y el servicio de creación de puntos de acceso, que podemos instalar manualmente (en caso de no estar disponible) tecleando:

sudo apt-get install isc-dhcp-server hostapd

Una vez llegados a este punto podemos reiniciar nuestro Raspberry para empezar con la configuración.
Configuración

Todas las configuraciones se realizan desde el terminal, a modo texto. Nosotros vamos a utilizar el editor nano y siempre antes de editar algún archivo crearemos una copia del mismo de manera que si ocurre algún error lo podamos restaurar.
Configurar el servidor DHCP

Lo primero que configuraremos será el servidor DHCP. Para ello editaremos el siguiente archivo:

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig
sudo nano /etc/dhcp/dhcpd.conf

En este archivo debemos buscar una serie de líneas. Las siguientes están por defecto sin comentar, las comentamos con una almohadilla # delante de manera que dejen de estar habilitadas quedando de la siguiente manera:

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

Buscaremos el elemento #authoritative; que por defecto estará comentado y lo descomentamos para activarlo, quedando:

authoritative;

Para finalizar configuraremos la red en la que funcionará el servidor DHCP (en nuestro ejemplo en la red 192.168.2.0). Para ello nos situamos al final del documento y añadimos:

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.2 192.168.2.30;
option broadcast-address 192.168.2.255;
option routers 192.168.2.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Guardamos los cambios y cerramos el archivo.

Abriremos un nuevo archivo de configuración del servidor, tecleando:

sudo cp /etc/default/isc-dhcp-server /etc/default/isc-dhcp-server.orig
sudo nano /etc/default/isc-dhcp-server

En este documento buscaremos (al final) la línea INTERFACES=”” y la cambiamos por:

INTERFACES="wlan0"

El servidor DHCP ya está configurado. Seguimos con el tutorial.
Configurar la conexión WLAN y Ethernet

Lo primero que haremos será desconectar la tarjeta Wi-Fi. Para ello tecleamos:

sudo ifdown wlan0

A continuación abriremos el fichero “interfaces”:

sudo cp /etc/network/interfaces /etc/network/interfaces.orig
sudo nano /etc/network/interfaces

Y lo configuraremos de la siguiente manera:

auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow hotplug wlan0
iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0

Comentamos o borramos las demás líneas. Guardamos los cambios y cerramos el documento. Para aplicar los cambios al momento debemos teclear:

sudo ifconfig wlan0 192.168.2.1

Configurar el punto de acceso

Una vez más, editaremos otro fichero tecleando:

sudo cp /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.orig
sudo nano /etc/hostapd/hostapd.conf

Y en este archivo borramos lo que haya (si hay algo) y pegamos:

interface=wlan0
ssid=RaspiAP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Podemos cambiar tanto el SSID por el nombre que queramos dar a nuestra red como el canal en channel y la wpa_passphrase con la contraseña, en texto plano, que queramos utilizar para conectarnos.

Para finalizar con la configuración abrimos un nuevo archivo de configuración tecleando:

sudo cp /etc/default/hostapd /etc/default/hostapd.orig
sudo nano /etc/default/hostapd

Descomentamos y cambiamos la línea #DAEMON_CONF=”” por:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Guardamos y cerramos el archivo para finalizar. Ya casi hemos finalizado, sólo quedan unos ajustes menores y configurar Raspbian para que todo esto se ejecute al inicio del sistema de forma automática.


Configuraciones finales

Aunque nuestro router-punto de acceso ya está configurado y es funcional, no podemos conectarnos a Internet a través de él ni se ejecutan las configuraciones de forma automática al iniciar. Para que esto funcione debemos seguir unos últimos pasos que listamos a continuación.
Configurar reenvío de paquetes

Para que Raspberry Pi reenvíe los paquetes desde él mismo hasta el router para poder salir a Internet debemos configurar los siguientes elementos:

Abrimos y editamos el fichero sysctl:

sudo cp /etc/sysctl.conf /etc/sysctl.conf.orig
sudo nano /etc/sysctl.conf

En este documento buscaremos la línea “# net.ipv4.ip_forward=1” y la descomentaremos, quedando:

net.ipv4.ip_forward=1

Guardamos y cerramos el documento. Para que los cambios tengan efecto al momento teclearemos:

sudo sysctl -p /etc/sysctl.conf

Habilitamos la NAT tecleando:

sudo iptables -t nat -A POSTROUTING -j MASQUERADE

Y guardamos las reglas iptables para que los cambios persistan (instalamos el siguiente paquete: sudo apt-get install iptables-persistent y seguimos el asistente).
Configurar arranque automático

Para que el punto de acceso y el servidor DHCP arranquen de forma automática con nuestro dispositivo debemos indicarlo específicamente y habilitar los servicios para que se activen junto a Raspbian. Para ello desde el terminal tecleamos:

sudo update-rc.d hostapd enable
sudo update-rc.d isc-dhcp-server enable

Último ajuste

Antes de finalizar, hay un fichero de WPAsupplicant que puede dar problemas en algunas ocasiones, por lo que para asegurarnos de que esto no ocurre lo movemos a una ruta segura tecleando:

sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service /home/pi

Nuestro Raspberry Pi ya funciona como un router Wi-Fi

Una vez llegados a este punto ya podemos reiniciar nuestro Raspberry Pi. Cuando este vuelva a arrancar automáticamente creará el punto de acceso, podrá asignar direcciones IP a los hosts que se conecten a él y enrutará todo el tráfico procedente de la tarjeta Wi-Fi a través de la tarjeta de red hacia el router, siempre y cuando estemos conectados a uno.
- See more at: http://www.redeszone.net/raspberry-pi/manual-para-configurar-raspberry-pi-como-un-router-wi-fi/#sthash.fsGQRtab.dpuf

Raspberry: Configurar Wifi

Realizar una copia de /etc/network/interfaces sudo cp -v /etc/network/interfaces /etc/network/interfaces.original Modificar archivo de carga de interfaces sudo nano /etc/network/interfaces Estamos viendo ahora mismo un archivo de configuración de nuestra interfaz de red. Tenemos que dejarla así: auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 auto wlan0 iface wlan0 inet dhcp wpa-ssid "mi SSID" wpa-psk "mi password" 2º. Una vez hecho esto, reiniciaremos la Raspberry Pi con adaptador conectado: sudo reboot

viernes, 15 de abril de 2016

Lo dificil es iniciar luego lo dificil es terminar

Es posible que te haya pasado algo parecido al título de esta entrada. Para iniciar un proyecto cualquiera que sea siempre habrá cierta resistencia que vencer al iniciarlo. Y es que para iniciar un proyecto existe muchos pasos previos que se deben dominar antes de siquiera dar el primer paso. En el caso de la programación así es es. Para iniciar un proyecto se debe primero tener el conocimiento general de lo que se quiere hacer, es decir dominar el ámbito del problema. Y para ello se debe definir el problema. Y eso no es tan sencillo. A veces saber cual es el problema que tenemos es lo dificil del asunto. Bueno cuando ya tenemos defido el problema, y aplicando todas las tecnicas de desarrollo de un proyecto, Analisis, Diseño, etc... nos encontramos con el momento de codificar. En mi caso los primeros momentos, que pueden ser dias, semanas o hasta meses, codifico y avanzo muchisimo y puedo sacar algo mas o menos util, pero luego cuando le pierdo interes al asunto pasa que se me hace dificil continuar por que todo me entretiene. No hay momento mas creativo para mi que el estar desarrollando una aplicacion, pero creativo para cualquier tema que no sea lo que estoy desarrollando porque cualquier cosa me interesa, desde el entretenimiento de las redes, youtube, hasta de definir otros proyectos mas triviales o innecesarios e improductivos.