Configurando um Raspberry Pi como um ponto de acesso - a maneira mais fácil


15

Eu sei como fazer isso da maneira clássica, conforme descrito, por exemplo, na documentação oficial em Configurando um Raspberry Pi como um ponto de acesso em uma rede autônoma (NAT) . Mas isso precisa de muitos componentes diferentes que devem ser executados juntos e cada componente deve ser configurado à sua maneira. São redes (ifupdown) , dhcpcd , hostapd , dnsmasq e bridge-utils .

Atualmente, o Raspbian Stretch possui todos os componentes necessários, portanto não é necessário instalar software adicional. Isso poderia simplificar muito a instalação.

É possível apenas configurar o Raspbian para funcionar como um ponto de acesso wifi sem instalar software adicional?

Respostas:


25

━━━ Configurando um ponto de acesso ━━━

Estamos falando de um ponto de acesso junto com uma porta ethernet eth0 .

Se você deseja um ponto de acesso junto com uma conexão do cliente wlan0 a outra rede wifi (repetidor wlan), consulte o ponto de acesso como roteador / repetidor WiFi, opcional com bridge .

É possível configurar Raspbian estiramento como um ponto de acesso wi-fi sem instalar software adicional. Todos os componentes necessários estão disponíveis: a rede, o servidor DHCP e a ponte são fornecidos com systemd-networkd e o wifi pode ser configurado com wpa_supplicant . A conexão de duas interfaces eth0 e wlan0 pode ser feita por roteamento ou por ponte. Abaixo primeiro a configuração para instalação rápida e depois os detalhes. Primeiro, temos que mudar para systemd-networkd .

Testado com
Raspbian Buster Lite 2019-09-26 em um Raspberry Pi 4B atualizado em 2020-01-18.
Atualizações feitas com sudo apt update && sudo apt full-upgrade && sudo reboot.
Aqui você encontra a última revisão testada para versões anteriores do Raspbian .


♦ configuração geral

Alterne para systemd-networkd

Para obter informações detalhadas, consulte (1) e Como configurar a resolução de nomes com systemd-networkd . Aqui apenas em suma. Execute estes 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

Configurar wpa_supplicant como ponto de acesso

Para configurar o wpa_supplicant como ponto de acesso criar esse arquivo com as configurações para country=, ssid=, psk=e talvez frequency=. Você pode simplesmente copiar e colar isso em um bloco na sua linha de comando, começando com cate incluindo os dois EOF (o delimitador EOF não fará parte do arquivo):

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 wpa_supplicant@wlan0.service

Configuração geral concluída. Volte.


♦ Configurando um ponto de acesso independente

Exemplo para esta configuração:

                 wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
            \             /
           (dhcp)   192.168.4.1

Faça "Configuração geral" e crie o seguinte arquivo para configurar o wlan0 . Nós só temos o ponto de acesso. Não há 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

Se você quiser isso, reinicie.
É isso aí.
Caso contrário, continue, não há necessidade de reiniciar no momento.


♦ Configurando um ponto de acesso e com eth0, sem roteamento

Exemplo para esta configuração:

                                 |
                 wifi            |           wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /      |     \             /
           (dhcp)   192.168.4.1  |    (dhcp)   192.168.50.1

Configuração

Faça "Configurando um ponto de acesso independente" e crie o seguinte arquivo para configurar o 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

Reinicie.
É isso aí.

Detalhes

A interface eth0 é conectada com um cabo Ethernet ao roteador da Internet e obtém a configuração por DHCP do roteador da Internet. Não há problema em fornecer um endereço IP estático com, por exemplo, em Address=192.168.50.2vez de DHCP=yes.

Sem roteamento, você não pode acessar a Internet com o celular. Você só pode acessar o RPi para obter atualizações ou algo assim.


♦ Configurando um ponto de acesso e com eth0, com NAT (recomendado)

