PXE-Server - Broadcast-Port-Einschränkung bei Boot-Client-Anforderung

PXE-Server - Broadcast-Port-Einschränkung bei Boot-Client-Anforderung

Ich möchte meinen PXE-Server so einrichten, dass er nur Clients, die einen Netzwerkstart anfordern, eine korrekte IP-Adresse zuweist.

Aus diesem Grund habe ich meinen Netzwerkadapter mit 2 IP-Adressen in unterschiedlichen Bereichen konfiguriert. 192.168.1.19 ist das allgemeine Netzwerk, das auf /24 sendet.

Für den PXE-Server-Boot versuche ich, einen anderen IP-Satz zu verwenden, um ihn vom Rest der Netzwerkkonfiguration zu trennen. Der Server hat daher eine zweite IP 192.168.0.19, die auf /24 für nur 2 IP-Bereiche gesendet wird. (max. 2 Computer, die gemeinsam PXE-Boot verwenden)

# cat /etc/network/interfaces
iface enp5s0 inet static
address 192.168.1.19
netmask 255.255.255.0
gateway 192.168.1.1

iface enp5s0:1 inet static
address 192.168.0.19
netmask 255.255.255.0

Der Punkt wäre, dass nur Computer, die einen Bootvorgang anfordern, eine dieser beiden IPs haben sollten. Allerdings wird sie geleast und nicht freigegeben, auch nicht nach einem Neustart. Ich muss das Netzwerk auf dem Client manuell zurücksetzen. Selbst dann erhält er manchmal dieselbe IP zurück. Das ist eng, weil mein Router auf 192.168.1.1 eingestellt ist. Ich ging davon aus, dass er demselben Bereich Priorität einräumen sollte.

Wenn der Netzwerkstart auf dem Client deaktiviert ist, sollte er eine IP aus dem allgemeinen Netzwerkbereich erhalten, um Dateifreigabe und andere LAN-Dienste nutzen zu können. Wenn es aktiviert ist, sollte es nur eine für die PXE-Startkonfiguration erhalten und diese nach Abschluss freigeben.

Zweiter Test, um es zum Laufen zu bringen:

Ich habe getestet, ob diese Konfiguration funktioniert mitDNS-MASQHier finden Siemeine aktuellen Netzwerkeinstellungenund die weiteren Details:

root@lubuton:~# service dnsmasq restart
root@lubuton:~# service dnsmasq status
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-06-19 09:30:18 CEST; 8s ago
    Process: 75253 ExecStartPre=/etc/init.d/dnsmasq checkconfig (code=exited, status=0/SUCCESS)
    Process: 75261 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
    Process: 75270 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
   Main PID: 75269 (dnsmasq)
      Tasks: 1 (limit: 18871)
     Memory: 652.0K
        CPU: 38ms
     CGroup: /system.slice/dnsmasq.service
             └─75269 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e06d44b80b8f1d39a95c0b0d7c65d08458e88040>

Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, IP range 192.168.2.31 -- 192.168.2.40, lease time 1h
Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, IP range 192.168.2.21 -- 192.168.2.30, lease time 1h
Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, IP range 192.168.2.11 -- 192.168.2.20, lease time 1h
Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, IP range 192.168.2.2 -- 192.168.2.10, lease time 1h
Jun 19 09:30:18 lubuton dnsmasq-dhcp[75269]: DHCP, sockets bound exclusively to interface enp5s0
Jun 19 09:30:18 lubuton dnsmasq-tftp[75269]: TFTP root is /srv/tftp
Jun 19 09:30:18 lubuton dnsmasq[75269]: reading /etc/resolv.conf
Jun 19 09:30:18 lubuton dnsmasq[75269]: using nameserver 127.0.0.53#53
Jun 19 09:30:18 lubuton dnsmasq[75269]: read /etc/hosts - 7 addresses
Jun 19 09:30:18 lubuton systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
lines 1-23/23 (END)
root@lubuton:~# service tftpd-hpa status
● tftpd-hpa.service - LSB: HPA's tftp server
     Loaded: loaded (/etc/init.d/tftpd-hpa; generated)
     Active: active (running) since Sun 2022-06-19 03:27:58 CEST; 6h ago
       Docs: man:systemd-sysv-generator(8)
      Tasks: 1 (limit: 18871)
     Memory: 392.0K
        CPU: 6ms
     CGroup: /system.slice/tftpd-hpa.service
             └─17162 /usr/sbin/in.tftpd --listen --user tftp --address 192.168.2.1:69 --secure --create /srv/tftp

Jun 19 03:27:58 lubuton systemd[1]: Starting LSB: HPA's tftp server...
Jun 19 03:27:58 lubuton tftpd-hpa[17154]:  * Starting HPA's tftpd in.tftpd
Jun 19 03:27:58 lubuton tftpd-hpa[17154]:    ...done.
Jun 19 03:27:58 lubuton systemd[1]: Started LSB: HPA's tftp server.

