Questa domanda potrebbe derivare da un malinteso fondamentale del multicast IP, quindi correggimi se non sono in linea.Rilevamento dei server DHCP tramite multicast (224.0.0.12) in GNU/Linux/C
Sto provando a scrivere codice C per trovare l'indirizzo IP di tutti i server DHCP sulla rete. Il caso d'uso è questo:
- Trasmissioni client DHCP scoprire.
- Il mio agente relay proprietario preleva il pacchetto, aggiunge alcune informazioni essenziali e inoltra UNICAST al server DHCP con un indirizzo IP noto.
Il problema che sto avendo sta dicendo all'agente di inoltro dove si trova il (i) server DHCP (sono). Ho trovato che l'indirizzo multicast 224.0.0.12 è riservato da IANA per i server DHCP, quindi ho pensato di configurare solo i server per l'ascolto di quel traffico multicast. Ma ogni volta che configuro l'opzione socket Linux su IP_ADD_MEMBERSHIP su 224.0.0.12, utilizza IGMP, che è un protocollo completamente separato che non voglio implementare.
Sto semplicemente fraintendendo il funzionamento del multicast? Non dovrei essere in grado di inviare un ping dall'agente di inoltro a 224.0.0.12 e restituire una risposta ping da tutti i server DHCP?
Informazione supplementare:
- le interfacce su tutte le caselle non hanno MULTICAST elencato quando faccio un
ifconfig
- ho aggiunto il percorso multicast utilizzando
ip route add 224.0.0.0/4 dev eth0
su tutte le caselle
È possibile verificare che il routing multicast sia configurato? http://www.dancres.org/bjspj/docs/docs/linux.html – ChristopheD
potresti pubblicare il codice, quindi potremmo trovare un errore nell'applicazione? – dwalter
È necessario utilizzare IGMP per multicast; sembra che ci sia forse un equivoco qui. Il kernel fa tutto l'IGMP per te, proprio come fa ARP e IP senza che tu te ne preoccupi. Il problema è che con la trasmissione, il routing è (abbastanza) facile: i pacchetti vanno ovunque. Tuttavia, per ricevere una risposta multicast, è necessario accettare che venga utilizzato IGMP, per comunicare ai router della rete che si è interessati ai pacchetti multicast. Se non lo dici, come fanno a sapere di inoltrare messaggi al gruppo? DHCP normalmente usa comunque la trasmissione, credo. –