Você não disse nada sobre configuração IP, e a configuração IP é exatamente o que você precisa para resolver o problema nº 3.
Escolha cuidadosamente seu plano de IP
Toda a sua rede terá um "esquema geral de IP". Por exemplo, muitas redes usam 192.168.*.*
.
Você pode usar qualquer espaço privado de IP, tanto em IPv4 quanto em IPv6 . Certifique-se de que ele não colidiria com outras redes às quais seus usuários ou RPis possam estar conectados.
Por exemplo, digamos que usaremos a rede global 172.17.*.*
. Observe que os endereços "all-zero" ( 172.17.*.0
) e "all-ones" ( 172.17.*.255
) são reservados (ou seja, não são utilizáveis) em uma rede e em todas as suas subdivisões.
Teremos que subdividir essa grande rede em redes menores que cada RPi usará independentemente. Uma das sub-redes será usada para comunicação entre os RPIs, para isso nós manteremos 172.17.0.*
para nós mesmos. Poderíamos usar outro número, mas usar 0 facilita a configuração do Pis com um script.
A parte "pública" da rede usará os IPs 172.17.xxx.*
, em que xxx
é exclusivo para cada RPi. Novamente, para facilitar o script, começamos em 1 e aumentamos.
Os RPis precisam de um IP em ambas redes. 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 um gateway para a rede 172.17.xxx.*
pelos outros RPIs. Seria lógico combinar o endereço IP com a rede retransmitida: usaremos 172.17.0.xxx
.
Configurar o Pis
-
Configure o
wlan1
do seu RPis (a interface pública ) para usar o fixo IP172.17.xxx.254
ondexxx
é único entre todos os seus RPis e não 0 (veja acima). A máscara de rede é255.255.255.0
. -
Configure o
wlan0
dos seus RPIs (a interface privada ) para usar o fixo IP172.17.0.xxx
ondexxx
é o mesmo que acima. A máscara de rede é255.255.255.0
. -
Em cada RPi, execute o seguinte script, depois de substituir
$END
pelo 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
TL; DR, fazemos o seguinte: escolhemos uma rede grande, aqui 172.17.0.0/16
. Nós o subdividimos em 255 redes menores: 172.17.xxx.0/24
. Nós mantemos 0
para nós mesmos e fornecemos todos os outros números para os usuários. Em seguida, informamos ao RPis para transferir pacotes destinados a outros computadores para o RPI "gateway" apropriado.
Diga aos dispositivos dos usuários para procurar no lugar certo
Eu suponho que você esteja usando o dnsmasq como o servidor DHCP para as redes públicas. Para que os dispositivos do usuário sejam configurados corretamente, você precisará ajustar suas configurações.
-
Configure o DHCP para que ele atenda aos endereços em um intervalo adaptado à rede, I.E.
172.17.xxx.1
a172.17.xxx.253
. -
Adicione uma rota estática à parte DHCP da configuração do dnsmasq (novamente substituindo
xxx
apropriadamente):dhcp-option=121,16.172.17.0.0,172.17.xxx.254
Usando uma rota estática, evite sobrescrever o gateway padrão de seus clientes. Dessa forma, se eles ainda estiverem conectados a outra rede (ou seja, um laptop com Ethernet conectado), eles não devem ter nenhum problema.
Certifique-se de testar isso com 1 ou 2 Pis e 1 ou 2 clientes antes de se comprometer a configurar todos seus RPIs.