Was sind LPF und Socket/Fallback in der Ausgabe von dhclient -v?

Was sind LPF und Socket/Fallback in der Ausgabe von dhclient -v?

Unten sehen Sie einige Beispielausgaben dieses Befehls:

$ sudo dhclient -v
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:15:5d:5a:e4:c5
Sending on   LPF/eth0/00:15:5d:5a:e4:c5
Listening on LPF/dummy0/6e:0b:72:f9:83:f0
Sending on   LPF/dummy0/6e:0b:72:f9:83:f0
Listening on LPF/bond0/82:a2:7e:03:69:19
Sending on   LPF/bond0/82:a2:7e:03:69:19
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x3115634c)
DHCPDISCOVER on dummy0 to 255.255.255.255 port 67 interval 3 (xid=0x1ab3dc37)
DHCPDISCOVER on bond0 to 255.255.255.255 port 67 interval 3 (xid=0xcea7a32d)

Ich konnte keine Dokumentation darüber finden, was „LPF“ oder „Socket/Fallback“ sind.
Könnten Sie bitte eine Erklärung geben und angeben, wo ich mehr darüber erfahren kann?

Der Linkhttps://www.isc.org/software/dhcp/hat nicht viel geholfen.

Antwort1

Anscheinend bezieht sich LPF auf Linux Packet Filter:https://gitlab.isc.org/isc-projects/dhcp/-/blob/master/common/lpf.c

In anderen Kontexten ist es auch bekannt alsLinux Socket Filtering oder Berkeley Packet Filter.

Ein DHCP-Client muss in der Lage sein, Broadcast-UDP-Pakete zu senden und zu empfangen, während die Netzwerkschnittstelle noch nicht unbedingt eine konfigurierte IP-Adresse hat. Außerdem muss er wissen, durch welche Schnittstelle die Pakete geleitet werden, um die Netzwerkkonfiguration der spezifischen Netzwerkschnittstelle zuzuweisen, auf der sie empfangen wurden, und nicht irgendeiner Schnittstelle auf einem System, das über mehrere Schnittstellen verfügt.

Eine Paketfilter-API wie LPF unter Linux ist die flexibelste und effizienteste Möglichkeit für die DHCP-Software, dem Netzwerk-Stack des Betriebssystems mitzuteilen: „Ich werde einen Raw Packet Socket verwenden, da meine Anforderungen an den Netzwerkverkehr etwas ungewöhnlich sind, aber ich möchte trotzdem keine Kopie erhalten vonjedes einzelne Paketdie über die Netzwerkschnittstelle ankommen - nur UDP-Pakete auf diesen bestimmten Portnummern."

Wenn LPF oder eine ähnliche Paketfilter-API nicht verfügbar ist, muss die DHCP-Software auf die Standard-Netzwerk-Socket-API und ihre verschiedenen Erweiterungen zurückgreifen - insbesondere auf Socket-Optionen. Diese werden jedoch nicht auf allen von der ISC DHCP-Suite unterstützten Betriebssystemen einheitlich unterstützt.Der Socket-Code von ISC DHCP ist ziemlich komplexund voller #ifdefs.

Wenn weder eine Paketfilter-API noch bestimmte Socket-Optionen verfügbar sind, funktioniert die DHCP-Suite möglicherweise nur dann ordnungsgemäß, wenn der Host genau eine Netzwerkschnittstelle hat:

#if !defined(SO_BINDTODEVICE) && !defined(USE_FALLBACK)
    /* Make sure only one interface is registered. */
    if (once) {
        log_fatal ("The standard socket API can only support %s",
               "hosts with a single network interface.");
    }
    once = 1;
#endif

Wenn eine Paketfilter-API verwendet wird, richtet die ISC DHCP-Suite auch eineFallback-Socketmit der Standard-API für Netzwerk-Sockets. Auf der Empfangsseite verwirft ein Fallback-Socket einfach den ankommenden Datenverkehr: Vielleicht erzeugt eine Paketfilter-API einenKopierendes eingehenden Datenverkehrs, und der reguläre Socket muss vorhanden sein, um sicherzustellen, dass das Betriebssystem nicht denkt, der für DHCP verwendete UDP-Port sei geschlossen, und so das Senden von ICMP-Fehlermeldungen für alle empfangenen Unicast-DHCP-Pakete verursacht (d. h. Aktualisierungen einer vorhandenen aktiven Lease).

Auf der Sendeseite ist die Verwendung eines Fallback-Sockets weniger offensichtlich. Wenn jemand anderes mehr weiß, kann er diese Antwort gerne bearbeiten oder seine eigene hinzufügen.

verwandte Informationen