Woher weiß ein PXE-Client, in welchem ​​Netzwerk er sich befindet?

9

Beim PXE-Start besteht einer der ersten Schritte darin, eine IP-Adresse über DHCP abzurufen.

Um DHCP verwenden zu können, müssen Sie die Broadcast-Adresse Ihres Netzwerks kennen.

Wie wird dieses Netzwerk zunächst für einen PXE-Client konfiguriert?

Ian Watson
quelle
Sie weisen dem lokalen Netzwerk eine feste IP für den PXE-Client zu.
DavidPostill
5
@ DavidPostill: Dies steht im Widerspruch zu Daniel Bs Antwort und nach meinem Verständnis zu den Dokumenten .
Mathieu K.
1
DHCP-Clients senden an 255.255.255.255, wobei 0.0.0.0 als "Quelle" verwendet wird, wenn eine DHCP-Broadcast-Anforderung initiiert wird.
ivanivan

Antworten:

29

Wie würde es überhaupt auf der IP-Ebene kommunizieren, wenn es keine Adresse hat? Das tut es nicht, sowieso nicht wirklich. Stattdessen kommuniziert es über Schicht 2.

Die Broadcast-Adresse eines Ethernet- Netzwerks lautet FF: FF: FF: FF: FF: FF: FF. Auf der IP-Ebene gibt es 255.255.255.255. Das ist es, was im DHCPDISCOVER-Paket enthalten ist. Auf diese Weise können Sie einen normalen UDP-Listen-Socket anstelle eines Raw-Ethernet-Sockets verwenden.

Daniel B.
quelle
6
" Die Broadcast-Adresse eines Ethernet-Netzwerks lautet FF: FF: FF: FF: FF: FF: FF. " Dies gilt für jedes IEEE-LAN-Protokoll, das 48-Bit-MAC-Adressen verwendet, z. B. Wi-Fi, Token Ring, FDDI usw.
Ron Maupin
it communicates using layer 2das ist nicht richtig. Schicht 2 erreicht nicht die Netzwerkebene des Server-IP-Stacks. Die Broadcast-Schicht 2 überträgt den Ethernet-Frame nur an alle Listener in einer bestimmten Ethernet-Kollisionsdomäne. Die IP-Broadcast-Adresse öffnet die Tür des Server-IP-Stacks.
Pat
Bestimmt. Wie ich bereits schrieb, handelt es sich jedoch nicht wirklich um IP-Kommunikation. Es kann nicht sein. Stattdessen wird die IP-Paketverarbeitung verwendet, indem Quell- und Zieladressen eingefügt werden, die zu einem genau definierten Verhalten führen. Die eigentliche Adressierung erfolgt ausschließlich auf Schicht 2.
Daniel B
Sie liegen falsch. Broadcast-IP-Adresse ist definitiv IP-Kommunikation. Wenn diese Broadcast-Adresse nicht vorhanden ist, sieht die IP-Schicht des Servers das Paket nicht. Das einzig Besondere an der Broadcast-IP-Adresse ist, dass sie nicht weitergeleitet werden kann.
Pat
1
Ich denke, Pat ist ein bisschen richtig und ein bisschen falsch ... tatsächlich funktioniert Broadcast in IP auf Schicht 3 ... aber DHCP verarbeitet alle ersten Schritte in L2 / ARP / MAC ... und nur den letzten Schritt (das DHCP mitteilen) Server die bereitgestellte IP wird in L3 / Unicast akzeptiert) ... dies muss so sein, da es am Anfang keinen IP / L3-Stack gibt ... andere Dienste, die andere IP-Broadcasts als DHCP ausführen, haben dieses Problem nicht (sie haben es bereits haben eine IP-Adresse), damit sie über L3 / L4 kommunizieren können -> ...
ZEE
30

Um DHCP verwenden zu können, müssen Sie die Broadcast-Adresse Ihres Netzwerks kennen.

