Cree un punto de acceso wifi con Raspberry Pi 3 y Fedora

Si ya estás corriendo Fedora en su Pi, ya ha recorrido la mayor parte del camino hacia un punto de acceso wifi. Una Raspberry Pi tiene una interfaz wifi que generalmente se configura para unirse a una red wifi existente. Esta interfaz se puede reconfigurar para proporcionar una nueva red wifi. Si una habitación tiene un buen cable de red y una mala señal wifi (una pared de ladrillos, una placa de yeso con respaldo de aluminio e incluso una ventana con un revestimiento de óxido de metal son todos obstáculos), arréglelo con su Pi.

Este artículo describe el procedimiento para configurar el punto de acceso. Se probó en Pis de tercera generación, un Modelo B v1.2 y un Modelo B+ (el mas viejo 2 y el nuevo 4 no fueron probados). Estos son los Pis del tamaño de una tarjeta de crédito que existen desde hace algunos años.

Este artículo también profundiza un poco en los conceptos de red detrás de escena. Por ejemplo, “punto de acceso” es el término popular en lugares públicos de todo el mundo, pero es más preciso usar el término WLAN AP (punto de acceso a la red de área local inalámbrica). De hecho, si desea molestar a su red vecina amigable administrador, llame a un punto de acceso “router wifi”. La inexactitud hará que sus ojos se crucen.

Unos pocos comandos nmcli configuran la Raspberry Pi como un punto de acceso wifi. La herramienta de línea de comandos nmcli controla el demonio NetworkManager. No es el único sistema de configuración de red disponible. Soluciones más complejas están disponibles para los aventureros. Revisar la hostapd Paquete RPM y el Distribución OpenWRT . Eche un vistazo a compartir la conexión a Internet con NetworkManager para obtener más ideas.

Una inmersión en la administración de redes

El punto de acceso es un AP (punto de acceso) enrutado. Se ubica entre dos redes, la red cableada actual y su nueva red inalámbrica, y se encarga del reenvío de paquetes IP al estilo de la oficina de correos entre ellas.

Enrutamiento e interfaces

La interfaz inalámbrica de la Raspberry Pi se llama wlan0 y el cableado es eth0 . La nueva red inalámbrica usa un rango de direcciones IP y la red cableada actual usa otro. En esto example, el rango de red actual es 192.168.0.0/24 y el rango de red nuevo es 10.42.0.0/24. Si estos números no tienen sentido, está bien. Puede continuar sin familiarizarse con las subredes IP y las máscaras de red. Las dos interfaces de Raspberry Pi tienen direcciones IP de estos rangos.

Los paquetes se envían a computadoras locales o destinos remotos según sus direcciones IP. Este es un trabajo de enrutamiento, y es de donde proviene la parte enrutada del nombre del AP enrutado. Si desea construir un enrutador más complejo con DHCP y DNS, siga algunos consejos del artículo Cómo usar Fedora Servidor para crear un enrutador/puerta de enlace.

No es un AP puenteado

El puente Netowrk es otra forma de extender una red, pero no es así como se configura este Pi. Este AP enrutado no es un AP con puente. Para comprender la diferencia entre el enrutamiento y el puente, debe saber un poco sobre las capas de red del modelo de red OSI. Un buen lugar para comenzar es el guía para principiantes sobre resolución de problemas de red en Linux . Aquí está la respuesta corta.

  • capa 3, red ← Sí, nuestro AP enrutado está aquí.
  • capa 2, enlace de datos ← No, no es un AP puenteado.
  • capa 1, física ← La transmisión de radio se trata aquí.

A puente funciona en una capa inferior de la pila de red: utiliza direcciones MAC de ethernet para enviar datos. Si se tratara de un punto de acceso con puente, no tendría dos conjuntos de direcciones IP; la nueva red inalámbrica y la red cableada actual utilizarían la misma subred IP.

Enmascaramiento de IP

No encontrará una dirección IP que comience con 10. en ningún lugar de Internet. Es una dirección privada, no una dirección pública. Para enrutar un paquete IP fuera de la red wifi y volver a ingresar, se deben cambiar las direcciones de los paquetes. Enmascaramiento de IP es una forma de hacer que este enrutamiento funcione. El nombre de enmascaramiento se usa porque las direcciones reales de los paquetes están ocultas. la red cableada no ve ninguna dirección de la red inalámbrica.

