5

この質問は、IP マルチキャストの根本的な誤解から生じている可能性があります。

ネットワーク上のすべての DHCP サーバーの IP アドレスを検索する C コードを作成しようとしています。ユースケースは次のとおりです。

  1. クライアントは DHCP 検出をブロードキャストします。
  2. 独自のリレー エージェントがパケットを取得し、いくつかの重要な情報を追加して、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すべてのボックスで使用するマルチキャスト ルートを追加しました
4

2 に答える 2

2

おそらく、クライアントが行うことを実行する必要があります-DHCPDISCOVERパケットを使用してターゲットネットワークでブロードキャスト(マルチキャストではありません!)しますか?実行中のDHCPサーバーがいくつかありますが、いずれも224ネットワークでリッスンしていません。

また、サーバー上の偽の予約でアドレスを拘束しないように、既存のアドレスを要求するか、返されるオファーについてDHCPRELEASEを送信することもできます。

于 2012-05-12T04:49:27.967 に答える
0

一般的な IPv4 設定では、マルチキャストではなく、UDP ポート 67 へのブロードキャストを使用します。ブロードキャスト要求には、ネットワーク上のすべての DHCP サーバーが応答する必要があります。ウィキペディアのページで説明されている詳細を確認するか、 RFC 2131のセクション 3のブロードキャストの説明を読んでください。このスレッドも参照してください。

于 2012-06-01T17:59:14.607 に答える