Punto de Acceso

De enunpimpam
Saltar a: navegación, buscar

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

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