NetworkManager configura automáticamente el enmascaramiento de IP. NetworkManager agrega reglas nftables para manejar Enmascaramiento de IP .

La pila de red de Pi

Una pila de hardware y software de red hace que wifi funcione.

  • equipo de red
  • Software de espacio del kernel
  • software de espacio de usuario

Puede ver el hardware de la red. El Raspberry Pi tiene dos componentes principales de hardware: una pequeña antena y un chip wifi Broadcom. La revista MagPi tiene algunas fotos geniales .

El software del núcleo proporciona la plomería. No hay necesidad de trabajar en estos directamente, todo está bien para ir en el Fedora distribución.

El software de espacio de usuario personaliza el sistema. Está lleno de utilidades que ayudan al usuario, hablan con el kernel o conectan otras utilidades. por ejemplo, el cortafuegos-cmd herramienta habla con el servicio de cortafuegos firewalld habla con el nftables herramienta, y nftables se comunica con el marco netfilter en el kernel. los nmcli comandos hablar con Gerente de Redes . Y NetworkManager habla de casi todo.

Crear el AP

Eso es suficiente teoría, pongámonos prácticos. Enciende tu Raspberry Pi en ejecución Fedora y ejecuta estos comandos.

Instalar software

Casi todo el software necesario se incluye con el Fedora Imagen mínima. Lo único que falta es el paquete dnsmasq. Esto maneja la parte de la dirección IP y DHCP de la nueva red wifi, automáticamente. Ejecute este comando usando sudo:

                      $ sudo dnf install dnsmasq
                    

Crear una nueva conexión NetworkManager

NetworkManager configura una conexión de red automáticamente, conexión por cable 1. Utilice la herramienta nmcli para indicarle a NetworkManager cómo agregar una conexión wifi. NetworkManager guarda estas configuraciones, y muchas más, en un nuevo archivo de configuración.

El nuevo archivo de configuración se crea en el directorio /etc/sysconfig/network-scripts/. Al principio, está vacío; la imagen no tiene archivos de configuración para las interfaces de red. Si desea obtener más información sobre cómo NetworkManager utiliza el directorio de scripts de red, los detalles sangrientos se encuentran en el página del manual nm-settings-ifcfg-rh .

                      [[email protected] ~]$ ls /etc/sysconfig/network-scripts/
[[email protected] ~]$
                    

El primer comando nmcli, para crear una conexión de red, se ve así. Hay más por hacer: el Pi no funcionará como un punto de acceso después de ejecutar esto.

                      nmcli con add 
  type wifi 
  ifname wlan0 
  con-name 'raspi hotspot' 
  autoconnect yes 
  ssid 'raspi wifi'
                    

Los siguientes comandos completan varios pasos más:

  • Cree una nueva conexión.
  • Enumere las conexiones.
  • Eche otro vistazo a la carpeta de scripts de red. NetworkManager agregó un archivo de configuración.
  • Enumere los AP disponibles para conectarse.

Esto requiere ejecutar varios comandos como root usando sudo:

                      $ 
                      
                        sudo nmcli con add type wifi ifname wlan0 con-name 'raspi hotspot' autoconnect yes ssid 'raspi wifi'
                      
                      
Connection 'raspi wifi' (13ea67a7-a8e6-480c-8a46-3171d9f96554) successfully added.
$ 
                      
                        sudo nmcli connection show
                      
                      
NAME UUID TYPE DEVICE
Wired connection 1 59b7f1b5-04e1-3ad8-bde8-386a97e5195d ethernet eth0
raspi wifi 13ea67a7-a8e6-480c-8a46-3171d9f96554 wifi wlan0
$ 
                      
                        ls /etc/sysconfig/network-scripts/
                      
                      
ifcfg-raspi_wifi
$ 
                      
                        sudo nmcli device wifi list
                      
                      
IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY
       01:0B:03:04:C6:50 APrivateAP Infra 6 195 Mbit/s 52 ▂▄__ WPA2
       02:B3:54:05:C8:51 SomePublicAP Infra 6 195 Mbit/s 52 ▂▄__ --
                    

Puede eliminar la nueva configuración y comenzar de nuevo con este comando:

                      $ sudo nmcli con delete 'raspi hotspot'
                    

Cambiar el modo de conexión