Exemplo para esta configuração:

                 wifi                        wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /            \
           (dhcp)   192.168.4.1       (dhcp)

Configuração

Faça "Configuração geral" e crie os seguintes arquivos para configurar wlan0 e eth0 . Se você tentou uma das configurações anteriores, basta substituir os dois arquivos. Certifique-se de usar uma sub-rede diferente para o ponto de acesso que a do roteador. O roteador neste exemplo não usa a sub-rede 192.168.4.0/24. Se você precisar de outra sub-rede, basta alterar a linha de Endereço, por exemplo 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

Reinicie.
É isso aí.

Detalhes

Se você não tiver acesso ao roteador da Internet, poderá falsificá-lo com NAT (tradução de endereços de rede) para mentir que todos os pacotes são provenientes do seu RasPi AP. Mas esse não é um roteamento limpo e tem limitações. Os clientes na sub-rede do roteador não podem se conectar aos clientes no wifi. Mas, na maioria dos casos, isso não é necessário; portanto, essa configuração é recomendada porque simplifica a instalação. Se você precisar se conectar aos clientes wifi da rede do roteador, precisará usar o roteamento completo, conforme descrito na próxima seção.


♦ Configurando um ponto de acesso e com eth0, com roteamento

Exemplo para esta configuração:

                 wifi                        wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /            \              /
           (dhcp)   192.168.4.1   192.168.50.2   192.168.50.1

Configuração

Faça "Configuração geral" e crie os seguintes arquivos para configurar wlan0 e eth0 . Se você tentou uma das configurações anteriores, basta substituir os dois arquivos. Certifique-se de usar sub-redes diferentes para o ponto de acesso e a rede do roteador. Temos que usar endereços IP estáticos porque devemos usá-los como gateways.

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

Reinicie.

Para que o roteamento seja concluído, você deve definir uma rota estática no roteador da Internet para encontrar a rota de retorno dos pacotes através do RasPi aos clientes conectados por Wi-Fi ao ponto de acesso. Na maioria dos roteadores da Internet, você pode definir uma rota estática, mas como fazer isso varia de modelo para modelo. Cabe a você descobrir. Por exemplo, sua interface RasPi eth0 possui o endereço IP estático 192.168.50.2. Em seguida, no roteador, o gateway (próximo salto) é 192.168.50.2, a rede de destino é 192.168.4.0/24 (ou 192.168.4.0 máscara de rede 255.255.255.0).

Isso significa para o roteador da Internet: "envie todos os pacotes pertencentes à sub-rede 192.168.4.0/24(rede de destino do ponto de acesso) para o próximo roteador na minha sub-rede, o RasPi AP 192.168.50.2(gateway). Ele sabe para onde continuar."

É isso aí.


♦ Configurando um ponto de acesso com uma ponte

Exemplo para esta configuração:

                               RPi
               wifi   ┌──────bridge──────┐   wired            wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
            \                   |                   / DHCP-server
           (dhcp              (dhcp           192.168.50.1
        from router)       from router)

Se você já possui uma rede Ethernet com servidor DHCP e roteador da Internet e deseja expandi-la com um ponto de acesso wifi, mas com os mesmos endereços IP, usa uma ponte. Isso geralmente é usado como um uplink para um roteador.

Configuração

Faça "Configuração geral" e crie os três arquivos a seguir para configurar as interfaces de rede. Se você tentou uma das configurações anteriores, basta excluir todos os arquivos, /etc/systemd/network/exceto 99-default.linkse houver. Os endereços IP são exemplos. Você tem que usar o seu próprio.

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

Agora temos que dizer ao wpa_supplicant para usar uma ponte. Fazemos isso modificando seu serviço com:

rpi ~# systemctl edit wpa_supplicant@wlan0.service

No editor vazio, insira essas instruções, salve-as e feche o 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

Reinicie.
É isso aí.

Detalhes

