Estou escrevendo um código para criar uma "rede Wi-Fi semipública" com credenciais de usuário.
Digo semipública porque ainda é uma rede Wi-Fi privada (todo o tráfego é criptografado), mas está configurada como pública na interface Wi-Fi, para poder se conectar sem uma senha Wi-Fi.
No lado do meu servidor/roteador, preciso interceptar cada pacote, verificar seus direitos e, em seguida, reenviá-lo ou descartá-lo. Para isso, usei IOCTLs e configurei uma interface tap ("roteador intermediário") que captura pacotes em cada sub-rede e os encaminha ou descarta conforme apropriado. Isso funciona muito bem: pacotes em uma sub-rede não podem ir para outra sem serem processados pelo meu código. Mas não posso impedir que um aplicativo envie pacotes não autorizados e não criptografados para as redes (sem definir uma regra no iptables para redirecionar tudo para minha interface de toque, exceto minha própria API?).
Mas acho que essa forma parece ser uma espécie de “hack”. O que eu gostaria de fazer é fazer com que o kernel chame meu código para realizar a etapa de roteamento.