
我目前正在嘗試開發一個路由器應用程序,該應用程式將安全包裝器應用於兩個介面之間的資料包。該協定是 BACnet,基於 UDP 運行。佈局可以在此處的圖像中看到:
在大多數情況下,一切都運作良好。路由器應用程式可以與控制器和設備模擬器正常通訊。當路由器傳輸廣播封包時(這些是 BACnet 規範所要求的),我的問題就出現了。發送到 192.168.56.255 的任何資料包都會被 192.168.39.4 接收,所有發送到 192.168.39.255 的資料包都會被 192.168.56.101 接收。
這不是我懷疑的行為,因為它們位於不同的子網中,所以我假設linux 內核正在我的鼻子底下做一些秘密路由,因為我在接口enp0s8、enp0s9 或lo 上看不到wireshark中的任何內容-我只需查看資料包到達路由器應用程式的應用程式層即可。
我已經禁用了 ipv4 轉發(sysctl 中的 net.ipv4.ip_forward = 0),並且嘗試了 iptables 轉發,但這沒有任何作用。我還運行了“ip route show table local”並刪除了與我的兩個介面相關的本地路由 - 這阻止了另一個介面上接收廣播資料包,但阻止了與我的主機的所有通訊。
有沒有一種簡單的方法來阻止兩個介面之間的所有網路流量?