━━━ 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 cat
e 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 [email protected]
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.2
vez 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.link
se 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 [email protected]
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 -dbr0
de 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 [email protected]
.
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 instalardnsmasq
nesse 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 [email protected]
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 [email protected]
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 [email protected]
E se nada outros ajudam você pode ativar a opção de depuração /sbin/wpa_supplicant
com -d
em uma queda no arquivo:
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
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=5180
no /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_avail
quantas entropias estão disponíveis. Deve ser> 1000 para funcionar rápido o suficiente. Para acelerar isso, eles rng-tools
sã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
ls /var/log/journal/
. Você verá um diretório que se parecefa9462093e8d419cb646d0a0c44771c2
. Esse é o armazenamento do diário com o qual você acessajournalctl
. Vou atualizar minha resposta.proto=WPA2
na configuração do AP. Meu telefone, pelo menos, reclama de "segurança fraca" sem ele.proto=RSN
. É isso que o docu prefere (nomearproto=WPA2
um apelido).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
eth0
pelo roteador e, em seguida:Beba chá e depois de esperar cerca de 2 minutos, o SSID que você configurou
variables.sh
aparecerá 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
wlan0
interface 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 diferentevariables.sh
para os clientes WiFi ANTES de executarinstall.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 .
fonte
━━━ 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 -e
informações registradas.Download ZIP
image 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.
47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d 2018-11-13-raspbian-stretch-lite.zip
Próximo passo: Grave a imagem em um cartão SD conectado:
Ponto de verificação 2: verifique as partições no cartão SD:
Próxima etapa: monte a partição de inicialização e crie um
wpa_supplicant.conf
arquivo: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:
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:
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.
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:
Após a reinicialização e o login, mude para systemd-networkd :
(*) 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:
Renomeie /etc/wpa_supplicant/wpa_supplicant.conf para que corresponda à configuração da interface e reinicie:
Ponto de verificação 5: Após a reinicialização e o login, verifique a conexão com fio eth0 :
Ponto de verificação 6: Verifique a conexão wifi wlan0 :
Verifique o wifi no seu celular. Você deve encontrar
RPiNet
e 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:
No editor vazio, insira essas instruções, salve-as e feche o editor:
Então faça:
Ponto de verificação 7: Agora você deve conseguir acessar a Internet com o celular.
fonte