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.
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
Wenn ein IP Gerät mit einem anderen Verbindung aufnehmen möchte, macht es ein ARP (Adress Resolution Protocoll) request. Meinst du das?
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).
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.
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.
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.).
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? :)
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.
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.
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...
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.
... 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 ?
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.
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.
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!
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.
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.
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.
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.
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
..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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.