Configura Orange Pi como punto de acceso WiFi
Publicado en Mayo de 2017¿Te gustaría usar tu Pi como un punto de acceso WiFi? Si quieres usar una configuración inalámbrica y no dispones de router WiFi, o si quieres ensanchar la cobertura en un punto donde tengas acceso sólo a través de Ethernet. O quizás el primer paso para acceder a la Deep Web (internet profunda, internet invisible o internet oculta). Entonces este es tu tutorial.
Que necesitas:
En realidad, para este tutorial no necesitas ni monitor ni teclado si todo lo haces a través de SSH. Esta guía se basa en una Orange Pi 2, aunque puede ser cualquiera que tenga conexión WiFi, ya sea por hardware o a través de un dongle. Para arrancar partiremos de una instalación Arbiam y conexión a internet a través de Ethernet.
Primero debemos localizar nuestra tarjeta WiFi. Con
ifconfig -a
veremos todas las conexiones. Una de ellas será nuestra WiFi, normalmente será wlan0. Asegúrate de que sea esa o ajusta el código siguiente y cambia wlan0 por tu tarjeta.
root@orangepi2mini:~# ifconfig -a eth0 Link encap:Ethernet HWaddr ea:3b:30:d7:50:41 inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0 ...... wlan0 Link encap:Ethernet HWaddr 58:63:56:cd:4c:23 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Comenzamos por los imprescindibles:
sudo apt-get update sudo apt-get upgrade
Ahora instalamos el software que actuará como el 'hostap' (punto de acceso del host) y un iptables manager:
sudo apt-get install hostapd isc-dhcp-server sudo apt-get install iptables-persistent
Pulsa Enter para validar las 2 siguientes pantallas para salvar las reglas de las iptables para IPv4 e IPv6.
En los siguientes pasos vamos a configurar el servidor de DHCP, siglas en inglés de Dynamic Host Configuration Protocol, en español "protocolo de configuración dinámica de host", que es un servidor que usa protocolo de red de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van quedando libres. Editaremos el archivo /etc/dhcp/dhcpd.conf para que las conexiones WiFi entrantes obtengan automáticamente direcciones IP, DNS, etc. Ejecuta este comando para editar el archivo:
sudo nano /etc/dhcp/dhcpd.conf
Encuentra las siguientes líneas y coméntalas con el símbolo # para que no tengan efecto:
option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org;
quedando de la siguiente forma:
#option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org;
Ahora busca las siguientes líneas
# If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative;
quita el símbolo # de la línea authoritative; para que SI se ejecute, quedando:
# If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative;
Y añade las siguientes líneas al final del archivo que configuran nuestra red:
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; }
Guarda el fichero y sal del editor. Vamos a editar otro archivo. Ejecuta:
sudo nano /etc/default/isc-dhcp-server
y busca la línea donde pone INTERFACES="" y cámbialo por el nombre de tu adaptador WiFi:
INTERFACES="wlan0"
Lo siguiente es asignar una IP estática a la conexión WiFi, así que lo primero es desactivarla si estaba arrancada. Si no lo estaba, tampoco pasa nada por ejecutar la siguiente instrucción, así que vamos a lanzarla de todas maneras:
sudo ifdown wlan0
A continuación, configuraremos la conexión wlan0 para que sea estática y entrante. Para editar el archivo, ejecuta:
sudo nano /etc/network/interfaces
Encuentra la línea donde pone auto wlan0 y añade el símbolo # para que esa línea no se ejecute. Hazlo en todas la líneas que se refieran a wlan0 porque necesitamos actualizarlas. Dependiendo de la distribución, habrá más o menos referencias así que no puedo ser más explícito. Ahora añade al final:
allow-hotplug wlan0 iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0
Debe quedarte más o menos así:
Asigna manualmente una IP fija o estática al adaptador WiFi con la siguiente línea:
sudo ifconfig wlan0 192.168.42.1
Ahora tenemos que configurar los detalles del punto de acceso. Crearemos una red protegida con contraseña para mayor seguridad. Crea un nuevo fichero con la siguiente línea:
nano /etc/hostapd/hostapd.conf
y pega el siguiente contenido para crear y configurar esa red:
interface=wlan0 #driver=rtl871xdrv ssid=Onion Pi country_code=ES hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=pa22w0rd_extra_d1f1c1l wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP wpa_group_rekey=86400 ieee80211n=1 wme_enabled=1
Algunas observaciones. Como puedes ver hay una línea comentada que hace referencia a un driver. Este es el driver del adaptador WiFi. Con mi Orange Pi 2 no lo he necesitado, pero si usas un dongle u otra tarjeta, quizás lo necesites. El que he usado aquí, el rtl871xdrv es genérico, pon el tuyo en caso de necesitarlo. En ssid puedes poner lo que quieras, es el nombre de tu nueva red WiFi. En wpa_passphrase=pa22w0rd_extra_d1f1c1l pon la tuya propia. Guarda y sal. Para que se pueda ejecutar este archivo, tenemos que configurar lo siguiente. Ejecuta:
sudo nano /etc/default/hostapd
y encuentra la línea donde pone #DAEMON_CONF="" y cámbialo por:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Recuerda quitar el símbolo # porque necesitamos que esa línea se ejecute. Guarda y sal. Venga, que ya estamos acabando. Ejecuta:
sudo nano /etc/init.d/hostapd
y encuentra la línea DAEMON_CONF= para decirle que la configuración que tiene que usar es la que hemos creado en los pasos anteriores:
DAEMON_CONF=/etc/hostapd/hostapd.conf
Necesitamos configurar NAT para que, al arrancar, permita a uno o a varios clientes conectarse al WiFi y disponer de todos los datos a través de la IP única de Ethernet. Ejecuta:
sudo nano /etc/sysctl.conf
Y añade la siguiente línea al final del archivo:
net.ipv4.ip_forward=1
Ejecuta las siguientes líneas para ejecutarlo inmediatamente y que no sea necesario reiniciar y para crear la traducción de red entre el puerto Ethernet eth0 y el puerto wifi wlan0:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Si quieres ver las tablas usa:
sudo iptables -t nat -S sudo iptables -S
Te debe dar algo así:
root@orangepi2mini:~# sudo iptables -t nat -S -P PREROUTING ACCEPT -P INPUT ACCEPT -P OUTPUT ACCEPT -P POSTROUTING ACCEPT -A PREROUTING -i wlan0 -p tcp -m tcp --dport 22 -j REDIRECT --to-ports 22 -A PREROUTING -i wlan0 -p udp -m udp --dport 53 -j REDIRECT --to-ports 53 -A PREROUTING -i wlan0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040 -A POSTROUTING -o eth0 -j MASQUERADE root@orangepi2mini:~# sudo iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Para que toda la magia se arranque al iniciar con la herramienta iptables-persistent que instalamos al principio, ejecuta lo siguiente:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
Y ya por último, para ver que todo funciona correctamente:
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Esto ejecuta hostapd manualmente con nuestro archivo de configuración.
root@orangepi2mini:~# sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf Configuration file: /etc/hostapd/hostapd.conf Using interface wlan0 with hwaddr 58:63:56:cd:4c:23 and ssid "Onion Pi" wlan0: interface state UNINITIALIZED->ENABLED wlan0: AP-ENABLED
Una última advertencia. Tras ejecutar esta línea te quedarás sin PROMPT, es decir, este terminal quedará inutilizado, pero esto sólo te pasará esta vez, el siguiente arranque todo será automático. Lo digo por que la primera vez yo me quedé esperando una respuesta que nunca llegó... Ahora puedes comprobar con otro equipo wifi que ves tu SSID y puedes conectarte a ella (recuerda la que pusiste en el archivo /etc/hostapd/hostapd.conf. En el ejemplo se llama Onion Pi). Si es así, ¡¡has configurado correctamente el punto de acceso!!.
Tu punto de acceso ya funciona. Laborioso, pero fácil ¿verdad?. Espero que te haya sido de utilidad, no dudes en escribir un comentario si ves algún error o si puedo ayudarte.
Utiliza este espacio si quieres añadir algún comentario adicional o si tienes alguna duda.
No olvides añadir tu distribución y tu placa.
Todos los comentarios serán validados antes de su publicación.
Michi
Genial! Muy completo. Me ha funcionado "casi" a la primera. He tenido un problemilla con la orange pi zero (h2+). Primero, el ultimo armdebian (en este momento con el kernel 4.11) no soporta wifi. Asi que he instalado un 3.4. Aun asi he tenido que anadir estas lineas en el /etc/init.d/hostapd.conf
--- entre las lineas start) y log_daemon
start)
nmcli nm wifi off
rfkill unblock wlan
ifconfig wlan0 192.168.2.1/24 up
sleep 1
service isc-dhcp-server restart
log_daemon_msg "Starting $DESC" "$NAME"
El motivo, en https://askubuntu.com/questions/472794/hostapd-error-nl80211-could-not-configure-driver-mode
Y por ultimo, para que arrancara directamente al iniciar:
sudo update-rc.d hostapd enable
Muchas gracias por el curre!!!
Administrador OrangePiWeb.es
Hola Michi. Cada placa y distribución tienen sus propias características, y en tu caso, te has tenido que buscar la vida y lo has resuelto. Felicidades. Y muchas gracias por aportar la solución, que seguro a alguien le sirve también. Muchas gracias de nuevo.
Saul
hola hice todo al pie de la letra salvo en auto wlan0 que no me aparecio, intente conectar y se queda en: obteniendo direccion ip... que puedo hacer?
Administrador OrangePiWeb.es
Hola Saul. No se a que parte te refieres. Lo único que te puedo decir es que repases todo el código y busques algún error tipográfico. Saludos.
Administrador OrangePiWeb.es
Hola Manuel. Si has seguido todos los pasos y no me das más pistas no puedo ayudarte... Repasa todos los pasos y no dejes ninguno, asegúrate de que pones las passwords correctas y si te sale algún error mándalo. Saludos.
Jonas
Hola! Es posible poner algún Linux en Orange y que sea un servidor web WIFI? es decir que corra Apache + MySQL + PHP??
Intento poner la placa y conectarme con navegador desde un celular y ver la pagina php con un reporte obtenido de la base de datos que se va poblando con lecturas de sensores.
Administrador OrangePiWeb.es
Hola Jonas. Aquí te dejo dos proyectos para dos cosas distintas, porque no me queda claro lo que quieres, pero la respuesta es SI, se puede:
https://orangepiweb.es/servidor-web-orangepi.php
https://orangepiweb.es/wifi-access-point.php
Saludos
Deepu
Hello,
Working fine .. Problem is frequently lost internet connect ,even the client is connected to orangepi(local connection is fine). At the same time from orangepi to internet connection is stable. Is any issue with NAT? Please help to figure out
Administrador OrangePiWeb.es
Hi Deepu. I think the problem is more about linux configuration than of the board itself. I recommend you to look at the Linux logs and search errors or disconnections, to get an idea of where the problem is going on. Without more data I can not help you. Greetings
Copyright © 2024 desde 2016. Todos los derechos reservados | Diseño JaviPSantos