Nein. Sie benötigen nur die lokale Broadcast-Adresse 255.255.255.255 (für IPv4) oder die Multicast-Gruppe ff02 :: 1: 2 (für IPv6). Der springende Punkt bei DHCP ist, dass keine vorherige Konfiguration auf dem Client erforderlich ist .

user1686
quelle
Dies ist nicht korrekt. Sie benötigen auch die MAC-Broadcast-Adresse (Schicht 2), da ARP für eine Broadcast-IP-Adresse nicht funktioniert.
Pat
Es wird davon ausgegangen, dass die Zuordnung von IP- zu MAC-Broadcast-Adresse immer bekannt ist, da sie vom Protokoll definiert wird und daher nicht manuell konfiguriert werden muss.
user1686
Sie liegen falsch. Auf einem bootenden DHCP-Client muss ein DHCPDISCOVERY-Paket BEIDE Broadcast-Adressen der Ebenen 2 und 3 definieren. Sie können nicht einfach die Broadcast-Adressen der Ebene 3 definieren und glauben, dass jedes andere Protokoll die Ziel-MAC-Adresse nur mit einer Broadcast-IP-Zieladresse erkennt
Pat
3
  1. Die Boot-Firmware erkennt die installierten Netzwerkkarten
  2. Die Boot-Firmware erkennt jede NIC-Broadcast-MAC-Adresse und fragt den PXE UNDI-Treiber (UNDI GET INFORMATION gibt HwType und HwAddrLen zurück), dh HwType = ETHER_TYPE HwAddrLen = 6 => Broadcast-MAC-Adresse = FF: FF: FF: FF: FF: FF: FF.
  3. Die Boot-Firmware initiiert die DHCP-DORA-Sequenz (DHCPDISCOVERY), die sich als PXE-Client (DHCP-Option 60) auf den BIOS / UEFI-fähigen NICs ankündigt.
    1. Die entsprechende zuvor entdeckte MAC-Broadcast-Adresse auf OSI-Ebene 2 (Datenverbindungsschicht)
    2. Die BIOS / UEFI-fähige IPv4 / IPv6-Broadcast-Adresse (255.255.255.255/ff02::1:2) auf OSI-Ebene 3 (Netzwerkschicht)
  4. Die Boot-Firmware beendet die DHCP-DORA-Sequenz, wenn ein vollständiges DHCP-PXE-Angebot eingeht, das Folgendes definiert:

    1. Client-IP / Maskenadresse
    2. IP-Adresse des TFTP-Servers
    3. NBP (Netzwerkstartprogramm)

    Hinweis: Wenn mehr als ein vollständiges Angebot eingeht, definieren die aktuellen Standards nicht speziell, wie der Kunde eines auswählen muss.

  5. Die Boot-Firmware legt die NIC-IP fest, TFTP überträgt, lädt in den Speicher und führt den NBP aus.

Die Layer-2-MAC-Broadcast-Adresse ermöglicht die Übermittlung des DHCP-Ethernet-Frames an alle Listener innerhalb der NIC-Ethernet-Kollisionsdomäne des Clients. Die IP-Broadcast-Adresse der Schicht 3 öffnet die Tür des IP-Stacks des DHCP-Servers. Es werden beide L2 / L3-Broadcast-Adressen benötigt .

Wenn sich der PXE-Client und der DHCP-Server in verschiedenen Subnetzen befinden, wird der Broadcast-DHCP-Verkehr an den Routern gestoppt. Dann müssen sie ihren DHCP-Relay-Agenten (IP Helper in der Cisco-Welt) aktivieren, dh das Broadcast-DHCPDISCOVERY-Paket in ein Unicast konvertieren DHCPDISCOVERY und leiten Sie es an die IP-Adresse des definierten Ziel-DHCP-Servers weiter.

Klopfen
quelle
Schöne Antwort, Sir.
Tim_Stewart