
Atualmente estou tentando desenvolver um aplicativo de roteador que aplique/remova wrappers de segurança para pacotes entre duas interfaces. O protocolo é BACnet e funciona em UDP. O layout pode ser visto na imagem aqui:
Na maior parte, tudo está funcionando bem. O aplicativo do roteador pode se comunicar perfeitamente com o controlador e o simulador de dispositivo. Meu problema surge quando o roteador transmite pacotes de transmissão (estes são exigidos pela especificação BACnet). Quaisquer pacotes enviados para 192.168.56.255 são recebidos por 192.168.39.4 e todos os pacotes enviados para 192.168.39.255 são recebidos por 192.168.56.101.
Este não é o comportamento que eu suspeitava, pois eles estão em sub-redes diferentes, então estou assumindo que o kernel do Linux está fazendo algum roteamento secreto debaixo do meu nariz, pois não consigo ver nada no wireshark na interface enp0s8, enp0s9 ou lo - eu basta ver os pacotes chegarem na camada de aplicação do aplicativo roteador.
Desativei o encaminhamento de ipv4 (net.ipv4.ip_forward = 0 em sysctl) e tentei mexer no encaminhamento de iptables, mas não adiantou nada. Também executei "ip route show table local" e excluí rotas locais pertencentes às minhas duas interfaces - isso impediu que os pacotes de transmissão fossem recebidos na outra interface, mas impediu toda a comunicação com minha máquina host.
Existe uma maneira simples de bloquear todo o tráfego de rede entre duas interfaces?