Escolha seu plano IP com cuidado

Escolha seu plano IP com cuidado

Tenho várias placas Raspberry Pi 3 modelo B com um adaptador Wi-Fi externo conectado a elas. Meu propósito é:

  1. Crie uma rede mesh de dispositivos RSP.
  2. Cada placa RSP deve ter seu próprio AP e clientes (móveis/laptops) podem ser conectados a ela.
  3. Os clientes desses AP podem se movimentar em diferentes faixas de dispositivos RSP e ainda assim devem ser capazes de se comunicar entre si, independentemente do AP ao qual estão conectados (como se estivessem conectados a uma única rede)

Para corrigir nº 1: usei batman-adv na interface wifi interna (wlan0) do RSP3 e agora todos os dispositivos podem executar ping entre si por meio de suas interfaces bat0 virtuais.

Para o nº 2: usei o adaptador wifi externo (wlan1) e com a ajuda de hostapd e dnsmasq, posso rodar o AP (mesmo SSID e canal em todos os AP) em cada placa RSP. Também conectei alguns dispositivos móveis em diferentes APs agora.

Meu principal problema de bloqueio é o objetivo nº 3:

Para resolver isso, tentei criar uma ponte entre as interfaces wlan0 e wlan1 com a ferramenta bridge-utils. Mas no RSP, ambas as interfaces não suportam o módulo WDS. Até agora não consegui fazer uma única rede para todos os clientes. Também tentei usar o encaminhamento de IP entre wlan0 e wlan1, mas não consigo executar ping nos clientes conectados de outros dispositivos RSP.

Existe alguma outra abordagem (além do WDS) para criar uma rede única para todos os clientes conectados?

Responder1

Há algumas coisas que precisam de ajustes para que isso funcione.

  • Primeiro, você não deve ter todos os AP wlan1 do RPI no mesmo canal, pois isso causará interferência significativa entre eles.

  • Você também não deveria precisar usar o WDS. Veresta explicaçãopara obter mais informações sobre isso. Apenas certifique-se de que cada AP tenha o mesmo SSID, tipo de segurança WiFi e a mesma senha.

  • Você tem a ideia certa de que precisa criar uma ponte entre wlan0 e wlan1 em cada RPI. Não estou familiarizado com bridge-utils, mas provavelmente seria melhor apenas seguir as instruções sobre como fazer uma ponte na documentação do batman-advaqui.

Outra coisa a observar é que você provavelmente não precisa executar o dnsmasq para serviços DHCP. Seus clientes poderiam simplesmente usar seus endereços IPv6 locais de link atribuídos automaticamente para se comunicarem entre si por meio desta LAN sem fio.

EDITAR:Meu erro. Parece que não há suporte para fazer uma ponte verdadeira usando wlan no RPI3. Parece que há uma possível solução alternativa usando NATaqui. Também pode ser possível se você conectar dois adaptadores WiFi externos que suportem conexões em ponte.

Responder2

Você não disse nada sobre a configuração de IP, e a configuração de IP é exatamente o que você precisa para resolver o problema nº 3.

Escolha seu plano IP com cuidado

Toda a sua rede terá um “esquema IP geral”. Por exemplo, muitas redes usam 192.168.*.*.

Você pode usarqualquer espaço privado IP, tanto em IPv4 quanto em IPv6. Certifique-se de que não colidirá com nenhuma outra rede que seus usuáriosou RPispode estar conectado.

Por exemplo, digamos que usaremos a rede global 172.17.*.*. Observe que os endereços "todos zero" ( 172.17.*.0) e "todos uns" ( 172.17.*.255) são reservados (ou seja, não utilizáveis) em uma rede e em todas as suas subdivisões.

Teremos que subdividir esta grande rede em redes menores que cada RPi utilizará de forma independente. Uma das sub-redes será utilizada para comunicação entre os RPis, para isso guardaremos 172.17.0.*para nós. Poderíamos usar outro número, mas usar 0 facilita a configuração do Pis com um script.

A parte “pública” da rede utilizará os IPs 172.17.xxx.*exclusivos xxxpara cada RPi. Novamente, para facilitar um script, começamos em 1 e incrementamos.

Os RPis precisam de um IP emambosredes. Para a rede pública, é uma prática recomendada usar .254, então será 172.17.xxx.254. Mas e a rede central? O RPi será usado como gateway de rede 172.17.xxx.*pelos demais RPis. Seria lógico combinar o endereço IP com a rede retransmitida: usaremos 172.17.0.xxx.

Configure o Pis

  1. Configure seus RPis' wlan1(opúblicointerface) para usar ofixoIP 172.17.xxx.254onde xxxé único entre todos os seus RPis e não 0 (veja acima). Máscara de rede é 255.255.255.0.

  2. Configure seus RPis' wlan0(oprivadointerface) para usar ofixoIP 172.17.0.xxxonde xxxé o mesmo que acima. Máscara de rede é 255.255.255.0.

  3. Em cada RPi, execute o seguinte script, após substituir $ENDpelo número de RPis que você está usando:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    for i in $(seq 1 $END); do route add -net 172.17.$i.0 netmask 255.255.255.0 gw 172.17.0.$i; done
    iptables -A FORWARD -s 172.17.0.0/16 -d 172.17.0.0/16 -j ACCEPT
    

DR, fazemos o seguinte: escolhemos uma rede grande, aqui 172.17.0.0/16. Subdividimo-lo em 255 redes menores: 172.17.xxx.0/24. Nós guardamos 0para nós mesmos e fornecemos todos os outros números aos usuários. Em seguida, instruímos os RPis a transferir pacotes direcionados a outros computadores para o RPi "gateway" apropriado.

Diga aos dispositivos dos usuários para procurarem no lugar certo

Presumo que você esteja usando dnsmasq como servidor DHCP para redes públicas. Para que os dispositivos do usuário sejam configurados corretamente, você precisará ajustar suas configurações.

  1. Configure o DHCP para que ele atenda endereços em um intervalo adaptado à rede, ou seja, 172.17.xxx.1para 172.17.xxx.253.

  2. Adicione uma rota estática à parte DHCP da configuração do dnsmasq (novamente substituindo xxxapropriadamente):

    dhcp-option=121,16.172.17.0.0,172.17.xxx.254
    

Usar uma rota estática evita sobrescrever o gateway padrão de seus clientes. Dessa forma, se eles ainda estiverem conectados a outra rede (ou seja, um laptop com Ethernet conectada), não deverão ter nenhum problema.

Certifique-se de testar isso com 1 ou 2 Pis e 1 ou 2 clientes antes de se comprometer com a configuraçãotodosseu RPis.

informação relacionada