Temos que dizer ao wpa_supplicant que sua interface wlan0 é escrava de uma ponte. Caso contrário, ele rejeitará a conexão do cliente com "senha incorreta" significa que a negociação da chave não funciona. Quando dizemos ao / sbin / wpa_supplicant a opção -dbr0de usar uma ponte para wlan0 , a interface já deve ser um membro da ponte. É o que fazemos com a queda no arquivo (sobreposição) para o serviço wpa_supplicant . A instrução vazia ExecStart=exclui a entrada antiga. Caso contrário, você tem duas linhas ExecStart=e o wpa_supplicant será iniciado duas vezes. O original com o qual ExecStart=você pode ver systemctl cat wpa_supplicant@wlan0.service.

Normalmente, o roteador ao qual você está conectado com o cabo Ethernet possui um servidor DHCP ativado. A ponte também é transparente para solicitações de DHCP das estações (dispositivos conectados ao ponto de acesso), para que você não precise se preocupar com a configuração de suas interfaces com endereços e opções de IP. O roteador servirá.
excursus:
Mas se o roteador não tiver um servidor DHCP, você poderá configurar um no RasPi. O systemd-networkd tem opções para configurar seu servidor DHCP embutido, mas o problema é que o systemd-networkd assume que está sendo executado no próprio roteador e isso não é verdade neste caso. Servirá opções erradas para as estações, em particular a opção de roteador . Não há como configurá-lo. Então nós temos que instalardnsmasqnesse caso, pode ser configurado conforme necessário. Instale e configure-o com (por exemplo, use seus próprios endereços 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 ~$

Neste exemplo, os endereços IP 192.168.50.128 a 192.168.50.164 estão reservados para fornecer às estações. Para outros endereços IP estáticos, use um fora desse pool, também o endereço IP da própria ponte.


♦ Otimizando

Ao iniciar o wpa_supplicant, você recebe principalmente essas mensagens no diário:

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

Não é um grande problema. O wpa_supplicant precisa de números aleatórios para gerar chaves de criptografia. Isso é feito um pouco devagar, por isso tem que esperar. Felizmente o Raspi tem uma configuração em T rue R Andom N úmero L enerator (TRNG). Podemos usá-lo e acelerar a obtenção de números aleatórios instalando um software (3) com:

rpi ~$ sudo apt install rng-tools

Atualização:
Desde o Raspbian Stretch 2019-04-08, não há necessidade de instalar rng-tools. Eles são instalados por padrão.


♦ solução de problemas

systemd-networkd

Veja o status de um serviço:

rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status wpa_supplicant@wlan0.service

Ou até um pouco mais:

rpi ~$ journalctl --boot --pager-end

Achei útil seguir o log em andamento:

rpi ~$ journalctl --boot --follow

Se você fez uma queda no arquivo, pode ver o resultado:

rpi ~$ systemctl cat wpa_supplicant@wlan0.service

Para verificar o ambiente de tempo de execução de uma unidade, você pode mostrá-lo e, por exemplo, verificar se há duas ExecStart=linhas:

rpi ~$ systemctl show wpa_supplicant@wlan0.service

E se nada outros ajudam você pode ativar a opção de depuração /sbin/wpa_supplicantcom -dem uma queda no arquivo:

rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d

A saída está no diário. Dessa forma, eu encontrei o problema com a negociação de chave errada.

Wi-fi

Se você configurou o ponto de acesso, deve encontrá-lo em um telefone celular. Mostrando as redes disponíveis, ele é apresentado com o nome RPiNet e você pode se conectar a ele. No RasPi, você também pode usar o 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 você pode ver, é do tipo AP (ponto de acesso) e também mostrará qual canal está usando. Um problema pode ser converter um canal em frequência. A frequência deve corresponder a um canal. Você pode procurar (2) uma lista de canais WLAN. Por exemplo, para canal de uso 36 na banda de 5,1 GHz você tem que definir frequency=5180no /etc/wpa_supplicant\wpa_supplicant.conf. Mas você deve ter certeza de que o seu wifi suporta a banda de 5,1 GHz. Você pode verificar com sudo iw phy. Isso lhe dará um monte de informações. Ele também deve conter frequências suportadas acima de 5000 MHz. Se você vir apenas frequências de 24xx MHz, é claro que só poderá usá-lo.

Outro ponto poderia ser números aleatórios. Para chaves de criptografia para conexões seguras, o wpa_supplicant precisa de números aleatórios. Gerar isso é muito lento em um Raspberry Pi. Se não houver entropia suficiente para gerar chaves de criptografia, o wpa_supplicant rejeitará a autenticação. Você pode ver cat /proc/sys/kernel/random/entropy_availquantas entropias estão disponíveis. Deve ser> 1000 para funcionar rápido o suficiente. Para acelerar isso, eles rng-toolssão instalados por padrão. Consulte a seção Otimizando para obter mais informações.


referências:
[1] Como migrar da rede para a systemd-networkd com failover dinâmico
[2] Lista de canais WLAN
[3] Rng-tools


rpi ~ # systemd-tmpfiles - crie - prefixo / var / log / journalroot FALHA com esta mensagem de saída @pi: ~ # systemd-tmpfiles - crie - prefixo / var / log / journal Não é possível definir o atributo de arquivo para '/ var / log / journal ', valor = 0x00800000, mask = 0x00800000: Operação não suportada Não é possível definir o atributo de arquivo para' / var / log / journal / 6d18954849a74479955b761e891619aa ', valor = 0x00800000, mask = 0x00800000: mask not 0x00800000: Operation not supported implementado. Não é um bom começo de implementação do procedimento.
Jan Hus

1
Oi @JanHus Obrigado pelo seu feedback. Este é apenas um aviso, não um erro e não importa. Eu também entendo o tempo todo. O diário persistente é criado. Olha com ls /var/log/journal/. Você verá um diretório que se parece fa9462093e8d419cb646d0a0c44771c2. Esse é o armazenamento do diário com o qual você acessa journalctl. Vou atualizar minha resposta.
Ingo

Sim, verifiquei se o arquivo foi criado. Mas fui desviado e parei. Eu continuarei hoje. Até agora, este é um dos melhores "tutoriais" sobre o assunto. Obrigado por publicá-lo. PS está chamando de persistente OK? Pouco confuso quando é criado usando o processo temporário.
Jan Hus

2
@ Ingo Eu acho que é recomendável usar proto=WPA2na configuração do AP. Meu telefone, pelo menos, reclama de "segurança fraca" sem ele.
Robin Dinse 31/03/19

2
@RobinDinse Você está certo, é claro. Eu tenho supervisionado isso. Obrigado pela dica. Eu adicionei proto=RSN. É isso que o docu prefere (nomear proto=WPA2um apelido).
Ingo

3

Um mesmo MAIS FÁCIL maneira de configurar uma Pi framboesa como um AP é a utilização de a pi-AP Github repo que automatiza a configuração de uma Pi 3B + / 4 para um AP.

Conecte o Pi a uma porta livre no seu roteador conectado à Internet que tenha o DHCP ativado (provavelmente o caso na maioria dos roteadores de consumo).

Depois de conectado, faça o SSH no Pi no IP atribuído ao DHCP atribuído eth0pelo roteador e, em seguida:

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

cd pi-ap

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

sudo ./install.sh

Beba chá e depois de esperar cerca de 2 minutos, o SSID que você configurou variables.shaparecerá na sua lista de redes sem fio. Conecte-se à WLAN do Pi que está sendo anunciada.

Para fazer o SSH diretamente para o próprio AP na wlan0interface do Pi , use o IP padrão de192.168.0.1

Por favor, note : a sub-rede DHCP usos pi-AP padrão para atribuir clientes WiFi IPs em variables.shé 192.168.0.0/28. Se você já estiver usando essa sub-rede na sua rede, defina uma sub-rede diferente variables.shpara os clientes WiFi ANTES de executar install.sh.

Não é necessária uma calculadora de sub-rede ou mesmo habilidades sérias de rede para obter bons resultados. O pi-ap suporta até restrições de acesso via MAC ACLs.

DIVULGAÇÃO : Eu sou o desenvolvedor do pi-ap .


0

━━━ Verifique a instalação passo a passo com pontos de verificação ━━━

Esta resposta não é pensada para configuração. Para uma configuração estável, consulte a outra resposta Configurando um ponto de acesso .

Esta resposta é principalmente para solução de problemas e para mostrar como funciona com comandos detalhados passo a passo e pontos de verificação, mas sem informações básicas. Suponho que você tenha um monitor, teclado e mouse conectados ao seu Raspberry Pi. Os endereços IP e outras configurações nesta verificação são exemplos. Você tem que usar o seu. Você sempre pode procurar journalctl -b -einformações registradas.

Download ZIPimage Raspbian Stretch Lite 13/11/2018 no seu pc linux.

Ponto de verificação 1: Compare a soma de verificação com a do site de download.

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

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

Próximo passo: Grave a imagem em um cartão SD conectado:

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

Ponto de verificação 2: verifique as partições no cartão 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

Próxima etapa: monte a partição de inicialização e crie um wpa_supplicant.confarquivo:

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 o cartão SD no seu RasPi e inicie.

Ponto de verificação 3: Após o login, verifique a conexão com fio. A interface eth0 deve ter um endereço 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

Isso deve funcionar imediatamente. Se não funcionar, você terá um problema geral com a sua configuração de rede. Corrija-o antes de continuar.

Checkpoint 4: Verifique o ponto de acesso:

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

A interface wlan0 deve ter um endereço IP. Como não configuramos a interface, ela terá um endereço local do link 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

Você verá o RPiNet na lista de pontos de acesso do seu celular, mas ainda não pode se conectar a ele.

Próxima etapa: atualização completa e reinicialização:

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

Após a reinicialização e o login, mude para 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

(*) Você receberá um ou dois avisos confusos "... Não é possível definir o atributo do arquivo ..." Isso não é um erro e não importa nesse caso.

Crie estes arquivos para as interfaces eth0 e wlan0 com suas configurações:

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

Renomeie /etc/wpa_supplicant/wpa_supplicant.conf para que corresponda à configuração da interface e reinicie:

rpi ~# mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant@wlan0.service
rpi ~# systemctl reboot

Ponto de verificação 5: Após a reinicialização e o login, verifique a conexão com fio 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

Ponto de verificação 6: Verifique a conexão wifi wlan0 :

rpi ~$ sudo systemctl start wpa_supplicant@wlan0.service
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 o wifi no seu celular. Você deve encontrar RPiNete pode se conectar a ele. Seu celular não pode acessar a Internet porque o roteamento ainda não está configurado.

Próxima etapa: habilite o NAT para conexão à Internet. Para configurar o NAT, você deve estender o serviço wpa_supplicant com:

rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service

No editor vazio, insira essas instruções, salve-as e feche o editor:

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

Então faça:

rpi ~$ sudo systemctl daemon-reload
rpi ~$ sudo systemctl restart systemd-networkd.service
rpi ~$ sudo systemctl restart wpa_supplicant@wlan0.service

Ponto de verificação 7: Agora você deve conseguir acessar a Internet com o celular.


@Wim Você perguntou em uma resposta excluída: "Como isso pode ser feito com o novo Buster da versão Raspbian?" Esta resposta "━━━ Verifique a instalação passo a passo com os pontos de verificação ━━━" não é a correta se você deseja configurar um ponto de acesso. Para isso, você deve usar a outra resposta "━━━ Configurando um ponto de acesso ━━━" aqui deste lado. Também funciona com Raspbian Buster. Acabei de verificar.
Ingo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.