Wie kann ich die Kommunikation zwischen zwei Schnittstellen blockieren?

Wie kann ich die Kommunikation zwischen zwei Schnittstellen blockieren?

Ich versuche derzeit, eine Router-Anwendung zu entwickeln, die Sicherheits-Wrapper auf Pakete zwischen zwei Schnittstellen anwendet/entfernt. Das Protokoll ist BACnet und läuft über UDP. Das Layout ist im Bild hier zu sehen:Layout

Im Großen und Ganzen funktioniert alles gut. Die Router-App kann problemlos mit dem Controller und dem Gerätesimulator kommunizieren. Mein Problem tritt auf, wenn der Router Broadcast-Pakete überträgt (diese sind in der BACnet-Spezifikation erforderlich). Alle an 192.168.56.255 gesendeten Pakete werden von 192.168.39.4 empfangen, und alle an 192.168.39.255 gesendeten Pakete werden von 192.168.56.101 empfangen.

Das ist nicht das Verhalten, das ich vermutet hatte, da sie sich in unterschiedlichen Subnetzen befinden. Daher nehme ich an, dass der Linux-Kernel direkt vor meiner Nase ein geheimes Routing durchführt, da ich in Wireshark auf der Schnittstelle enp0s8, enp0s9 oder lo nichts sehen kann – ich sehe nur, dass die Pakete in der Anwendungsschicht der Router-App ankommen.

Ich habe die IPv4-Weiterleitung deaktiviert (net.ipv4.ip_forward = 0 in sysctl) und habe versucht, die iptables-Weiterleitung zu manipulieren, aber das hat nichts bewirkt. Ich habe auch „ip route show table local“ ausgeführt und lokale Routen gelöscht, die zu meinen beiden Schnittstellen gehörten – dies hat den Empfang der Broadcast-Pakete auf der anderen Schnittstelle gestoppt, aber die gesamte Kommunikation mit meinem Host-Rechner unterbunden.

Gibt es eine einfache Möglichkeit, den gesamten Netzwerkverkehr zwischen zwei Schnittstellen zu blockieren?

verwandte Informationen