Client-Seite:PXE-E53: No bootfilename recieved

Hier ist meine Standard-Netzwerkkonfiguration. Diese verwende /etc/dnsmasq.d/pxe.confich zum Einrichten des PXE-Servers:

interface=enp5s0,lo
bind-interfaces
log-dhcp
dhcp-host=pxe.home.lan,192.168.2.1
dhcp-range=enp7s4f0,192.168.2.2,192.168.2.10
dhcp-range=enp7s4f1,192.168.2.11,192.168.2.20
dhcp-range=enp8s6f0,192.168.2.21,192.168.2.30
dhcp-range=enp8s6f1,192.168.2.31,192.168.2.40
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,bootx64.efi,pxelinux.0
enable-tftp
tftp-root=/srv/tftp

Ich glaube, ich verstehe etwas an den IP-Bereichen und dem Subnetzanforderungen des PXE-Netzwerks nicht.

Der Punkt ist, dass ich dieses PXE verwenden würde, um Leuten dabei zu helfen, ihr Betriebssystem wiederherzustellen/zu reparieren/zu installieren/neu zu installieren.

Mein Heimnetzwerk auf 192.168.1.0/24 sollte privat bleiben. In meinem PXE-Netzwerk sollte das Internet von diesem letzten freigegeben sein und Clients, die an allen anderen Schnittstellen angeschlossen sind, außer enp5s0, das mit dem ISP-Router verbunden ist, Zugriff auf den PXE-Bootp-Dienst gewähren.

Wenn ich das richtig verstehe, kann PXE nur in WAN-IP-Bereichen funktionieren?

Ich vergaß zu erwähnen:

  • Ich möchte, dass alle Computer in meinem Netzwerk auf LAN-IPs bleiben, damit meine Samba-Sicherheit nicht auf Benutzern, sondern auf LAN-Einschränkungen basiert.

  • Ich kann die IPs automatisch im selben Bereich wie enp5s0 anbieten, da dies mit den IP-Leases des Routers in Konflikt gerät. Daher versuche ich, sie auf 192.168.2.0/24 zu setzen.

Ist das möglich oder ist das das Problem?

Meine letzte Konfiguration in pxe.conf gibt das Internet frei, stellt den Clients beim Booten IPs zur Verfügung, aber es wird keine Datei gesendet.

interface=enp5s0,lo
bind-interfaces
log-dhcp
dhcp-host=pxe.home.lan,192.168.2.1
dhcp-range=192.168.2.2,192.168.2.40
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,bootx64.efi,pxelinux.0
enable-tftp
tftp-root=/srv/tftp

Antwort1

Ich glaube nicht, dass Ihr Plan so funktioniert, wie Sie es sich wünschen. Das Betriebssystem, das per PXE gebootet wird, führt normalerweise sein eigenes DHCP-Netzwerk-Setup durch. Die DHCP-Client-Pakete aus dem zweiten Netzwerk-Setup enthalten wahrscheinlich keine PXE-Optionen.

Es ist jedoch durchaus möglich, DHCP-Clientpakete mit PXE-Optionen zu erkennen. Dies ist ein gängiger Ansatz, sodass PXE-Antwortoptionen dynamisch bereitgestellt werden können. Was getan werden kann, hängt vom verwendeten DHCP-Dienst ab.

Dies ist eine Beispielkonfiguration für isc-dhcp-serverden DHCP-Dienst. Sie bietet PXE-Clients einen anderen Pool. Sie bietet nicht die gewünschten separaten Subnetze, kann aber angepasst werden.

class "pxeclient" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    filename "pxelinux.0";
}

subnet 192.168.1.0 netmask 255.255.255.0
{
    option routers 192.168.1.1;
    next-server 192.168.1.1;
    max-lease-time 3600;

    pool {
        range 192.168.1.100 192.168.1.109;
        allow members of "pxeclient";
        }

    pool {
        range 192.168.1.110 192.168.1.119;
        allow unknown-clients;
        }
}

Ein weiterer gängiger DHCP-Dienst ist dnsmasq. Dies ist eine Beispielkonfiguration, die dasselbe wie oben tut.

log-dhcp
dhcp-option=3,192.168.1.1
dhcp-match=set:pxe,60,PXEClient
dhcp-boot=tag:pxe,pxelinux.0,server,192.168.1.1
dhcp-range=tag:pxe,192.168.1.100,192.168.1.109,255.255.255.0,1h
dhcp-range=tag:!pxe,192.168.1.110,192.168.1.119,255.255.255.0,1h

Weitere interessante Themen sind

  • PXE-Antwortoptionen basierend auf der PXE-Clientarchitektur (z. B. BIOS vs. UEFI)
  • ProxyDHCP-Dienst ( dnsmasqunterstützt diese Funktion)

Hilfreiche Links

verwandte Informationen