Si la RPI es 1 o 2, no tiene módulo wifi incluido, puedes usar cualquier dongle compatible, como por ejemplo los Edimax[1].
[1] Ver enlace
Nota: Para mantener los nombres de las interfaces de red[wlan0 y eth0] en una RaspberryPi, debemos editar el archivo /boot/cmdline.txt y agregar:
net.ifnames=0
Justo antes del:
rootwait
Y después reiniciar la RPI.
Fijarse bien que el dongle permita crear AP en las propiedades, ejecutar:
iw wlan0 info
o
iw phy0 info
Ver apartado:
Supported interface modes: * IBSS * managed * AP <------------ Este modo!!! * monitor * P2P-client * P2P-GO
Si no tiene AP, no funcionará
Instalando…
apt install hostapd dnsmasq
Modifica y adapta tus configuraciones[red, hostapd y dnsmasq] basándote en los del ejemplo adjunto.
Si desea seguir indagando las opciones de configuración de hostapd, sólo échele una ojeada a su fichero de configuración extendido.
En la config de dnsmasq está anclado IP-MAC de los dispositivos, si no machea, no podrán navegar. Además, está oculto el SSID del AP.
Edita
/etc/sysctl.conf
Para habilitar el forwarding del firewall descomenta:
net.ipv4.ip_forward=1
Ejecuta sysctl -p y reinicia la RPI. Para aceptar acepta el forwarding de la wifi para la eth0:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Salva la regla:
iptables-save > /etc/iptables/iptables.nat
Y habilítala en rc.local para cuando inicie el sistema, justo antes del «exit 0»:
iptables-restore < /etc/iptables/iptables.nat
Habilita e inicia servicios:
systemctl unmask hostapd systemctl enable hostapd systemctl start hostapd systemctl enable dnsmasq systemctl start dnsmasq
Y por último reinicia la RPI. Con eso debería funciona OK!!!
Ahora algunos detalles del AP
Ver usuarios conectados:
# iw dev wlan0 station dump
o
# hostapd_cli all_sta
Si esta última opción le da error, es porque no tienen las siguientes dos directivas en la configuración:
ctrl_interface=/var/run/hostapd ctrl_interface_group=0
Para ver los usuarios por IP/MAC:
# arp -an | grep "192.168.1"
Siendo 192.168.1.x/24 el direccionamiento de la red wifi, jejeje.
Des-autenticar y bloquear usuarios:
Solo 3 líneas:
hostapd_cli deauthenticate 00:11:22:AA:BB:CC hostapd_cli disassociate 00:11:22:AA:BB:CC iptables -A INPUT -m mac --mac-source 00:11:22:AA:BB:CC -j DROP
Loguear info de conexión de todos los usuarios:
Revisar la configuración, en /etc/default/hostapd, la línea:
DAEMON_OPTS
Filtrado de MAC directamente en el hostapd.conf:
Será necesario añadir un par de parámetros al archivo /etc/hostapd/hostapd.conf:
macaddr_acl=0 #deny_mac_file=/etc/hostapd/hostapd.deny accept_mac_file=/etc/hostapd/hostapd.accept
Siendo esta la más común, donde se van a aceptar todas las direcciones físicas que aparezcan dentro del fichero /etc/hostapd/hostapd.accept y bloqueando las demás.
Y la explicación, por supuesto:
# Station MAC address -based authentication # Please note that this kind of access control requires a driver that uses hostapd to take care of management frame processing and as such, this can be used with driver=hostap or driver=nl80211, but not with driver=atheros. # 0 = accept unless in deny list # 1 = deny unless in accept list # 2 = use external RADIUS server (accept/deny lists are searched first) #macaddr_acl=0
# Accept/deny lists are read from separate files (containing list of MAC addresses, one per line). Use absolute path name to make sure that the files can be read on SIGHUP configuration reloads. #accept_mac_file=/etc/hostapd.accept #deny_mac_file=/etc/hostapd.deny
Filtrado de MAC en dnsmasq:
Revisar en la configuración, en /etc/dnsmasq.conf, las directivas:
dhcp-host
y
dhcp-ignore
Un ligero detalle que se me pasó. Si desean que el dnsmasqhaga forwarding de todas las encuestas dns a otro dns, debemos escribir lo siguiente en la config:
no-resolv server=/localnet/192.168.1.1 # change ip for your ip-server
# Server IP which RPI will ask server=10.0.0.10 server=8.8.8.8
Con esto debería ser suficiente. Nos vemos en la próxima.