Pilha de redes do espaço do usuário

1

Estou escrevendo uma pilha de rede IP userland (muito simples). Para este propósito, eu preciso ir "ao redor" da pilha de rede do sistema operacional e obter os quadros Ethernet brutos. A interface tap parece um caminho a percorrer, mas não parece funcionar para mim. Eu criei uma interface bridge entre as interfaces wlan e tap , mas apenas alguns pacotes UDP super estranhos parecem aparecer lá ( tcpdump -i tap0 -e -vv diz isso), mesmo que a interface wlan real contenha muitos outros pacotes (novamente, tcpdump confirma).

Estou fazendo algo errado? Existe alguma outra maneira (melhor) de abordar a solução de pilha de rede do espaço do usuário?

    
por Daniel Lovasko 07.04.2016 / 00:03

1 resposta

0

Você não pode interligar interfaces de modo de estação wi-fi, não funciona. Não importa qual pilha de software você está usando. Esta limitação aplica-se a, e. virtualização.

Isso não é óbvio, vou tentar explicar isso.

Pacotes ieee802.11 (geralmente) têm TRÊS endereços neles. Estes são o endereço do ponto de acesso, o endereço do remetente e o endereço do destinatário. Observe que os endereços do remetente e do destinatário são endereços MAC Ethernet, que são compartilhados entre Ethernet com fio e sem fio. Os pacotes podem fluir entre "estações" sem fio e hosts na rede com fio (também conhecido como "DS", sistema de distribuição), mas não podem ser distribuídos a partir de estações, porque não há campos de endereço suficientes no pacote para conter uma identificação de estação. endereço de destino (eles são o mesmo campo).

O resultado é que você pode conectar uma interface de "modo mestre" (ponto de acesso), mas não é possível interligar uma interface de modo de estação.

A solução é geralmente usar roteamento em vez de ponte, normalmente com NAT.

    
por 30.10.2017 / 11:08