Una conexión NetworkManager tiene muchas opciones de configuración. Puede verlos con el comando nmcli con show ‘raspi hotspot’. Algunas de estas configuraciones comienzan con la etiqueta 802-11-wireless. Esto tiene que ver con los estándares de la industria que hacen que wifi funcione: la organización IEEE especificó muchos protocolos para wifi, llamados 802.11 . Esta nueva conexión wifi está en modo infraestructura, lista para conectarse a un punto de acceso wifi. No se supone que Pi se conecte a otro AP; se supone que es el AP al que se conectan otros.

Este comando cambia el modo de infraestructura a AP. También establece algunos otros propiedades inalámbricas . los bg El valor le dice a NetworkManager que siga dos estándares IEEE antiguos: 802.11b y 802.11g . Básicamente, configura la radio para usar la banda de frecuencia de 2,4 GHz, no la banda de 5 GHz. ipv4.método compartido significa que esta conexión se compartirá con otros.

  • Cambie la conexión a un punto de acceso cambiando el modo a ap.
                      sudo nmcli connection 
  modify "raspi hotspot" 
  802-11-wireless.mode ap 
  802-11-wireless.band bg 
  ipv4.method shared
                    

La conexión se inicia automáticamente. La aplicación dnsmasq le da a la interfaz wlan0 una dirección IP de 10.42.0.1. Los comandos manuales para iniciar y detener el punto de acceso son:

                      $ sudo nmcli con up "raspi hotspot"
$ sudo nmcli con down "raspi hotspot"
                    

conectar un dispositivo

Los siguientes pasos son:

  • Mira el registro.
  • Conecte un teléfono inteligente.
  • Cuando hayas visto suficiente, escribe ^C ([control][c]) para dejar de ver el registro.
                      $ 
                      
                        journalctl --follow
                      
                      
-- Logs begin at Wed 2020-04-01 18:23:45 BST. --
...
                    

Use un dispositivo habilitado para wifi, como su teléfono. El teléfono puede encontrar la nueva red wifi raspi.

Los mensajes sobre un cliente asociado aparecen en el registro de actividad:

                      Jun 10 18:08:05 raspi wpa_supplicant[662]: wlan0: AP-STA-CONNECTED 94:b0:1f:2e:d2:bd
Jun 10 18:08:05 raspi wpa_supplicant[662]: wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
Jun 10 18:08:05 raspi dnsmasq-dhcp[713]: DHCPREQUEST(wlan0) 10.42.0.125 94:b0:1f:2e:d2:bd
Jun 10 18:08:05 raspi dnsmasq-dhcp[713]: DHCPACK(wlan0) 10.42.0.125 94:b0:1f:2e:d2:bd nick
                    

Examina el cortafuegos

Ha aparecido una nueva zona de seguridad denominada nm-shared. Esto está deteniendo algunos accesos wifi.

                      $ 
                      
                        sudo firewall-cmd --get-active-zones
                      
                      
[sudo] password for nick:
nm-shared
  interfaces: wlan0
public
  interfaces: eth0
                    

La nueva zona está configurada para aceptar todo porque el objetivo es ACEPTAR. Los clientes pueden utilizar la web, el correo y SSH para acceder a Internet.

                      $ 
                      
                        sudo firewall-cmd --zone=nm-shared --list-all
                      
                      
