Как заблокировать связь между двумя интерфейсами?

Как заблокировать связь между двумя интерфейсами?

В настоящее время я пытаюсь разработать приложение маршрутизатора, которое применяет/удаляет оболочки безопасности для пакетов между двумя интерфейсами. Протокол — BACnet, и он работает поверх UDP. Макет можно увидеть на изображении здесь:Макет

В основном все работает хорошо. Приложение маршрутизатора может нормально взаимодействовать с контроллером и симулятором устройства. Моя проблема возникает, когда маршрутизатор передает широковещательные пакеты (они требуются спецификацией BACnet). Все пакеты, отправленные на 192.168.56.255, принимаются 192.168.39.4, а все пакеты, отправленные на 192.168.39.255, принимаются 192.168.56.101.

Это не то поведение, которое я подозревал, поскольку они находятся в разных подсетях, поэтому я предполагаю, что ядро ​​Linux выполняет какую-то секретную маршрутизацию у меня под носом, поскольку я не вижу ничего в Wireshark на интерфейсах enp0s8, enp0s9 или lo — я просто вижу, что пакеты поступают на прикладной уровень приложения маршрутизатора.

Я отключил пересылку ipv4 (net.ipv4.ip_forward = 0 в sysctl) и попытался поиграться с пересылкой iptables, но это ничего не дало. Я также запустил "ip route show table local" и удалил локальные маршруты, относящиеся к моим двум интерфейсам - это остановило прием широковещательных пакетов на другом интерфейсе, но предотвратило все коммуникации с моей хост-машиной.

Существует ли простой способ заблокировать весь сетевой трафик между двумя интерфейсами?

Связанный контент