Configurar una Raspberry Pi como punto de acceso: la manera fácil

16

Sé cómo hacerlo de la manera clásica, como se describe, por ejemplo, en la documentación oficial en Configuración de una Raspberry Pi como punto de acceso en una red independiente (NAT) . Pero eso necesita muchos componentes diferentes que deben jugar juntos y cada componente debe configurarse a su manera. Estas son redes (ifupdown) , dhcpcd , hostapd , dnsmasq y bridge-utils .

Hoy en día Raspbian Stretch tiene todos los componentes necesarios integrados, por lo que no es necesario instalar software adicional. Esto podría simplificar mucho la configuración.

¿Es posible configurar Raspbian para que funcione como un punto de acceso wifi sin instalar software adicional?

Ingo
fuente

Respuestas:

26

━━━ 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 cate 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.2lugar 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.linksi 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 -dbr0de 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 instalardnsmasqen 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_supplicantcon -dun 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=5180en /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_availcuánta entropía hay disponible. Debe ser> 1000 para trabajar lo suficientemente rápido. Para acelerar esto, rng-toolsse 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

Ingo
fuente
rpi ~ # systemd-tmpfiles --create --prefix / var / log / journalroot FALLA con este mensaje de salida @pi: ~ # systemd-tmpfiles --create --prefix / var / log / journal No se puede establecer el atributo de archivo para '/ var / log / journal ', valor = 0x00800000, mask = 0x00800000: Operación no admitida implementado. No es un buen comienzo para implementar el procedimiento.
Jan Hus
1
Hola @ JanHus Gracias por tus comentarios. Esto es solo una advertencia, no un error y no importa. También lo entiendo cada vez. Se crea el diario persistente. Mirar con ls /var/log/journal/. Verá un directorio que se ve así fa9462093e8d419cb646d0a0c44771c2. Este es el almacenamiento para el diario al que accede journalctl. Actualizaré mi respuesta.
Ingo
Sí, verifiqué si se creó el archivo. Pero me desvié y me detuve. Continuaré hoy. Hasta ahora, este es uno de los mejores "tutoriales" sobre el tema. Gracias por publicarlo. PS lo llama persistente ¿OK? Poco confuso cuando se crea usando el proceso temporal.
Jan Hus
2
@Ingo Creo que se recomienda usar proto=WPA2en la configuración AP. Mi teléfono, al menos, se queja de "seguridad débil" sin él.
Robin Dinse
2
@RobinDinse Tienes razón, por supuesto. Lo he supervisado. Gracias por la pista. He añadido proto=RSN. Eso es lo que prefiere el docu (nombrar proto=WPA2un alias).
Ingo
3

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 eth0por DHCP asignada por el enrutador y luego:

git clone https://github.com/f1linux/pi-ap

cd pi-ap

nano variables.sh   # Change default values for SSID & password

sudo ./install.sh

Beba té y después de esperar unos 2 minutos, el SSID que configuró variables.shaparecerá en su lista de redes inalámbricas. Conéctese a la WLAN de Pi que se anuncia.

Para SSH directamente al AP en la wlan0interfaz 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.shes 192.168.0.0/28. Si ya está utilizando esa subred en su red, configure una subred diferente variables.shpara los clientes WiFi ANTES de ejecutar install.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 .

F1Linux
fuente
0

━━━ 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 -einformación registrada.

Download ZIPimagen 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.

pc ~$ sha256sum 2018-11-13-raspbian-stretch-lite.zip

47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d 2018-11-13-raspbian-stretch-lite.zip

Siguiente paso: Grabar la imagen en una tarjeta SD adjunta:

pc ~$ unzip -p 2018-11-13-raspbian-stretch-lite.zip | sudo dd of=/dev/sdb bs=4M conv=fsync

Punto de verificación 2: verifique las particiones en la tarjeta SD:

pc ~$ sudo parted /dev/sdb print
Model: Mass Storage Device (scsi)
Disk /dev/sdb: 3965MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  50,2MB  46,0MB  primary  fat32        lba
 2      50,3MB  1866MB  1816MB  primary  ext4

Siguiente paso: monte la partición de arranque y cree un wpa_supplicant.confarchivo:

pc ~$ mkdir boot/
pc ~$ sudo mount /dev/sdb1 boot/
pc ~$ sudo -e boot/wpa_supplicant.conf