nm-shared (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: wlan0
  sources: 
  services: dhcp dns ssh
  ports: 
  protocols: icmp ipv6-icmp
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	    rule priority="32767" reject
                    

Esta gran lista de ajustes de configuración requiere un pequeño examen.

La primera línea, el destino de la opción inocente hasta que se demuestre la culpabilidad: ACCEPT dice que se permite el paso de todo el tráfico, a menos que una regla diga lo contrario. Es lo mismo que decir que todos estos tipos de tráfico están bien.

  • paquetes entrantes: solicitudes enviadas desde clientes wifi a Raspberry Pi
  • paquetes reenviados: solicitudes de clientes wifi a Internet
  • paquetes salientes: solicitudes enviadas por el PI a clientes wifi

Sin embargo, hay un problema oculto: las solicitudes de clientes wifi (como su estación de trabajo) a Raspberry Pi pueden ser rechazadas. La línea final, la regla misteriosa en la sección de reglas enriquecidas, se refiere a la base de datos de políticas de enrutamiento . La regla le impide conectarse desde su estación de trabajo a su Pi con un comando como este: ssh 10.42.0.1. Esta regla solo afecta el tráfico enviado a Raspberry Pi, no el tráfico enviado a Internet, por lo que la navegación web funciona bien.

Si un paquete entrante coincide con algo en las listas de servicios y protocolos, se permite su paso. NetworkManager agrega automáticamente ICMP, DHCP y DNS (protocolos y servicios de infraestructura de Internet). Un paquete SSH no coincide, llega tan lejos como el Postprocesamiento etapa, y es rechazada —priority=”32767″ se traduce como “hacer esto después de que todo el procesamiento haya terminado”.

Si desea saber qué sucede detrás de escena, esa regla enriquecida crea una regla nftables. La regla de nftables se ve así.

                      $ 
                      
                        sudo nft list chain inet firewalld filter_IN_nm-shared_post
                      
                      
table inet firewalld {
  chain filter_IN_nm-shared_post {
    reject
  }
}
                    

Arreglar inicio de sesión SSH

Conéctese desde su estación de trabajo a Raspberry Pi usando SSH. Esto no funcionará debido a la regla enriquecida. Un protocolo que no está en la lista se rechaza instantáneamente.

Compruebe que SSH está bloqueado:

                      $ 
                      
                        ssh 10.42.0.1
                      
                      
ssh: connect to host 10.42.0.1 port 22: Connection refused
                    

A continuación, agregue SSH a la lista de servicios permitidos. Si no recuerda qué servicios están definidos, enumérelos todos con firewall-cmd ‐‐get-services. Para SSH, use la opción ‐‐add-service ssh o ‐‐remove-service ssh. No olvides hacer que el cambio sea permanente.

                      $ 
                      
                        sudo firewall-cmd --add-service ssh --permanent --zone=nm-shared
                      
                      
success
                    

Ahora prueba con SSH de nuevo.

                      $ 
                      
                        ssh 10.42.0.1
                      
                      
The authenticity of host '10.42.0.1 (10.42.0.1)' can't be established.
ECDSA key fingerprint is SHA256:dDdgJpDSMNKR5h0cnpiegyFGAwGD24Dgjg82/NUC3Bc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 
                      
                        yes
                      
                      
Warning: Permanently added '10.42.0.1' (ECDSA) to the list of known hosts.
Last login: Tue Jun 9 18:58:36 2020 from 10.0.1.35
[email protected]'s password:
                    

El acceso SSH ya no está bloqueado.

Prueba como una computadora sin cabeza

El raspberry pi funciona bien como un computadora sin cabeza . De ahora en adelante, puede usar SSH para trabajar en su Pi.

  • Apagado.
  • Retire el teclado y el monitor de video.
  • Encendido.
  • Espera un par de minutos.
  • Conéctese desde su estación de trabajo a la Raspberry Pi usando SSH. Utilice la interfaz con cable o la inalámbrica; ambos trabajan.

Aumente la seguridad con WPA-PSK

El sistema WPA-PSK (WiFi Protected Access with Pre-Shared Key) está diseñado para usuarios domésticos y pequeñas oficinas. Está protegido por contraseña. Use nmcli nuevamente para agregar WPA-PSK:

                      $ sudo nmcli con modify "raspi hotspot" wifi-sec.key-mgmt wpa-psk
$ sudo nmcli con modify "raspi hotspot" wifi-sec.psk "hotspot-password"
                    

Solución de problemas

Aquí hay un par de recomendaciones:

La mala noticia es que aquí no hay consejos para solucionar problemas. Hay tantas cosas que pueden salir mal, que no hay forma de cubrirlas.

La solución de problemas de una pila de red es complicada. Si un componente falla, todo puede fallar. Y hacer cambios como recargar las reglas del firewall puede alterar servicios como NetworkManager y sshd. Sabes que estás en la maleza cuando te encuentras corriendo comandos nftables como el conjunto de reglas de la lista nft y comandos de cortafuegos como firewall-cmd ‐‐set-log-denied=all.

Juega con tu nueva plataforma

Agregue valor a su nuevo AP. Dado que está ejecutando un Pi, hay muchos complementos de hardware. Ya que está funcionando Fedora, tienes miles de paquetes disponibles. Intente convertirlo en un mini-NAS, agregue una batería de respaldo o quizás un reproductor de música.

Foto por Uriel SC en Unsplash .

Related Posts