2つのインタフェース(eth0、eth1)がブリッジされたマシン上で送受信するrawソケットを作成します。rawソケットでのブリッジ転送を無効にする
socket(AF_PACKET, SOCK_RAW, 0xabcd);
私のプロトコルはいくつかのブロードキャストパケットを送信し、私はそれを私自身で転送したいと思います。
特定のパケットの転送を無効にするにはどうすればよいですか?
2つのインタフェース(eth0、eth1)がブリッジされたマシン上で送受信するrawソケットを作成します。rawソケットでのブリッジ転送を無効にする
socket(AF_PACKET, SOCK_RAW, 0xabcd);
私のプロトコルはいくつかのブロードキャストパケットを送信し、私はそれを私自身で転送したいと思います。
特定のパケットの転送を無効にするにはどうすればよいですか?
作業の数週間後、私は自分のドライバを修正し、特定のパケットをnetlink経由でユーザーの土地に転送しました。 転送された後、特定のパケットが破棄されたため、ブリッジはこれらのパケットを転送しません。
iptables/ebtablesを使用してブリッジ経由で転送を停止し、プログラムでlibpcapを使用して、プログラムで転送するパケット/フレームを取得できるように思えます。 hackishのようなものかもしれませんが、マシンのファイアウォール/ブリッジ転送ルールに関係なく、libpcapはあなたが聞きたいパケットだけを配送することができます。
また、一致するパケットをユーザー空間に配信するiptablesターゲットもあります。それらを使用して、カーネルでそれらを配信し、それらをアプリケーションに残して再送信することができます。