Há muitas informações na Internet sobre a criação de pontos de acesso Wi-Fi baseados em um PC Raspberry de placa única. Como regra, isso implica o uso do sistema operacional nativo do Raspberry - Raspbian.
Sendo um adepto de sistemas baseados em RPM, não pude superar esse pequeno milagre e nem experimentar o meu CentOS favorito.
O artigo fornece instruções para criar um roteador Wi-Fi de 5 GHz / CA a partir do Raspberry Pi 3 Modelo B +, com base no sistema operacional CentOS. Haverá vários truques padrão, mas pouco conhecidos, e como bônus - um desenho de conexão com o equipamento Wi-Fi adicional "framboesa", permitindo que ele trabalhe simultaneamente em vários modos (2,4 + 5 GHz).
(mistura de imagens de acesso gratuito)Notamos imediatamente que algumas velocidades cósmicas não funcionarão. Aperto no máximo 100 Mbit da minha “framboesa” no ar, e isso cobre a velocidade do meu provedor de Internet. Por que precisamos de um AC tão lento, mesmo que em N, em teoria, você consiga meio gigabyte? Se você fez essa pergunta, vá à loja para um roteador real com oito antenas externas.
0. O que é necessário
- Na verdade, o "produto de framboesa" do próprio calibre: Pi 3 Modelo B + (para atingir as cobiçadas velocidades e canais de 5 GHz);
- MicroSD sólido> = 4 GB;
- Estação de trabalho Linux com leitor / gravador microSD;
- A presença de habilidades suficientes no Linux, o artigo é para o Geek preparado;
- Conectividade de rede com fio (eth0) entre Raspberry e Linux, um servidor DHCP em funcionamento na rede local e acesso à Internet de ambos os dispositivos.
Um breve comentário sobre o último ponto. “O que veio primeiro, um ovo ou ...” como fazer um roteador Wi-Fi na ausência de qualquer equipamento de acesso à Internet? Vamos deixar esse exercício divertido fora do escopo do artigo e simplesmente assumir que o Raspberry está conectado à rede local por fio e tem acesso à Internet. Nesse caso, não precisamos de uma TV e um manipulador adicionais para configurar a framboesa.
1. Instale o CentOS
Página inicial do projetoNo momento da redação deste artigo, a versão funcional do CentOS no dispositivo era de 32 bits. Em algum lugar da vastidão da World Wide Web, me deparei com opiniões sobre a degradação do desempenho desses SOs na arquitetura ARM de 64 bits em até 20%. Vou deixar este ponto sem comentar.
No Linux, baixe a imagem mínima com o kernel "
-RaspberryPI- " e
grave -a no microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz | \ dd of=/dev/mmcblk0 bs=4M # sync
Antes de usar a imagem, exclua a seção SWAP, expanda a raiz para todo o volume disponível e livre-se do SELinux. O algoritmo é simples: fazemos uma cópia da raiz no Linux, excluímos todas as partições do microSD, exceto a primeira (/ boot), criamos uma nova raiz e retornamos seu conteúdo da cópia.
Exemplo de ações necessárias (saída severa do console) # mount /dev/mmcblk0p3 /mnt # cd /mnt # tar cfz ~/pi.tgz . --no-selinux # cd # umount /mnt
# parted /dev/mmcblk0 (parted) unit s (parted) print free Model: SD SC16G (sd/mmc) Disk /dev/mmcblk0: 31116288s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 63s 2047s 1985s Free Space 1 2048s 1370111s 1368064s primary fat32 boot, lba 2 1370112s 2369535s 999424s primary linux-swap(v1) 3 2369536s 5298175s 2928640s primary ext4 5298176s 31116287s 25818112s Free Space (parted) rm 3 (parted) rm 2 (parted) print free Model: SD SC16G (sd/mmc) Disk /dev/mmcblk0: 31116288s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 63s 2047s 1985s Free Space 1 2048s 1370111s 1368064s primary fat32 boot, lba 1370112s 31116287s 29746176s Free Space (parted) mkpart Partition type? primary/extended? primary File system type? [ext2]? ext4 Start? 1370112s End? 31116287s (parted) set Partition number? 2 Flag to Invert? lba New state? on/[off]? off (parted) print free Model: SD SC16G (sd/mmc) Disk /dev/mmcblk0: 31116288s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 63s 2047s 1985s Free Space 1 2048s 1370111s 1368064s primary fat32 boot, lba 2 1370112s 31116287s 29746176s primary ext4 (parted) quit
# mkfs.ext4 /dev/mmcblk0p2 mke2fs 1.44.6 (5-Mar-2019) /dev/mmcblk0p2 contains a swap file system labelled '_swap' Proceed anyway? (y,N) y Discarding device blocks: done Creating filesystem with 3718272 4k blocks and 930240 inodes Filesystem UUID: 6a1a0694-8196-4724-a58d-edde1f189b31 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done # mount /dev/mmcblk0p2 /mnt # tar xfz ~/pi.tgz -C /mnt --no-selinux
Após descompactar o conteúdo da partição raiz, é hora de fazer algumas alterações.
Desative o SELinux em
/ mnt / etc / selinux / config :
SELINUX=disabled
Editamos / mnt / etc / fstab , deixando apenas duas entradas de partição: boot (/ boot, inalterada) e root (altere o valor UUID, que pode ser encontrado examinando a saída do comando blkid no Linux):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0 UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Por fim, alteramos os parâmetros de inicialização do kernel: especifique o novo local da partição raiz, desabilite a saída das informações de depuração e (opcionalmente) proíba o kernel de atribuir endereços IPv6 nas interfaces de rede:
# cd # umount /mnt # mount /dev/mmcblk0p1 /mnt
Trazemos o conteúdo de
/mnt/cmdline.txt para o seguinte formato (uma linha sem hifenização):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Feito:
# cd # umount /mnt # sync
Reorganizamos o microSD no "Malinka", executamos e obtemos acesso à rede via ssh (root / centos).
2. Configurando o CentOS
Os três primeiros movimentos inabaláveis:
passwd ,
yum -y update ,
reboot .
Damos gerenciamento de rede ao
networkd :
# yum install systemd-networkd # systemctl enable systemd-networkd # systemctl disable NetworkManager # chkconfig network off
Crie o arquivo (junto com os diretórios)
/etc/systemd/network/eth0.network :
[Match] Name=eth0 [Network] DHCP=ipv4
Reiniciamos o "raspberry" e novamente obtemos acesso à rede via ssh (o endereço IP pode mudar). Observe que o
/etc/resolv.conf , criado anteriormente pelo Network Manager, é usado. Portanto, em caso de problemas com a resolução, edite seu conteúdo. Não usaremos
systemd-resolved .
Removemos o "supérfluo", reparamos e agilizamos o carregamento do sistema operacional:
# systemctl set-default multi-user.target # yum remove GeoIP Network* aic* alsa* cloud-utils-growpart \ cronie* dhc* firewal* initscripts iwl* kexec* logrotate \ postfix rsyslog selinux-pol* teamd wpa_supplicant
Quem precisa do
cron e quem não digere os
timers do systemd integrados, pode instalar o que está faltando.
/ var / log - e veja o
journalctl . Se você precisar de um histórico de log (por padrão, as informações são armazenadas apenas a partir do momento em que o sistema é iniciado):
# mkdir /var/log/journal # systemd-tmpfiles --create --prefix /var/log/journal # systemctl restart systemd-journald # vi /etc/systemd/journald.conf
Desativar o uso do IPv6 pelos serviços principais (se necessário)/ etc / ssh / sshd_config :
AddressFamily inet
/ etc / sysconfig / chronyd :
OPTIONS="-4"
A relevância do tempo na "framboesa" é uma coisa importante. Como "pronto para uso", não há capacidade de hardware para salvar o estado atual do relógio ao reiniciar, você precisa de sincronização. Um daemon muito bom e rápido para isso -
chrony - já está instalado e é iniciado automaticamente. Você pode alterar os servidores NTP para o próximo.
/etc/chrony.conf :
server 0.ru.pool.ntp.org iburst server 1.ru.pool.ntp.org iburst server 2.ru.pool.ntp.org iburst server 3.ru.pool.ntp.org iburst
Usaremos o
truque para definir o fuso horário. Como nosso objetivo é criar um roteador Wi-Fi operando em frequências de 5 GHz, prepararemos antecipadamente as surpresas
do regulador :
# yum info crda
Resumo: Daemon de conformidade regulamentar para redes sem fio 802.11
Esse design rancoroso, concentrando-se, entre outras coisas, no fuso horário, "proíbe" o uso (na Rússia) de frequências e canais de 5 GHz com números "grandes". O truque é definir o fuso horário sem usar os nomes do continente / cidade, ou seja, em vez de:
# timedatectl set-timezone Europe/Moscow
Pressione:
# timedatectl set-timezone Etc/GMT-3
E os retoques finais no penteado do sistema:
# hostnamectl set-hostname router
/root/.bash_profile :
. . . # User specific environment and startup programs export PROMPT_COMMAND="echo -n $(($(</sys/class/thermal/thermal_zone0/temp) / 1000))\'C\ " export LANG=en_US.UTF-8 export PATH=$PATH:$HOME/bin
3. Complementos para o CentOS
Tudo o que foi dito acima pode ser considerado instruções completas para a instalação do CentOS "vanilla" no Raspberry Pi. Você deve ter um PC que (re) inicialize em menos de 10 segundos, use menos de 15 megabytes de RAM e 1,5 gigabytes de microSD (na verdade, menos de 1 gigabyte devido à inicialização / incompleto, mas seremos honestos até o final):



