Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zu DHCP


von dhcpnew (Gast)


Lesenswert?

Hallo.

Bisher hatten meine MC Projekte feste IPs. Ich möchte aber nun auch DHCP
benutzen. Dazu habe ich jetzt bitte eine grundsätzliche Frage zum 
Verständnis.

Was mein DHCP Client machen muss um für mein MC-Board eine dynamische IP
zu bekommen und zu erhalten, weiss ich. Was mir aber nicht klar ist,
wie das funktioniert, wenn nach dynamischer Zuteilung einer IP (z.B
läuft auch ein TCPI-Server auch auf dem Board) der Client, der auf den
Server zugreifen soll, die passende IP mitbekommt. Er muss ja wissen wen 
er ansprechen muss. Die IP ist höchstwahrscheinlich jedesmal anders.

Habe ich da einen Knoten irgendwo ? Oder fehlt mir da noch was zum
Verständnis.

Danke für hilfreiche Erklärungen schon mal.

Grüße.

von Sven B. (scummos)


Lesenswert?

Ich bin mir nicht hundertprozentig sicher, ob ich deine Frage richtig 
verstanden habe, aber die meisten DHCP-Server (z.B. Router) haben 
Funktionen, die derselben MAC-Adresse immer dieselbe IP per DHCP 
zuweisen. So wird das soweit ich weiß normalerweise gemacht, wenn man 
will, dass ein Gerät immer dieselbe IP "dynamisch" zugewiesen bekommt.

Gruß,
Sven

von ARP? (Gast)


Lesenswert?

Wenn ein IP Gerät mit einem anderen Verbindung aufnehmen möchte, macht 
es ein ARP (Adress Resolution Protocoll) request. Meinst du das?

von Marian (phiarc) Benutzerseite


Lesenswert?

ARP? schrieb:
> Wenn ein IP Gerät mit einem anderen Verbindung aufnehmen möchte, macht
> es ein ARP (Adress Resolution Protocoll) request. Meinst du das?

Naja den macht es sowieso, das ist unabhängig von DHCP.

Was er wohl meint ist, wie er bei DHCP die IP rauskriegt. Entweder fest 
zuweisen, DNS benutzen oder vom µC broadcasten lassen (eigenes 
Protokoll).

von (prx) A. K. (prx)


Lesenswert?

dhcpnew schrieb:
> Server zugreifen soll, die passende IP mitbekommt. Er muss ja wissen wen
> er ansprechen muss. Die IP ist höchstwahrscheinlich jedesmal anders.

DHCP arbeitet per Broadcast. Er muss die IP also nicht kennen.

von dhcpnew (Gast)


Lesenswert?

Danke für euer Mühe mir Klarheit zu verschaffen.

Ich frage nochmals anders, mehr allgemein:

Wenn in einem Netzwerk ein Client und eine Server die kommunizieren
müssen, jeweils via DHCP eine IP zugeteilt bekommen (dynamische IP, mit
lease time) , wie weiss denn der Client die IP des Servers ?

Danke für euer Zeit.

von Tom M. (tomm) Benutzerseite


Lesenswert?

dhcpnew schrieb:
> Wenn in einem Netzwerk ein Client und eine Server die kommunizieren
> müssen, jeweils via DHCP eine IP zugeteilt bekommen (dynamische IP, mit
> lease time) , wie weiss denn der Client die IP des Servers ?

Über die Namensauflösung wie WINS oder DNS.

Es ist praktisch, wenn du ein DHCP/DNS Server Gespann hast, welche 
Leases auch gleich im DNS eintragen. Der Client kann seinen Host Namen 
über die Option "host-name" dem DHCP Server bekannt geben, dieser könnte 
es dann im DNS registrieren. Ich glaube, das läuft so bei dnsmasq/udhcpd 
(zB DD-WRT, Tomato etc.).

von Tom M. (tomm) Benutzerseite


Lesenswert?

Siehe RFC1533, DHCP Options and BOOTP Vendor Extensions
3.14. Host Name Option

   This option specifies the name of the client.  The name may or may
   not be qualified with the local domain name (see section 3.17 for the
   preferred way to retrieve the domain name).  See RFC 1035 for
   character set restrictions.

http://tools.ietf.org/html/rfc1533

dhcpnew schrieb:
> Was mein DHCP Client machen muss um für mein MC-Board eine dynamische IP
> zu bekommen und zu erhalten, weiss ich.

Sicher? :)

von Sam P. (Gast)


Lesenswert?

So wie vorher auch: gar nicht, es sei denn du sagst dem Client manuell, 
wie die Server-IP lautet.