# insert this into the empty editor with your settings, save it and quit the editor
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="RPiNet"
    mode=2
    key_mgmt=WPA-PSK
    psk="password"
    frequency=2412
}

pc ~$ sudo umount boot/

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:

rpi ~$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.50.177/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever

rpi ~$ ping -I eth0 -c3 google.com
PING google.com (172.217.22.78) from 192.168.50.177 eth0: 56(84) bytes of data.
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=1 ttl=55 time=15.0 ms
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=2 ttl=55 time=14.7 ms
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=3 ttl=55 time=15.1 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.729/14.965/15.125/0.170 ms

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:

rpi ~$ sudo iw dev wlan0 info
Interface wlan0
        ifindex 3
        wdev 0x1
        addr b8:27:eb:06:e8:8b
        ssid RPiNet
        type AP
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 31.00 dBm

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.

rpi ~$ ip -4 addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 169.254.210.182/16 brd 169.254.255.255 scope global wlan0
       valid_lft forever preferred_lft forever

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:

rpi ~$ sudo apt update
rpi ~$ sudo apt full-upgrade
rpi ~$ sudo systemctl reboot

Después de reiniciar e iniciar sesión, cambie a systemd-networkd :

rpi ~$ sudo -Es
rpi ~# mkdir -p /var/log/journal
rpi ~# systemd-tmpfiles --create --prefix /var/log/journal #ignore warnings (*)

rpi ~# apt install rng-tools
rpi ~# systemctl mask networking.service
rpi ~# systemctl mask dhcpcd.service
rpi ~# sudo mv /etc/network/interfaces /etc/network/interfaces~
rpi ~# sed -i '1i resolvconf=NO' /etc/resolvconf.conf

rpi ~# systemctl enable systemd-networkd.service
rpi ~# systemctl enable systemd-resolved.service
rpi ~# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

(*) 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:

rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.60/24
Gateway=192.168.50.1
DNS=84.200.69.80 84.200.70.40
IPForward=yes
EOF

rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 84.200.70.40
EOF

Cambie el nombre de /etc/wpa_supplicant/wpa_supplicant.conf para que coincida con la configuración de la interfaz y reinicie:

rpi ~# mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable [email protected]
rpi ~# systemctl reboot

Punto de verificación 5: Después de reiniciar e iniciar sesión, verifique la conexión por cable eth0 :

rpi ~$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.50.60/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever

rpi ~$ ping -I eth0 -c3 google.com
PING google.com (172.217.10.14) from 192.168.50.60 eth0: 56(84) bytes of data.
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=1 ttl=51 time=93.5 ms
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=2 ttl=51 time=93.5 ms
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=3 ttl=51 time=93.5 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 93.519/93.551/93.592/0.030 ms

Punto de verificación 6: Verifique la conexión wifi wlan0 :

rpi ~$ sudo systemctl start [email protected]
rpi ~$ sudo iw dev wlan0 info
Interface wlan0
        ifindex 3
        wdev 0x1
        addr b8:27:eb:06:e8:8b
        ssid RPiNet
        type AP
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 31.00 dBm

rpi ~$ ip -4 addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.4.1/24 brd 192.168.4.255 scope global wlan0
       valid_lft forever preferred_lft forever

Verifique el wifi en su teléfono móvil. Debes encontrar RPiNety 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:

rpi ~$ sudo systemctl edit [email protected]

En el editor vacío, inserte estas declaraciones, guárdelas y salga del editor:

[Service]
ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ExecStopPost=-/sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Entonces hazlo:

rpi ~$ sudo systemctl daemon-reload
rpi ~$ sudo systemctl restart systemd-networkd.service
rpi ~$ sudo systemctl restart [email protected]

Punto de control 7: ahora debería poder conectarse a Internet con el teléfono móvil.

Ingo
fuente
@Wim Usted preguntó en una respuesta eliminada: "¿Cómo se puede hacer esto con el nuevo lanzamiento de Raspbian Buster?" Esta respuesta "━━━ Compruebe la instalación paso a paso con los puntos de control ━━━" no es la correcta si desea configurar un punto de acceso. Para esto, debe usar la otra respuesta "━━━ Configuración de un punto de acceso ━━━" aquí en este lado. También funciona con Raspbian Buster. Lo acabo de verificar.
Ingo