Para instalar o software do ponto de acesso Wi-Fi neste sistema, você precisará expandir um pouco os recursos da distribuição padrão do CentOS. Primeiro, “bombeie” o driver (firmware) do adaptador Wi-Fi embutido. A página inicial do projeto diz:
Wifi no Raspberry 3B e 3B +
Os arquivos de firmware do Raspberry PI 3B / 3B + não podem ser distribuídos pelo Projeto CentOS. Você pode usar os seguintes artigos para entender o problema, obter o firmware e configurar o wifi.
O que o projeto CentOS não pode fazer não nos é proibido para uso pessoal. Substituímos o firmware Wi-Fi de distribuição no CentOS pelo correspondente dos desenvolvedores da Broadcom (os mesmos odiavam blobs binários ...). Isso, em particular, permitirá o uso de CA no modo de ponto de acesso.
Atualização de firmware Wi-FiDescobrimos o modelo do dispositivo e a versão atual do firmware:
# journalctl | grep $(basename $(readlink /sys/class/net/wlan0/device/driver)) Jan 01 04:00:03 router kernel: brcmfmac: F1 signature read @0x18000000=0x15264345 Jan 01 04:00:03 router kernel: brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43455-sdio.bin for chip 0x004345(17221) rev 0x000006 Jan 01 04:00:03 router kernel: usbcore: registered new interface driver brcmfmac Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Mar 1 2015 07:29:38 version 7.45.18 (r538002) FWID 01-6a2c8ad4 Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 7.14.8 Compiler: 1.24.9 ClmImport: 1.24.9 Creation: 2014-09-02 03:05:33 Inc Data: 7.17.1 Inc Compiler: 1.26.11 Inc ClmImport: 1.26.11 Creation: 2015-03-01 07:22:34
Vemos que a versão do firmware é 7.45.18 de 01/03/2015 e lembramos o seguinte conjunto de números:
43455 (brcmfmac43455-sdio.bin).
Faça o download da imagem atual do Raspbian . Pessoas preguiçosas podem gravar a imagem no microSD e de lá pegar os arquivos com o firmware. E você pode montar a partição raiz da imagem no Linux e copiar a que você precisa a partir daí:
# wget https://downloads.raspberrypi.org/raspbian_lite_latest # unzip -p raspbian_lite_latest > raspbian.img # fdisk -l raspbian.img Disk raspbian.img: 2 GiB, 2197815296 bytes, 4292608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x17869b7d Device Boot Start End Sectors Size Id Type raspbian.img1 8192 532480 524289 256M c W95 FAT32 (LBA) raspbian.img2 540672 4292607 3751936 1.8G 83 Linux # mount -t ext4 -o loop,offset=$((540672 * 512)) raspbian.img /mnt # cp -fv /mnt/lib/firmware/brcm/*43455* ... '/mnt/lib/firmware/brcm/brcmfmac43455-sdio.bin' -> ... '/mnt/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob' -> ... '/mnt/lib/firmware/brcm/brcmfmac43455-sdio.txt' -> ... # umount /mnt
Os arquivos de firmware resultantes para o adaptador Wi-Fi devem ser copiados com a substituição do "raspberry" no diretório
/ usr / lib / firmware / brcm /Reiniciamos o futuro roteador e sorrimos:
# journalctl | grep $(basename $(readlink /sys/class/net/wlan0/device/driver)) Jan 01 04:00:03 router kernel: brcmfmac: F1 signature read @0x18000000=0x15264345 Jan 01 04:00:03 router kernel: brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43455-sdio.bin for chip 0x004345(17221) rev 0x000006 Jan 01 04:00:03 router kernel: usbcore: registered new interface driver brcmfmac Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Feb 27 2018 03:15:32 version 7.45.154 (r684107 CY) FWID 01-4fbe0b04 Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 9.10.105 Compiler: 1.29.4 ClmImport: 1.36.3 Creation: 2018-03-09 18:56:28
Versão: 7.45.154 de 27/02/2017.
E, claro, EPEL:
# cat > /etc/yum.repos.d/epel.repo << EOF [epel] name=Epel rebuild for armhfp baseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/ enabled=1 gpgcheck=0 EOF # yum clean all # rm -rfv /var/cache/yum # yum update
4. Configuração de rede e próximos desafios
Como concordamos acima, o "Malinka" é conectado por um "fio" à rede local. Suponha que um provedor forneça acesso à Internet exatamente da mesma maneira: um endereço em uma rede pública é emitido dinamicamente por um servidor DHCP (pode ser vinculado a um MAC). Nesse caso, após a configuração final do "raspberry", basta "conectar" o cabo do provedor nele e tudo está pronto. A autorização usando
systemd-networkd é o tópico de um artigo separado e não é considerada aqui.
A (s) interface (s) Wi-Fi do Raspberry é uma rede local e o adaptador Ethernet (eth0) interno é externo. Nós numeramos a rede local estaticamente, por exemplo: 192.168.0.0/24. Endereço de Malinka: 192.168.0.1. Em uma rede externa (Internet), um servidor DHCP funcionará.
O problema da uniformidade de nomeação e o
famoso programador guatemalteco são dois problemas à espera de todos os envolvidos na configuração de interfaces e serviços de rede nas distribuições systemd.
Caos Paralelo (digressão lírica)Lennart Pottering fez seu programa systemd muito bem. Esse sistema lança outros programas tão rapidamente que eles, não tendo tido tempo de recuperar o juízo do apito do árbitro, tropeçam e caem no início, sem sequer iniciar o curso de obstáculos.
Mas, falando sério, a paralelização agressiva dos processos lançados no início do systemd-OS é uma espécie de "ponte de burro" para drivers LSB seriais experientes. Felizmente, arrumar esse "caos paralelo" acaba sendo simples, embora a verdade nem sempre seja óbvia.
Criamos duas interfaces de ponte virtual com nomes constantes:
lan e
wan . "Conectaremos" o (s) adaptador (es) Wi-Fi ao primeiro e eth0 do "raspberry" ao segundo.
/etc/systemd/network/lan.netdev :
[NetDev] Name=lan Kind=bridge
/etc/systemd/network/lan.network :
[Match] Name=lan [Network] Address=192.168.0.1/24 IPForward=yes
/etc/systemd/network/wan.netdev :
[NetDev] Name=wan Kind=bridge #MACAddress=xx:xx:xx:xx:xx:xx
/etc/systemd/network/wan.network :
[Match] Name=wan [Network] DHCP=ipv4 IPForward=yes
IPForward = yes elimina a necessidade de dar dicas ao kernel através do sysctl para habilitar o roteamento.
MACAddress = descomente e altere, se necessário.
Primeiro, conectamos eth0. Lembre-se do “problema de uniformidade” e use apenas o endereço MAC desta interface, que você pode descobrir, por exemplo, assim:
# cat /sys/class/net/eth0/address
Crie
/etc/systemd/network/eth.network :
[Match] MACAddress=b8:27:eb:xx:xx:xx [Network] Bridge=wan
Exclua o arquivo de configuração eth0 anterior, reinicie o "raspberry" e obtenha acesso à rede (o endereço IP provavelmente mudará):
# rm -fv /etc/systemd/network/eth0.network # reboot
5. DNSMASQ
Para a fabricação de pontos de acesso Wi-Fi, nada melhor do que um doce casal do
dnsmasq +
hostapd ainda não foi inventado. Na minha opinião.
Se alguém esqueceu, então ...O hostapd é uma coisa que gerencia adaptadores Wi-Fi (em particular, será necessário conectá-los à
LAN virtual do raspberry), autoriza e registra clientes sem fio.
dnsmasq - configura a pilha de clientes da rede: fornece endereços IP, servidores DNS, um gateway padrão e similares.
Começamos com dnsmasq:
# yum install dnsmasq
Template
/etc/resolv.conf :
nameserver 1.1.1.1 nameserver 1.0.0.1 nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 77.88.8.8 nameserver 77.88.8.1 domain router.local search router.local
edite-o ao seu gosto.
Minimalista
/etc/dnsmasq.conf :
domain-needed bogus-priv interface=lan bind-dynamic expand-hosts domain=# dhcp-range=192.168.0.100,192.168.0.199,255.255.255.0,24h conf-dir=/etc/dnsmasq.d
A “mágica” aqui é o parâmetro
bind-dynamic , que instrui o daemon dnsmasq a aguardar a
interface = lan aparecer no sistema e a não desmaiar de um ataque de orgulhosa solidão após o início.
# systemctl enable dnsmasq # systemctl start dnsmasq; journalctl -f
6. HOSTAPD
Finalmente, as configurações mágicas do hostapd. Não tenho dúvidas de que alguém está lendo este artigo em busca dessas linhas preciosas.
Antes de instalar o hostapd, você precisa lidar com o "problema de uniformidade". O adaptador Wi-Fi wlan0 embutido pode facilmente mudar seu nome para wlan1 ao conectar equipamentos Wi-Fi USB adicionais. Portanto, corrigiremos os nomes das interfaces da seguinte maneira: criaremos nomes exclusivos de adaptadores (sem fio) e os vincularemos aos endereços MAC.
Para o adaptador Wi-Fi embutido, que ainda é wlan0:
# cat /sys/class/net/wlan0/address b8:27:eb:xx:xx:xx
Crie
/etc/systemd/network/wl0.link :
[Match] MACAddress=b8:27:eb:xx:xx:xx [Link] Name=wl0
Agora teremos certeza de que
wl0 é o Wi-Fi embutido. Nós reiniciamos o "raspberry" para ver isso.
Instalar:
# yum install hostapd wireless-tools
Arquivo de configuração
/etc/hostapd/hostapd.conf :
ssid=rpi wpa_passphrase=1234567890 channel=36 country_code=US interface=wl0 bridge=lan driver=nl80211 auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP macaddr_acl=0 hw_mode=a wmm_enabled=1 # N ieee80211n=1 require_ht=1 ht_capab=[MAX-AMSDU-3839][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40] # AC ieee80211ac=1 require_vht=1 ieee80211d=0 ieee80211h=0 vht_capab=[MAX-AMSDU-3839][SHORT-GI-80] vht_oper_chwidth=1 vht_oper_centr_freq_seg0_idx=42
Sem esquecer o
GKChP por um minuto,
alteramos os parâmetros necessários e verificamos manualmente o desempenho:
# hostapd /etc/hostapd/hostapd.conf
O hostapd começará interativamente, convertendo seu estado no console. Se não houver erros, os clientes que suportam o modo CA já podem estar conectados ao ponto de acesso. Para parar o hostapd - Ctrl-C.
Resta incluir o hostapd na inicialização do sistema. Se você agir de maneira padrão (systemctl enable hostapd), após a próxima reinicialização, poderá obter um "daemon no sangue" de um demônio com um diagnóstico de "
interface wl0 não encontrada ". Como resultado do "caos paralelo", o hostapd terminou mais rápido do que o kernel encontrou um adaptador sem fio.
A Internet está cheia de drogas: desde o tempo limite forçado antes do daemon iniciar (por alguns minutos) até outro daemon que monitora a aparência da interface e (re) inicia o hostpad. As soluções são bastante funcionais, mas terrivelmente feias. Pedimos ajuda ao grande
sistema com seus "objetivos" e "
tarefas " "dependências".
Copie o arquivo do serviço de distribuição para
/etc/systemd/system/hostapd.service :
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
e traga seu conteúdo para o seguinte formato:
[Unit] Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator After=sys-subsystem-net-devices-wl0.device BindsTo=sys-subsystem-net-devices-wl0.device [Service] Type=forking PIDFile=/run/hostapd.pid ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf -P /run/hostapd.pid -B [Install] WantedBy=sys-subsystem-net-devices-wl0.device
A mágica do arquivo de serviço atualizado é vincular dinamicamente o hostapd a um novo destino - a interface wl0. Quando a interface aparece, o daemon é iniciado e, quando desaparece, para. E está tudo online - sem reiniciar o sistema. Especialmente, essa técnica será útil ao conectar ao adaptador Wi-Fi USB "raspberry".
Agora você pode:
# systemctl enable hostapd # reboot
7. IPTABLES
"Shta ???" © sim, sim! Nenhum
sistema Nenhuma combinação newfangled (na forma de
firewalld ), que finalmente faz a mesma coisa.
Usamos as boas e antigas
iptables , cujos serviços, após o início, farão o upload de regras de rede para o kernel e serão silenciosamente encerrados sem permanecer residente e sem consumir recursos. O Systemd possui um
IPMasquerade = elegante, mas ainda confiaremos ao iptables a tradução de endereço (NAT) e o firewall.
Instalar:
# yum install iptables-services # systemctl enable iptables ip6tables
Eu prefiro armazenar a configuração do iptables como um script (exemplo):
Executamos o script acima e perdemos a capacidade de estabelecer novas conexões ssh com fio com o "Malinka". É isso mesmo, criamos um roteador Wi-Fi, cujo acesso "via Internet" é proibido por padrão - agora apenas "pelo ar". Conectamos o cabo do provedor à Ethernet e começamos a navegar!
8. Bônus: + 2.4GHz
Quando montei o primeiro roteador Raspberry a partir do desenho descrito acima, descobri na minha fazenda vários dispositivos que, devido às limitações de design, o Wi-Fi não conseguia ver a "framboesa". A reconfiguração do roteador para funcionar em 802.11b / g / n foi antidesportiva, pois a velocidade máxima "over the air" nesse caso não excedeu 40 Mbps e meu provedor de Internet favorito me oferece 100 (via cabo).
De fato, uma solução para o problema já foi inventada: uma segunda interface Wi-Fi operando a 2,4 GHz e um segundo ponto de acesso. Na barraca mais próxima, comprei não o primeiro, mas o segundo “apito” de Wi-Fi USB que me ocorreu. O vendedor foi atormentado por perguntas sobre o chipset, compatibilidade com os núcleos ARM do Linux e a possibilidade de trabalhar no modo AP (ele começou pela primeira vez).
Configuramos o "apito" por analogia com o adaptador Wi-Fi embutido.
Primeiro, renomeie-o para
wl1 :
# cat /sys/class/net/wlan0/address b0:6e:bf:xx:xx:xx
/etc/systemd/network/wl1.link :
[Match] MACAddress=b0:6e:bf:xx:xx:xx [Link] Name=wl1
Confiaremos o gerenciamento da nova interface Wi-Fi a um daemon hostapd separado, que será iniciado e interrompido dependendo da presença de um "apito" estritamente definido no sistema: wl1.
Arquivo de configuração
/etc/hostapd/hostapd2.conf :
ssid=rpi2 wpa_passphrase=1234567890 #channel=1 #channel=6 channel=11 interface=wl1 bridge=lan driver=nl80211 auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP macaddr_acl=0 hw_mode=g wmm_enabled=1 # N ieee80211n=1 require_ht=1 ht_capab=[HT40][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]
O conteúdo deste arquivo depende diretamente do modelo do adaptador USB Wi-Fi, portanto, uma cópia / pasta trivial pode decepcioná-lo.
Copie o arquivo do serviço de distribuição para
/etc/systemd/system/hostapd2.service :
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
e traga seu conteúdo para o seguinte formato:
[Unit] Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator After=sys-subsystem-net-devices-wl1.device BindsTo=sys-subsystem-net-devices-wl1.device [Service] Type=forking PIDFile=/run/hostapd2.pid ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd2.conf -P /run/hostapd2.pid -B [Install] WantedBy=sys-subsystem-net-devices-wl1.device
Resta incluir uma nova instância do hostapd:
# systemctl enable hostapd2
Isso é tudo! Puxe o apito e a própria framboesa, observe as redes sem fio ao redor.
E, finalmente, quero alertar sobre a qualidade do adaptador USB Wi-Fi e da fonte de alimentação Raspberry. Conectado "a um apito quente", às vezes pode causar um "travamento de framboesa" devido a problemas elétricos de curto prazo.