DHCP ändert an der Stelle gar nichts, ausser dass es komplizierter wird, 
falls der Server per DHCP ständig wechselnde IPs bekommt (kann man 
vermeiden, s.o.)

Eine automatische Erkennung der Server-IP durch den Client ist auch 
möglich, das läuft unter dem Begriff "Service Discovery" und hat 
zunächst einmal nix mit DHCP zu tun.

Wie man SD macht, ist unterschiedlich. Wenn man einen gut 
konfigurierbaren DHCP-Server hat (also kein Heimrouter-Webinterface, 
aber das häufig verwendete "dnsmasq" ist geeignet), dann kann man 
DHCP-Optionen zusätzlich mitsenden lassen, in denen du dann die 
Serveradresse mitteilst. Für  Web-Proxies gibt es z.B. bereits eine 
allgemein übliche Standardoption.

Ein anderer Ansatz ist DNS-SD, was auf Multicast-DNS basiert und ein 
allgemeiner Standard ist. In der Apple-Welt läuft das unter dem Namen 
Bonjour, unter Linux ist die Software Avahi verbreitet. Das dürfte für 
den µC allerdings schon recht happig sein, das ist kein sonderlich 
einfaches Protokoll.

Und dann kann man noch ganz Old-School irgendwelche IP-Pakete 
Broadcasten, auf die der Server lauscht und sich dann entsprechend 
rückmeldet. Solche anwendungsspezifischen Discovery-Protokolle sind z.B. 
bei Billig-Printservern beliebt.

Ich hoffe, das reicht erst einmal als Hilfestellung zur weiteren 
Recherche. Meine Empfehlung ist, falls es sich um wenige Einzelstücke 
handelt, gib dem Server eine feste IP (egal ob manuell oder per DHCP) 
und mach dann alles wie zuvor. Die Mühen der anderen Verfahren werden es 
in so einem Fall nicht Wert sein.

von Sam P. (Gast)


Lesenswert?

Erm, plus das was Tom schrieb. Klassisches DNS ist natürlich auch eine 
Lösung, insbesondere wenn man dnsmasq als DHCP- und DNS-Server 
verwendet, in der Situation ist das alles schon vollautomatisch 
verfügbar.

von Arduino (Gast)


Lesenswert?

Damit ein Client einen bestimmten Server ansprechen kann, bedarf es 
mindesetens einer statischen Komponente. Sinnvollerweise ist dies der 
FQDN (=Full Qualified Domain Name).
Dieser wird dann via DNS zu einer IP Adresse aufgelöst. Ist die IP 
bekannt, kann mit der Subnetmaske bestimmt werden, ob das IP Paket 
direkt oder via Gateway gesendet werden kann. Bei direkter Zustellung 
wird mittels ARP die MAC Adresse der Netzwerkkarte aufgelöst.
So, und jetzt sind wir mitten im OSI Modell eingestiegen und haben uns 
ducht etliche Schichten nach unten durchgekämpft und könnten mit der 
Datenübertragung beginnen :-)

Für erste Experimente empfehle ich Dir jedoch, Dich im OSI von unten 
nach oben zu bewegen.
Gib dem Controller eine statische IP Adresse. Wenn das klappt, wage Dich 
an DHCP mit statischen Reservationen heran. So kannt Du Deiner 
Controller MAC eine feste IP zuteilen. Danach kannst Du einen statischen 
Hostnamen im DNS für diese IP eintragen und den Controller über den 
Namen ansprechen. Zu guter letzt kannst Du Dich um das dynamische 
registrieren von Hostnamen im DNS kümmern.

Vielleicht findest Du ja einen TCP/IP Stack für Deinen Controller, der 
die Kommunikation übernimmt, sodass Du nicht mehr selbst im OSI turnen 
musst...

von dhcpnew (Gast)


Lesenswert?

Jetzt nochmals langsam zum Mitdenken:

Als statische Komponenten dient der DNS-Name meines MC-Boards.

Auf der PC Seite brauche ich einen DHCP Server und einen DNS Server.
(Kann dnsmasq das leisten? Gibt's das schon als EXE irgendwo? habe nur
die Sources auf die Schnelle gefunden)

Auf meinem MC-Board brauche ich dann neben der eigentlichen Applikation
(wie z.B. TCPI-Server, HTTP-Server) noch einen DHCP-Client und einen 
DNS-Client.

Nach dem Einschaltendes MC-Boards beschafft der DHCP-Client eine
IP vom DHCP-Server im Netzwerk und hält die Verbindung zu ihm.
Danach teilt der DNS-Client dem DNS-Server den DNS-Namen und die
aktuelle zugehörige IP meines Boards mit. Der DNS-Client wird dann
in diesem Fall eigentlich nicht mehr benötigt.

