Punto de Acceso
La Raspberry Pi se puede conectar a una red Wi-Fi utilizando un dongle USB, pero utilizando el mismo dispositivo de también se podemos convertir Raspberry Pi en un punto de acceso inalámbrico. Una vez configurado correctamente, esto va a permitir que otros dispositivos inalámbricos se conecten a tu Pi y opcionalmente puede enrutar todo el tráfico a través del puerto Ethernet y en el Internet (a través del router de su ISP).
Configure el adaptador inalámbrico con una dirección IP estática
Instalar y configurar un servidor DHCP
Instalar y configurar el daemon de punto de acceso
Configurar el enrutamiento IP entre la red inalámbrica y Ethernet
Sumario
Configure el adaptador inalámbrico con una dirección IP estática
Editamos el archivo “/etc/network/interfaces” para asignar una ip estatica al dispositivo Wlan0
sudo nano /etc/network/interfaces
allow-hotplug wlan0
#iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface default inet dhcp
iface wlan0 inet static address 192.168.42.1 gateway 192.168.1.11 netmask 255.255.255.0 network 192.168.42.0 broadcast 192.168.42.255
Ahora reiniciamos
Instalar y configurar un servidor DHCP
sudo apt-get install isc-dhcp-server
Ignorar los errores ya que el servidor DHCP no esta configurado. Ahora editamos el archivo de configuración:
sudo nano /etc/dhcp/dhcpd.conf
Añadir # delante de las opciones del parametro “option domain-name”
#option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org;
Quitar # delante de la opcion “authoritative;”
# If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative;
Al final del archivo añadir lo siguinte:
subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.50; option broadcast-address 192.168.42.255; option routers 192.168.42.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; }
Hacer que el adaptador inalámbrico se por defecto para la solicitud de DHCP:
sudo nano /etc/default/isc-dhcp-server
Cambiar "INTERFACES=""” por “INTERFACES="wlan0"”
Reiniciar servicio
/etc/init.d/isc-dhcp-server restart
Instalar y configurar el daemon de Punto de Acceso
Aqui seguro que tendremos un problema, si instalamos hostapd directamente de los repositorios, por defecto se instala con el controlado generico de wifi puede ser que tengamos suerte y funcione, pero si temos otro controlador de wifi diferente entonce este metodo no funcionara tendremos que crear y compilar nuestro propio hostapd opcion B.
Opción A
sudo apt-get install hostapd
Editamos el archivo de configuración hostapd y crear una red inalámbrica:
sudo nano /etc/hostapd/hostapd.conf
interface=wlan0 driver=nl80211 #driver=rtl871xdrv ssid=MiAcceso hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=raspberry wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
Esta configuracion es una de las mas estendidas de la red, podemos ver que el nombre del wifi sera MiAcceso estara en el canal 6 con una seguridad wpa y una contraseña raspberry, tambien vemos que el driver wifi ws n180211 y que hay otro desactivado.
Aqui es el punto que si no sabemos que controlador usa tiene nuestra usb wifi hay que usar la opcion B
Ahora hay que decirle al deamon hostapd donde esta el archivo de configuracion de la red.
sudo nano /etc/default/hostapd
Quitamos # delante de “DAEMON_CONF” y añadimos la direcion del archivo anterior
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Opción B
En mi caso quiero quiero realizar un punto de acceso con Realtek RTL8188, por lo tanto el hostapd esta mal configurado, y lo podemos comprobar:
sudo hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf nl80211: 'nl80211' generic netlink not found Failed to initialize driver 'nl80211'
Vemos que el controlador generico falla, asi que la mejor solucion es crear un hostapd especifico para nuestro dispositivo.
Primero desintalaremos hostapd
sudo apt-get autoremove hostapd
Descargamos el paque para crear nuestro hostapd y descompromimos.
wget https://github.com/segersjens/RTL8188-hostapd/archive/v1.1.tar.gz tar -zxvf v1.0.tar.gz
cd RTL8188-hostapd-1.0/hostapd make
Esto tardara un ratito cuando finalice hay que intalar el nuevo hostapd
sudo make install
Esto ultimo mueve y crea hostapd binary en /usr/local/bin, y inicia script y crear un archivo de configuración en /etc/hostapd/hostapd.conf.
Leer este archivo porque aqui esta la configuracion del punto de acceso y la contraseña de este.
Reseteamos el servicio y comprobamos que ya funciona
sudo service hostapd restart [ ok ] Stopping advanced IEEE 802.11 management: hostapd. [ ok ] Starting advanced IEEE 802.11 management: hostapd.
Funcionamiento hostapd
Para saber las ip que tienen activas el servidor podemos utilizar:
/etc/rc.local My IP address is 192.168.1.10 192.168.42.1
Para iniciar el cliente hostapd
hostapd -d /etc/hostapd/hostapd.conf
-d: para mostrar el modo debug
-dd: muestra mas información
hostapd -B /etc/hostapd/hostapd.conf
Iniciar el servicio
Para iniciar el servicio por "daemon in the background" el log esta en /var/log/syslog
Para que el servivio hostapd se inicie automaticamente tenemos que editar el script de inicio, tenemos que añadir la direccion del archivo de configuracion.
sudo nano /etc/init.d/hostapd
DAEMON_CONF=/etc/hostapd/hostapd.conf
update-rc.d -f hostapd enable
Configurar el enrutamiento IP entre la red inalámbrica y Ethernet
Este punto es importante crearemos las tablas de enrutamiento y la configuracion y la expedicion de IPv4
Editamos /etc/sysctl.conf
nano /etc/sysctl.conf
Quitamos # delante de la linea net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
Ejecutamis el siguiente comando para activar el desvío de ahora:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Ahora vamos a configurar Raspberry como router con los comandos siguientes:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Guardamos la tabla de enrutamiento en /etc/iptables.ipv4.nat
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
Editamos “/etc/network/interfaces“: Y añadir la siguiente línea al final del archivo. Esta línea va a restaurar la tabla de enrutamiento cada vez que se inicia Raspberry:
nano /etc/network/interfaces
pre-up iptables-restore < /etc/iptables.ipv4.nat