この質問は、IP マルチキャストの根本的な誤解から生じている可能性があります。
ネットワーク上のすべての DHCP サーバーの IP アドレスを検索する C コードを作成しようとしています。ユースケースは次のとおりです。
- クライアントは DHCP 検出をブロードキャストします。
- 独自のリレー エージェントがパケットを取得し、いくつかの重要な情報を追加して、UNICAST を既知の IP アドレスの DHCP サーバーに転送します。
私が抱えている問題は、リレー エージェントに DHCP サーバーがどこにあるかを伝えることです。マルチキャスト アドレス 224.0.0.12 が IANA によって DHCP サーバー用に予約されていることがわかったので、そのマルチキャスト トラフィックをリッスンするようにサーバーを構成するだけでよいと考えました。しかし、Linux ソケット オプションを IP_ADD_MEMBERSHIP から 224.0.0.12 に設定すると、IGMP が使用されます。これは、実装する必要のない完全に別のプロトコルです。
マルチキャストの仕組みを誤解しているだけですか? リレー エージェントから 224.0.0.12 に ping を送信し、すべての DHCP サーバーから ping 応答を返すようにできませんか?
追加情報:
- すべてのボックスのインターフェイスには、実行時にMULTICASTがリストされています
ifconfig
ip route add 224.0.0.0/4 dev eth0
すべてのボックスで使用するマルチキャスト ルートを追加しました