Danach kann sich jeder Client im Netzwerk der den Namen kennt via
DNS-Server die passende IP des MC-Boards holen und sich mit ihm 
verbinden.

Ist das so grob richtig beschrieben?

Danke.

von dhcpnew (Gast)


Lesenswert?

... vergessen.

Das MC-Board bekommt die IP des DNS-Servers vom DHCP-Server, der
diese IP wissen muss und sie mit zum DHCP-Client mit überträgt.

Damit wäre der "Kreis" geschlossen, oder ?

von Georg G. (df2au)


Lesenswert?

Am besten nimmst du dir den RFC 2132. Dort ist alles im Detail 
beschrieben (wer fragt was, wer antwortet was).

Grob vereinfacht:
Der MC sendet ein Broadcast "hier ist hugo.the.king.de, ich bin doof, 
wer macht ich schlau?"
Der DHCP Server antwortet mit IP-Adresse für den MC, DNS-Server Adresse, 
ggfs Gateway usw und sagt dem DNS Server Bescheid (meist sind beide Teil 
eines einzigen Paketes).
Damit hat der MC alles, was er zum Leben braucht.
Andere Teilnehmer im Netz fragen immer zuerst den DNS-Server.

von dhcpnew (Gast)


Lesenswert?

Bei http://www.ietf.org/rfc/rfc2132.txt steht nichts über DNS drin.

Manchmal ist es auch besser zum prinzipiellen Verständnis , mit
eigenen Worten versuchen Unverständliches zu klären.

von raute (Gast)


Lesenswert?

dhcpnew schrieb:
> Auf der PC Seite brauche ich einen DHCP Server und einen DNS Server.
> (Kann dnsmasq das leisten? Gibt's das schon als EXE irgendwo? habe nur
> die Sources auf die Schnelle gefunden)
http://www.heise.de/download/dnsmasq-1156474.html
Den gibt es nicht für Windows.

Für Windows gibt es BIND für DNS:
http://www.heise.de/download/bind-1143311.html
http://www.serverhowto.de/DNS-Server-BIND-9-als-Ersatz-fuer-den-Windows-DNS-Server.277.0.html

DHCP:
http://www.heise.de/download/dhcp-server.html

Bei ungetestet!

von Georg G. (df2au)


Lesenswert?

Hier: 
http://technet.microsoft.com/de-de/library/cc787034%28v=ws.10%29.aspx
gibt es Beispiel, wie es in der Praxis abläuft, gut beschrieben und 
illustriert.

von Sam P. (Gast)


Lesenswert?

dhcpnew schrieb:
> Auf der PC Seite brauche ich einen DHCP Server und einen DNS Server.
> (Kann dnsmasq das leisten? Gibt's das schon als EXE irgendwo? habe nur
> die Sources auf die Schnelle gefunden)

Ja, kann es. dnsmasq erleichtert dir das Leben ungemein, weil es alles 
rund um dein Problem handhaben kann. Du musst dir halt genug Zeit 
nehmen, die Konfigurationsdatei auf deine Situationa anzupassen.

Ich rate stark von BIND ab. Ist komplex, behandelt dabei nur den 
DNS-Teil und nichts zu DHCP (auch nicht die dynamische Aktualisierung 
des DNS-Eintrags) und ist traditionell unsicher. Mindestens einmal im 
Jahr zeigen sie, dass sie mit dieser Tradition auch nicht brechen wollen 
;)


> Auf meinem MC-Board brauche ich dann neben der eigentlichen Applikation
> (wie z.B. TCPI-Server, HTTP-Server) noch einen DHCP-Client und einen
> DNS-Client.

Eigentlich brauchst du keinen DNS-Client, ausser du willst selbst 
Verbindungen aufmachen.


> Nach dem Einschaltendes MC-Boards beschafft der DHCP-Client eine
> IP vom DHCP-Server im Netzwerk und hält die Verbindung zu ihm.

So halb: Es besteht keine bleibende Verbindung. Allenfalls periodische 
Auffrischungen der IP-Zuordnung, aber es geht meist nix kaputt, wenn man 
nicht auffrischt, da DHCP-Server in dieser Hinsicht eher defensiv 
arbeiten.


> Danach teilt der DNS-Client dem DNS-Server den DNS-Namen und die
> aktuelle zugehörige IP meines Boards mit. Der DNS-Client wird dann
> in diesem Fall eigentlich nicht mehr benötigt.

