Gostaria de instalar um switch Ethernet na garagem que fornecerá conexões ao mesmo segmento LAN do prédio principal. No entanto, não há cabo de rede entre o prédio principal e a garagem, mas há cobertura WiFi na garagem.
Já consegui o que quero com um roteador TP-Link Archer A7 que suporta modo de ponte sem fio. No entanto, eu realmente gostaria de fazer isso com um Raspberry Pi simples e um switch ethernet básico.
Usando interfaces/túneis GRE TAP, quase consegui, mas ele tem dificuldades com pacotes longos (por causa de algum problema irritante de MTU), então muitos pacotes são perdidos. Também encontrei algumas maneiras online de resolver isso usando NAT, mas isso não é aceitável no meu caso de uso. Os dispositivos que se conectam ao switch precisam estar no mesmo segmento de LAN que todos os outros dispositivos no prédio principal.
Alguém pode me dar uma resposta sobre a melhor maneira de fazer isso?
No openwrt, há uma solução para estender redes por meio de uma "ponte" wifi .
Ele depende do openwrt-relayd (atenção, há outros softwares "relayd" por aí, então há muita confusão).
Se o seu ponto de acesso e o hardware wifi do seu RPi suportarem, a malha WiFi de acordo com 802.11s é muito preferível, no entanto. Verifique usando
iw list
, procurandomesh point
por "Modos de interface suportados".Consegui fazer isso funcionar agora usando conexões OpenVPN TAP. O OpenVPN não parece sofrer do mesmo problema de MTU que o GRE TAP porque ele fragmenta automaticamente longos quadros ethernet em vários pacotes UDP.
A abordagem a seguir também depende de um Raspberry Pi no prédio principal (ou algum tipo de máquina Linux que possa executar OpenVPN).
Raspberry Pi número 1 (prédio principal)
No Raspberry Pi no prédio principal (fisicamente conectado ao lado ethernet principal), modifiquei /etc/network/interfaces para dizer:
Isso garante que haja uma ponte disponível para conectar a interface TAP.
No RPi 1, também criei o seguinte arquivo de configuração do OpenVPN.
(Estou mostrando sem criptografia configurada para economizar espaço. Também não é um grande problema no meu caso, pois ele só roda na rede local. Sem criptografia também ajuda na velocidade).
O script up_tap0.sh que é executado quando o openvpn é iniciado simplesmente anexa a interface tap0 à ponte:
Raspberry Pi número 2 (garagem)
No segundo Raspberry Pi (na garagem), primeiro me certifiquei de que ele tinha uma conexão com a rede Wifi (usando NetworkManager ou /etc/network/interfaces). Então criei esta configuração OpenVPN:
O script up_tap0.sh no RPi2 contém o seguinte:
Depois de iniciar o OpenVPN no RPi1 e no RPi2, e conectar um switch e um computador à porta Ethernet disponível do RPi2 na garagem, consegui obter um endereço IP via DHCP! :) E parece funcionar muito bem. O outro computador agora aparece como qualquer outro dispositivo nesta rede.