Hallo zusammen,
ich bin gerade dabei mir einen eigenen kleinen DHCP-Server zu schreiben.
Ja,ich weiß, es gibt schon fertige Anwendungen (hier z.B.:
http://www.dhcpserver.de), aber ich möchte es gerne mal selbst ausprobieren.
Ich verwende Delphi XE5 auf Windows 10 und habe sowohl die
Indy 10.6.0.5040, als auch Overbyte ICS 8.16 intalliert.
Mit der fertigen Anwendung von
http://www.dhcpserver.de und WireShark habe ich mir das Protokoll mitgeschnitten. Die
IP-Vergabe funktionierte auch ohne Probleme.
Wenn ich nun versuche das erste DHCP-Paket zu empfangen, welches vom Netzwerk-Client gesendet wird, wird weder bei
Indy noch bei ICS ein Data-Available-Ereignis ausgelöst.
Bei
Indy (TidUDPServer) habe ich folgende Einstellungen:
Bindings=10.49.4.213:67
BroadcastEnabled=TRUE
gestartet mit: IdUDPServer1.Active := True
Einen Haltepunkt habe ich in OnUDPRead gesetzt, aber dieser wird nicht erreicht.
Bei ICS (TWSocketServer) habe ich folgende Einstellungen:
Addr = 10.49.40.213
Linemode=False
LocalAddr=10.49.40.213
LocalPort=67
Port=67
Proto=udp
gesartet mit: WSocketServer1.Listen
Einen Haltepunkt habe ich in OnDataAvailable gesetzt, aber dieser wird nicht erreicht.
Bei beiden Komponenten sind alle anderen Einstellungen auf den Default-Werten.
Laut WireShark kommen das Paket DHCP Discover mit folgenden Daten:
Src: 0.0.0.0
Dst: 255.255.255.255
Src Port: 68
Dst Port: 67
Hat irgendjemand eine Idee, woran das liegen könnte, dass ich das Paket, welches der PC laut WireShark auf empfängt, nicht in meiner Anwendung landet? Den Test-DHCP-Server hatte ich natürlich vorher beendet gehabt.
netstat -a zeigt mir folgendes an:
UDP 10.49.40.213:67 *.*
Beende ich mein Programm, fehlt er Eintrag.
Auch wenn ich die
IP-Adresse von 10.49.40.213 auf 0.0.0.0 ändere, erhalte ich keine Datenpakete.
Gruß,
Rainer