困ったなあ

Linux で、AF_PACKET な Raw ソケット (以下 Packet ソケット) を開いて、ネットワークインターフェイス (eth0 とか) に対してパケットを write すると、その NIC の送信キューに入り、順次ネットワーク上に送出される。
しかし、受信キューには入らないので、そのコンピュータのカーネルプロトコルスタック自身は、write したパケットを受け取れない。
仮想 HUB と LAN との間の L2 ブリッジングを Packet ソケットを使って実現しようとすると、ここではまってしまう。eth0 などとブリッジしている 仮想 HUB に VPN 接続してきたマシンは、その仮想 HUB のサーバーの eth0 のインターフェイス自身との通信が全くできない。(eth0 が接続しているセグメント上の他のマシン上との通信はできるのに)
Packet ソケットに write するとき、同時にインターフェイスの受信キューにも入れて、カーネルから見ると、物理的にパケットが届いたものとして処理させるにはどうすればいいのだろう。(ユーザーモードのみで)
まあ、ブリッジ専用の NIC を追加してもらって、eth1 みたいな名前だとすると、eth0 と eth1 を物理的に同じ HUB に接続すれば良いのだが、上記の問題が解決できれば、NIC は 1 つで済むのだが。
WindowsWinPcap を使って Write した場合は、送信されると同時に受信キューにも入ってカーネルに戻ってくるので、上のような問題は起こらない。

↑ っていうか、iptables とか使って強引に何とかできないだろうか…