dhclient -v 출력에서 ​​LPF 및 소켓/폴백은 무엇입니까?

dhclient -v 출력에서 ​​LPF 및 소켓/폴백은 무엇입니까?

다음은 해당 명령의 일부 샘플 출력입니다.

$ 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)

"LPF" 또는 "소켓/대체"가 무엇인지에 대한 문서를 찾을 수 없습니다.
좀 더 자세히 설명해주시고, 어디서 더 알아볼 수 있는지 알려주실 수 있나요?

링크https://www.isc.org/software/dhcp/별로 도움이 되지 않았습니다.

답변1

분명히 LPF는 Linux 패킷 필터를 나타냅니다.https://gitlab.isc.org/isc-projects/dhcp/-/blob/master/common/lpf.c

다른 맥락에서는 다음으로도 알려져 있습니다.Linux 소켓 필터링 또는 Berkeley 패킷 필터.

DHCP 클라이언트는 브로드캐스트 UDP 패킷을 보내고 받을 수 있어야 하지만 네트워크 인터페이스에는 아직 구성된 IP 주소가 있을 필요가 없습니다. 또한 둘 이상의 시스템이 있는 인터페이스가 아니라 패킷이 수신된 특정 네트워크 인터페이스에 네트워크 구성을 할당하기 위해 패킷이 어떤 인터페이스를 통과할지 신경써야 합니다.

Linux의 LPF와 같은 패킷 필터 API는 DHCP 소프트웨어가 OS의 네트워크 스택에 다음과 같이 알리는 가장 유연하고 효율적인 방법입니다. "내 네트워크 트래픽 요구 사항이 약간 특이하기 때문에 원시 패킷 소켓을 사용하겠습니다. 하지만 여전히 사본을 받고 싶지 않습니다.패킷 하나하나네트워크 인터페이스를 통해 도착하는 것은 특정 포트 번호의 UDP 패킷일 뿐입니다."

LPF 또는 유사한 패킷 필터 API를 사용할 수 없는 경우 DHCP 소프트웨어는 표준 네트워크 소켓 API 및 다양한 확장, 특히 소켓 옵션에 의존해야 합니다. 그러나 이는 ISC DHCP 제품군에서 지원하는 모든 운영 체제에서 균일하게 지원되지 않으므로ISC DHCP의 소켓 코드는 다소 복잡합니다.그리고 #ifdefs로 가득 차 있습니다.

사용 가능한 패킷 필터 API나 특정 소켓 옵션이 없는 경우 호스트에 정확히 하나의 네트워크 인터페이스가 있는 경우에만 DHCP 제품군이 올바르게 작동할 수 있습니다.

#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

패킷 필터 API가 사용되는 경우 ISC DHCP 제품군도대체 소켓표준 네트워크 소켓 API를 사용합니다. 수신 측에서 폴백 소켓은 도착하는 트래픽을 모두 삭제합니다. 아마도 일부 패킷 필터 API는복사그리고 일반 소켓이 있어야 OS가 DHCP에 사용되는 UDP 포트가 닫혀 있다고 생각하지 않고 수신된 유니캐스트 DHCP 패킷에 대해 ICMP 오류 메시지가 전송되도록 할 수 있습니다(예: 기존 활성 패킷 새로 고침). 임차권).

송신측에서는 폴백 소켓의 사용이 덜 명확합니다. 다른 사람이 더 많은 것을 알고 있다면 이 답변을 편집하거나 직접 추가하세요.

관련 정보