━━━ Configuración de un punto de acceso ━━━
Estamos hablando de un punto de acceso junto con un puerto ethernet eth0 .
Si desea un punto de acceso junto con una conexión de cliente wlan0 a otra red wifi (repetidor wlan), mire el punto de acceso como enrutador / repetidor WiFi, opcional con puente .
Es posible configurar Raspbian Stretch como un punto de acceso wifi sin instalar software adicional. Todos los componentes necesarios están disponibles: las redes, el servidor DHCP y el puente vienen con systemd-networkd y wifi se puede configurar con wpa_supplicant . La conexión de dos interfaces eth0 y wlan0 se puede realizar mediante enrutamiento o puente. A continuación, primero la configuración para una instalación rápida y luego los detalles. Primero tenemos que cambiar a systemd-networkd .
Probado con
Raspbian Buster Lite 2019-09-26 en un Raspberry Pi 4B actualizado en 2020-01-18.
Actualizaciones realizadas con sudo apt update && sudo apt full-upgrade && sudo reboot
.
Aquí puede encontrar la última revisión probada para versiones anteriores de Raspbian .
♦ Configuración general
Cambiar a systemd-networkd
Para obtener información detallada, consulte (1) y Cómo configurar la resolución de nombres con systemd-networkd . Aquí solo en resumen. Ejecute estos comandos:
# deinstall classic networking
rpi ~$ sudo -Es
rpi ~# apt --autoremove purge ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common
rpi ~# rm -r /etc/network /etc/dhcp
# enable systemd-networkd
rpi ~# systemctl enable systemd-networkd.service
# setup systemd-resolved
rpi ~# systemctl enable systemd-resolved.service
rpi ~# apt --autoremove purge avahi-daemon
rpi ~# apt install libnss-resolve
rpi ~# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Configure wpa_supplicant como punto de acceso
Para configurar wpa_supplicant como punto de acceso crear este archivo con la configuración de country=
, ssid=
, psk=
y tal vez frequency=
. Simplemente puede copiar y pegar esto en un bloque en su línea de comando comenzando con cat
e incluyendo ambos EOF (el delimitador EOF no obtendrá parte del archivo):
rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="RPiNet"
mode=2
frequency=2437
#key_mgmt=NONE # uncomment this for an open hotspot
# delete next 3 lines if key_mgmt=NONE
key_mgmt=WPA-PSK
proto=RSN WPA
psk="password"
}
EOF
rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant.service
rpi ~# systemctl enable [email protected]
Configuración general terminada. Regresa.
♦ Configuración de un punto de acceso independiente
Ejemplo para esta configuración:
wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
\ /
(dhcp) 192.168.4.1
Realice la "Configuración general" y luego cree el siguiente archivo para configurar wlan0 . Solo tenemos el punto de acceso. No hay un dispositivo ethernet configurado.
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
EOF
Si quieres esto, reinicia.
Eso es.
De lo contrario, no es necesario reiniciar en este momento.
♦ Configurar un punto de acceso y con eth0, sin enrutamiento
Ejemplo para esta configuración:
|
wifi | wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / | \ /
(dhcp) 192.168.4.1 | (dhcp) 192.168.50.1
Preparar
Haga "Configuración de un punto de acceso independiente" y luego cree el siguiente archivo para configurar eth0 .
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
EOF
Reiniciar.
Eso es.
Detalles
La interfaz eth0 está conectada con un cable de ethernet al enrutador de internet y DHCP la configura desde el enrutador de internet. No es problema darle una dirección IP estática con, por ejemplo, en Address=192.168.50.2
lugar de DHCP=yes
.
Sin enrutamiento no puede entrar a Internet con el teléfono móvil. Solo puedes acceder desde el RPi para obtener actualizaciones o algo así.
♦ Configuración de un punto de acceso y con eth0, con NAT (recomendado)
Ejemplo para esta configuración:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \
(dhcp) 192.168.4.1 (dhcp)
Preparar
Realice la "Configuración general" y luego cree los siguientes archivos para configurar wlan0 y eth0 . Si ha probado una de las configuraciones anteriores, puede sobrescribir los dos archivos. Asegúrese de utilizar una subred diferente para el punto de acceso que la del enrutador. El enrutador en este ejemplo no usa la subred 192.168.4.0/24. Si necesita otra subred, simplemente cambie la línea de Dirección, por ejemplo Address=192.168.5.1/24
.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
# IPMasquerade is doing NAT
IPMasquerade=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
IPForward=yes
EOF
Reiniciar.
Eso es.
Detalles
Si no tiene acceso al enrutador de Internet, puede simularlo con NAT (traducción de direcciones de red) para decirle una mentira que todos los paquetes provienen de su RasPi AP. Pero esto no es un enrutamiento limpio y tiene limitaciones. Los clientes en la subred del enrutador no pueden conectarse a clientes en el wifi. Pero en la mayoría de los casos esto no es necesario, por lo que se recomienda esta configuración porque simplifica la configuración. Si necesita conectarse a los clientes wifi desde la red del enrutador, debe usar el enrutamiento completo como se describe en la siguiente sección.
♦ Configuración de un punto de acceso y con eth0, con enrutamiento
Ejemplo para esta configuración:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \ /
(dhcp) 192.168.4.1 192.168.50.2 192.168.50.1
Preparar
Haga "Configuración general" y luego cree los siguientes archivos para configurar wlan0 y eth0 . Si ha probado una de las configuraciones anteriores, puede sobrescribir los dos archivos. Asegúrese de utilizar diferentes subredes para el punto de acceso y la red del enrutador. Tenemos que usar direcciones IP estáticas porque debemos usarlas como puertas de enlace.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.2/24
Gateway=192.168.50.1
DNS=84.200.69.80 1.1.1.1
IPForward=yes
EOF
Reiniciar.
Para completar el enrutamiento, debe establecer una ruta estática en su enrutador de Internet para que pueda encontrar la ruta para los paquetes que regresan a través de RasPi a los clientes conectados por wifi al punto de acceso. En la mayoría de los enrutadores de Internet, puede establecer una ruta estática, pero la forma de hacerlo varía de un modelo a otro. Depende de usted descubrirlo. Por ejemplo tu RasPi interfaz eth0 tiene la dirección IP estática 192.168.50.2. Luego, en su enrutador, la puerta de enlace (siguiente salto) es 192.168.50.2, la red de destino es 192.168.4.0/24 (o 192.168.4.0 máscara de red 255.255.255.0).
Eso significa para el enrutador de Internet: "enviar todos los paquetes que pertenecen a la subred 192.168.4.0/24
(red de destino desde AP) al siguiente enrutador de mi subred, el RasPi AP 192.168.50.2
(puerta de enlace). Sabe a dónde ir".
Eso es.
♦ Configurar un punto de acceso con un puente
Ejemplo para esta configuración:
RPi
wifi ┌──────bridge──────┐ wired wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
\ | / DHCP-server
(dhcp (dhcp 192.168.50.1
from router) from router)
Si ya tiene una red Ethernet con un servidor DHCP y un enrutador de Internet y desea expandirla con un punto de acceso wifi pero con las mismas direcciones IP, entonces use un puente. Esto a menudo se usa como un enlace ascendente a un enrutador.
Preparar
Realice la "Configuración general" y luego cree los siguientes tres archivos para configurar las interfaces de red. Si ha probado una de las configuraciones anteriores, puede eliminar todos los archivos /etc/systemd/network/
excepto 99-default.link
si están presentes. Las direcciones IP son ejemplos. Tienes que usar el tuyo.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/02-br0.netdev <<EOF
[NetDev]
Name=br0
Kind=bridge
EOF
rpi ~# cat > /etc/systemd/network/04-br0_add-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Bridge=br0
EOF
rpi ~# cat > /etc/systemd/network/12-br0_up.network <<EOF
[Match]
Name=br0
[Network]
MulticastDNS=yes
DHCP=yes
# to use static IP uncomment these and comment DHCP=yes
#Address=192.168.50.60/24
#Gateway=192.168.50.1
#DNS=84.200.69.80 1.1.1.1
EOF
Ahora tenemos que decirle a wpa_supplicant que use un puente. Lo hacemos modificando su servicio con:
rpi ~# systemctl edit [email protected]
En el editor vacío, inserte estas declaraciones, guárdelas y salga del editor:
[Service]
ExecStartPre=/sbin/iw dev %i set type __ap
ExecStartPre=/bin/ip link set %i master br0
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0
ExecStopPost=-/bin/ip link set %i nomaster
ExecStopPost=-/sbin/iw dev %i set type managed
Reiniciar.
Eso es.
Detalles
Tenemos que decirle a wpa_supplicant que su interfaz wlan0 es esclava de un puente. De lo contrario, rechazará que el cliente se conecte con una "contraseña incorrecta", lo que significa que la negociación de claves no funciona. Cuando le decimos a / sbin / wpa_supplicant con la opción -dbr0
de usar un puente para wlan0 , la interfaz ya debe ser miembro del puente. Eso es lo que hacemos con la caída del archivo (superposición) para el servicio wpa_supplicant . La declaración vacía ExecStart=
elimina la entrada anterior. De lo contrario, tiene dos líneas ExecStart=
y wpa_supplicant se iniciará dos veces. El original con el ExecStart=
que puedes ver systemctl cat [email protected]
.
Normalmente, el enrutador al que está conectado con el cable de Ethernet tiene un servidor DHCP habilitado. El puente también es transparente para las solicitudes DHCP de las estaciones (dispositivos conectados al punto de acceso) para que no tenga que preocuparse por la configuración de sus interfaces con direcciones IP y opciones. El enrutador lo servirá.
excursus:
Pero si el enrutador no tiene un servidor DHCP, puede configurar uno en el RasPi. systemd-networkd tiene opciones para configurar su servidor DHCP incorporado, pero el problema es que systemd-networkd supone que se está ejecutando en el enrutador y eso no es cierto en este caso. Servirá opciones incorrectas a las estaciones, en particular la opción de enrutador . No hay forma de configurarlo. Entonces tenemos que instalardnsmasq
en este caso, se puede configurar según sea necesario. Instálelo y configúrelo con (por ejemplo, use sus propias direcciones IP):
rpi ~$ sudo -Es
rpi ~# apt install dnsmasq
rpi ~# systemctl stop dnsmasq
rpi ~# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
rpi ~# cat > /etc/dnsmasq.conf <<EOF
interface=br0
dhcp-range=192.168.50.128,192.168.50.164,255.255.255.0,24h
dhcp-option=option:router,192.168.50.1
dhcp-option=option:dns-server,8.8.8.8,1.1.1.1
EOF
rpi ~# systemctl start dnsmasq
rpi ~# exit
rpi ~$
En este ejemplo, se encuentran las direcciones IP 192.168.50.128 a 192.168.50.164 reservadas para dar a las estaciones. Para otras direcciones IP estáticas, use una fuera de este grupo, también la dirección IP para el puente.
♦ Optimizando
Al iniciar wpa_supplicant , generalmente recibe estos mensajes en el diario:
wpa_supplicant[427]: random: Cannot read from /dev/random: Resource temporarily unavailable
wpa_supplicant[427]: random: Only 12/20 bytes of strong random data available from /dev/random
wpa_supplicant[427]: random: Not enough entropy pool available for secure operations
wpa_supplicant[427]: WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
No es un gran problema. wpa_supplicant necesita números aleatorios para generar claves de cifrado. Esto se hace un poco lento, por lo que tiene que esperar. Afortunadamente, el RasPi tiene una construcción en T rue R andom N umber G enerator (TRNG). Podemos usarlo y acelerar la obtención de números aleatorios instalando un software (3) con:
rpi ~$ sudo apt install rng-tools
Actualización:
desde Raspbian Stretch 2019-04-08 no hay necesidad de instalar rng-tools
. Se instalan por defecto.
♦ Solución de problemas
systemd-networkd
Mire el estado de un servicio:
rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status [email protected]
O incluso un poco más:
rpi ~$ journalctl --boot --pager-end
Me pareció útil seguir el registro continuo:
rpi ~$ journalctl --boot --follow
Si ha realizado una caída en el archivo, puede ver el resultado:
rpi ~$ systemctl cat [email protected]
Para verificar el entorno de tiempo de ejecución de una unidad, puede mostrarlo y, por ejemplo, ver si hay dos ExecStart=
líneas:
rpi ~$ systemctl show [email protected]
Y si no hay nada que otros ayudan puede activar la opción de depuración de /sbin/wpa_supplicant
con -d
un descenso de archivo:
rpi ~$ sudo systemctl edit [email protected]
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d
La salida está en el diario. De esta manera, he encontrado el problema con la negociación de claves incorrecta.
Wifi
Si ha configurado el punto de acceso, debe encontrarlo con un teléfono móvil. Mostrando las redes disponibles, se presenta con el nombre RPiNet y puede conectarse a él. En RasPi también puedes usar el comando:
rpi ~$ sudo iw dev wlan0 info
phy#0
Interface wlan0
ifindex 3
wdev 0x2
addr b8:27:eb:06:e8:8b
ssid RPiNet
type AP
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
Como puede ver, es de tipo AP (punto de acceso) y también le mostrará qué canal está utilizando. Un problema puede ser traducir un canal a frecuencia. La frecuencia debe coincidir con un canal. Puede mirar (2) para obtener una lista de canales WLAN. Por ejemplo, para el uso del canal 36 en la banda de 5,1 GHz tiene que establecer frequency=5180
en /etc/wpa_supplicant\wpa_supplicant.conf
. Pero debe estar seguro de que su wifi es compatible con la banda de 5.1 GHz. Puedes consultar consudo iw phy
. Esto te dará mucha información. También debe contener frecuencias compatibles por encima de 5000 MHz. Si solo ve frecuencias de 24xx MHz, por supuesto, solo puede usar esto.
Otro punto podría ser números aleatorios. Para cifrar claves para conexiones seguras, wpa_supplicant necesita números aleatorios. Generar esto es muy lento en una Raspberry Pi. Si no tiene suficiente entropía para generar claves de cifrado, wpa_supplicant rechazará la autenticación. Puedes ver con cat /proc/sys/kernel/random/entropy_avail
cuánta entropía hay disponible. Debe ser> 1000 para trabajar lo suficientemente rápido. Para acelerar esto, rng-tools
se instalan por defecto. Mire la sección Optimización para más información.
referencias:
[1] Cómo migrar de la red a systemd-networkd con conmutación por error dinámica
[2] Lista de canales WLAN
[3] Rng-tools
ls /var/log/journal/
. Verá un directorio que se ve asífa9462093e8d419cb646d0a0c44771c2
. Este es el almacenamiento para el diario al que accedejournalctl
. Actualizaré mi respuesta.proto=WPA2
en la configuración AP. Mi teléfono, al menos, se queja de "seguridad débil" sin él.proto=RSN
. Eso es lo que prefiere el docu (nombrarproto=WPA2
un alias).Una forma aún MÁS FÁCIL de configurar una Raspberry Pi como AP es usar el repositorio pi-ap Github que automatiza la configuración de un Pi 3B + / 4 en un AP.
Conecte el Pi a un puerto libre en su enrutador conectado a Internet que tenga habilitado DHCP (probablemente el caso en la mayoría de los enrutadores de consumo).
Una vez conectado, SSH en Pi en la IP asignada
eth0
por DHCP asignada por el enrutador y luego:Beba té y después de esperar unos 2 minutos, el SSID que configuró
variables.sh
aparecerá en su lista de redes inalámbricas. Conéctese a la WLAN de Pi que se anuncia.Para SSH directamente al AP en la
wlan0
interfaz de Pi , use la IP predeterminada de192.168.0.1
TENGA EN CUENTA : la subred DHCP predeterminada que utiliza pi-ap para asignar IP de clientes WiFi
variables.sh
es192.168.0.0/28
. Si ya está utilizando esa subred en su red, configure una subred diferentevariables.sh
para los clientes WiFi ANTES de ejecutarinstall.sh
.No se requiere una calculadora de subred o incluso habilidades serias de redes para lograr buenos resultados. pi-ap incluso admite restricciones de acceso a través de ACL de MAC.
DIVULGACIÓN : Soy el desarrollador de pi-ap .
fuente
━━━ Verifique la instalación paso a paso con los puntos de control ━━━
Esta respuesta no está pensada para la configuración. Para una configuración estable, mira la otra respuesta Configuración de un punto de acceso .
Esta respuesta es principalmente para la resolución de problemas y para mostrar cómo funciona con comandos detallados paso a paso y puntos de control, pero sin información de fondo. Supongo que tiene un monitor, teclado y mouse conectados a su Raspberry Pi. Las direcciones IP y otras configuraciones en esta revisión son ejemplos. Tienes que usar el tuyo. Siempre puede buscar
journalctl -b -e
información registrada.Download ZIP
imagen Raspbian Stretch Lite 2018-11-13 a tu PC con Linux.Punto de verificación 1: Compare la suma de verificación con la del sitio de descarga.
47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d 2018-11-13-raspbian-stretch-lite.zip
Siguiente paso: Grabar la imagen en una tarjeta SD adjunta:
Punto de verificación 2: verifique las particiones en la tarjeta SD:
Siguiente paso: monte la partición de arranque y cree un
wpa_supplicant.conf
archivo:Coloque la tarjeta SD en su RasPi y arranque.
Punto de verificación 3: Después de iniciar sesión, verifique la conexión por cable. La interfaz eth0 debe tener una dirección IP:
Esto debería funcionar fuera de la caja. Si no funciona, entonces tiene un problema general con la configuración de su red. Por favor, corríjalo antes de continuar.
Punto de verificación 4: Verifique el punto de acceso:
La interfaz wlan0 debe tener una dirección IP. Como no hemos configurado la interfaz, tendrá una dirección de enlace local de 169.254.0.0/16.
Verá RPiNet en la lista de puntos de acceso en su teléfono móvil, pero aún no puede conectarse a él.
Siguiente paso: actualización completa y reinicio:
Después de reiniciar e iniciar sesión, cambie a systemd-networkd :
(*) Obtendrá una o dos advertencias confusas "... No se puede establecer el atributo del archivo ..." Esto no son errores y no importa en este caso.
Cree estos archivos para las interfaces eth0 y wlan0 con su configuración:
Cambie el nombre de /etc/wpa_supplicant/wpa_supplicant.conf para que coincida con la configuración de la interfaz y reinicie:
Punto de verificación 5: Después de reiniciar e iniciar sesión, verifique la conexión por cable eth0 :
Punto de verificación 6: Verifique la conexión wifi wlan0 :
Verifique el wifi en su teléfono móvil. Debes encontrar
RPiNet
y conectarte a él. Su teléfono móvil no puede ingresar a Internet porque el enrutamiento aún no está configurado.Siguiente paso: habilitar NAT para la conexión a internet. Para configurar NAT, debe extender el servicio wpa_supplicant con:
En el editor vacío, inserte estas declaraciones, guárdelas y salga del editor:
Entonces hazlo:
Punto de control 7: ahora debería poder conectarse a Internet con el teléfono móvil.
fuente