私は組み込みシステム用のOpenWrt Linuxディストリビューションを持っています。このデバイスには、eth0、eth1、およびwlan0の3つのネットワークインターフェイスがあります。rawソケット用のLinuxインタフェースを使用
ネットワークインターフェイス(eth0)の1つは、ローソケットプログラミングにのみ使用する必要があります。私は、パラメータAF_PACKET
、SOCK_RAW
、ETH_P_ALL
を持つソケットを作成することができます。ソケットはすべてのネットワークトラフィックを受信し、パケットを送信することができ、すべてがOKです。
しかし私の問題は、OSが受信(例えば、ARPおよびICMP要求/応答)を送信するためのインタフェースも使用していることです。
インターフェイスは自分のプログラムでのみ使用され、OS自体では使用されないというオプションはありますか?
OK。すべてのIPv4パケットが破棄されるようにファイアウォール(iptables)を設定しました。しかし、どのようにARPとIPv6を起動時に無効にすることができますか?上記の2行を 'rc.local'に置いた場合、私はいつもデバイスの起動時にICMPv6パケット(Router Solicitation)を取得します。私は 'rc.local'ファイルのコマンドが遅すぎると思います。すべての訴訟? –
@ BenjaminJ。なぜこれが問題なのですか?重要なことは、そのパケットをカーネルが処理することによってアプリケーションが損なわれないということです。 – Ctx
申し訳ありません。私は自分自身を間違って表現した。パケットはOpenWrtデバイスによって送信されます。私はeth0に接続されているWindows PC上のWiresharkを介して確認しました。 –