Nein. Das macht dnsmasq automatisch bei Anforderung der IP. Die 
DHCP-Anfrage kann nämlich schon einen Client-Namen enthalten, oder du 
weist einen Namen über die MAC-Adresse zu. Das ist ja das schöne an 
dnsmasq -- der macht alles, was man braucht, bis hin zu booten über's 
Netz.

Außerdem können DNS-Einträge so nicht aktualisiert werden. Das 
DNS-System ist streng read-only. Aktualisierung läuft über 
Server-spezifische Mechanismen, nicht über das DNS-Protokoll.


> Danach kann sich jeder Client im Netzwerk der den Namen kennt via
> DNS-Server die passende IP des MC-Boards holen und sich mit ihm
> verbinden.

korrekt.

von (prx) A. K. (prx)


Lesenswert?

Sam P. schrieb:
> des DNS-Eintrags) und ist traditionell unsicher. Mindestens einmal im
> Jahr zeigen sie, dass sie mit dieser Tradition auch nicht brechen wollen

Wenn man bedenkt, dass BIND ca. 80% Marktanteil unter den öffentlich 
zugreifbaren Nameservern hat, dann wäre jedes andere Ergebnis etwas 
seltsam. Das ist wie mit Linux vs Windows. Linux ist nicht prinzipiell 
sicherer als Windows, aber fast alle Angriffe konzentrieren sich darauf.

von Broadcast (Gast)


Lesenswert?

Eine unschöne aber superleichte Lösung wäre noch, einfach einen 
Broadcast zu senden und diesen vom Server beantworten zu lassen.

Dann könnte die ganze DNS geschichte entfallen.
Ich weiß ja nicht, was du genau vorhast. Aber mir käme das als quick und 
(gar nicht mal so) dirty in den sinn.

Auf die Weise finden sich bei mir im Netz so manche teilnehmer mit 
selbstgestrickter Software.

von dhcpnew (Gast)


Lesenswert?

Danke für die Hinweise, sehr interessant.

Ich möchte schon eine universelle Lösung anstreben. Deshalb würde ich
nicht gerne Speziallösungen benutzen.

Geht jetzt dnsmasq unter Windows oder nicht? Wenn ja, wo finde ich die
passende EXE oder Installatinsdateien?

Wenn es aber keine dnsmasq gibt oder in anderen DHCP Netzwerken, brauche
ich den DNS-Client trotzdem, oder ?

Danke

von dhcpnew (Gast)


Lesenswert?

..oh , hatte ich übersehen. Der DNS-Client kann anscheinend nicht Host-
namen und IPs beim Server hinterlegen, sondern kann nur IP's über den
Namen anfordern wenn Clients dies benötigen. Hab ich dann wohl
verstanden.

Aber wie funktioniert diese Zuweisung beim DNS-Server dann in
Netzwerken die keine dnsmasq oder ähnliches haben. Z.B. wie macht das
ein Netzwerk mit einer Fritzbox als DHCP Server ?

Hoffe ich langweile euch nicht!

Danke.

von Sam P. (Gast)


Lesenswert?

Nein, der Server braucht keinen DNS-Client. Wie ich schon schrieb, mit 
einem DNS-Client kann man keine DNS-Einträge aktualisieren. Du kannst 
nur abfragen.

Wenn du einen anderen DNS-Server nimmst, musst du halt gucken, wie das 
bei dem funktioniert mit dem Aktualisieren. Das kann zwischen 
vollautomatisch bis nahezu unmöglich sein, jede Software macht da ihr 
eigenes Ding.

Ich hab grad mal etwas gegoogelt, und das da gefunden:

http://tftpd32.jounin.net/

Das scheint das gleiche zu können. Aber wie gesagt, ich kenne es auch 
erst seit gerade eben.

von Sam P. (Gast)


Lesenswert?

dhcpnew schrieb:
> Aber wie funktioniert diese Zuweisung beim DNS-Server dann in
> Netzwerken die keine dnsmasq oder ähnliches haben. Z.B. wie macht das
> ein Netzwerk mit einer Fritzbox als DHCP Server ?

Heimrouter benutzen oft dnsmasq ;) Nur dass du da halt nicht an die 
Konfigurationsdatei rankommst.

Ansonsten wird halt bei einer IP-Zuteilung irgendein externes Programm 
gestartet, das die aktuelle Namensliste vom DHCP-Server holt und in ein 
Format umwandelt, die der DNS-Server versteht. So in etwa, jedenfalls.

Windows-ActiveDirectory-Netze sind nochmal anders, da werden auch 
ständig DNS-Einträge aktualisiert, und zwar über die AD-Infrastruktur.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.