Configurando uma rede de malha 802.11s para dispositivos móveis se comunicarem com um servidor com fio

3

Estou desenvolvendo um aplicativo para Android que mantém a conectividade de um dispositivo com uma rede de malha WiFi baseada no Linux e envia periodicamente informações de status (GPS, vida útil da bateria etc.) para um servidor conhecido em algum lugar da malha. . Eu sou bem novo no geral em geral, então este projeto tem sido uma curva de aprendizado massiva, e eu acho que quando se trata de redes eu estou bem longe da minha cabeça. Estou com alguns problemas ao obter o tráfego de pacotes de atualização para encontrar de forma consistente o caminho de volta ao servidor e esperando que alguém possa me apontar na direção certa.

Cada um dos nós da malha é um pequeno computador Linux com três interfaces de rede:

ap0
A interface do ponto de acesso WiFi gerenciada por hostapd . O endereço IP está definido como 192.168.0.1 , com os telefones celulares conectados atribuídos automaticamente a um IP na mesma sub-rede via dhcpd .

mesh0
A interface de malha WiFi 802.11s conectando os nós da malha juntos. Cada um é membro da rede 10.0.0.0 .

eth0
Porta ethernet padrão, atribuído% IP192.168.1.101. Apenas um dos nós da malha usará essa interface, que se conectará a uma rede que contém a máquina do servidor ( 192.168.1.1 ).

Apenas para esclarecer, aqui está uma maquete da estrutura da rede:

Até agora, tudo o que consegui alcançar foi fazer os nós pingarem uns aos outros. Os dispositivos sem fio não podem ver fora de sua própria rede (a sub-rede do ponto de acesso), nem nada além do nó conectado à Ethernet capaz de executar ping no servidor. O script definindo tudo isso se parece com isso (em grande parte remendado das buscas no Google):

ifconfig wlan0 down
iw dev wlan0 del

iw phy phy0 interface add ap0 type managed
ip link set dev ap0 address 60:60:60:60:60:01 #this is different for each unit
ifconfig mesh0 up   
ifconfig mesh0 10.0.0.1
ifconfig ap0 192.168.0.1 up 

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o mesh0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i mesh0 -o eth0 -j ACCEPT

Certamente eu estou sentindo falta de algo muito burro / crucial, embora tudo tenha sido muito impressionante e eu não tenho certeza por onde começar. Alguma idéia?

    
por Mark Gillard 29.10.2014 / 05:42

1 resposta

1

802.11s permite que todos os dispositivos na "malha" se encontrem no nível da "camada 2" ... em uma rede com fio, é o mesmo como se estivessem fisicamente conectados ao mesmo comutador de rede. Eles podem "pingar" uns aos outros, desde que estejam todos usando o mesmo intervalo de endereços IP, etc.

O que você tem neste ponto são duas redes não relacionadas e não conectadas, uma que usa 10.x.x.x e a segunda que usa 192.168.x.x .

Ao tentar conectá-los, você precisa que todos os dispositivos 10.x sejam informados sobre o endereço do "gateway" (ou seja, para onde eles enviam pacotes para os quais não sabem o destino real). caso eles queiram que seu gateway seja 10.0.0.1 . E você precisa de uma rota estática na caixa "gateway" que faz com que ela saiba qual interface de rede esses pacotes devem "sair". Você provavelmente também descobriu que precisa de uma rota estática para a outra sub-rede "sair" da outra interface também. Devido ao fato de você ter o MASQ e o RELATED habilitados, você não deve ter muitos problemas com o "tráfego de retorno" quando o tráfego de saída estiver funcionando.

    
por 06.09.2016 / 18:16