Linux에서 DHCP 유니캐스트 패킷 처리

Linux에서 DHCP 유니캐스트 패킷 처리

ERSPAN 세션에서 DHCP 패킷을 잡아서 처리하려고(타사 분석 앱에서) 시도하고 있지만 그렇게 할 수 없습니다. ERSPAN 트래픽을 수신하는 PHY 인터페이스와 캡슐화 해제된 패킷을 얻기 위한 ersspan 유형 인터페이스가 있습니다(ip link add inspan type erspan seq key 10 local 10.171.165.65 erspan_ver 1)

나는 일치하고 처리하기 위해 nftables를 사용하고 있으며 가장 쉬운 규칙은 다음과 같습니다.

table netdev inspan {
  chain catch {
    type filter hook ingress device "inspan" priority filter ; policy accept;
    iifname "inspan" udp dport 67 counter meta nftrace set 1 accept
  }
}

브로드캐스트 패킷만 표시합니다(ip Daddr 255.255.255.255).

# nft monitor trace

trace id 6fd1132b inet filter input packet: iif "inspan" ether saddr 00:1a:64:33:8d:fa ether daddr ff:ff:ff:ff:ff:ff ip saddr 0.0.0.0 ip daddr 255.255.255.255 ip dscp cs0 ip ecn not-ect ip ttl 128 ip id 20986 ip protocol udp ip length 328 udp sport 68 udp dport 67 udp length 308 @th,64,96 0x1010600d5d272d200000000
trace id 6fd1132b inet filter input rule iifname "inspan" udp dport 67 counter packets 0 bytes 0 meta nftrace set 1 accept (verdict accept)

모든 유니캐스트 패킷(PHY의 캡슐화된 ERSPAN 트래픽에 존재)은 PHY와 inspan 사이 어딘가에서 소비(및 삭제)된 것처럼 이 추적에서 누락됩니다.

다른 모든 것(tcpdump를 사용하여 확인할 때)에는 DHCP uincast를 제외한 다른 모든 TCP, UDP 등이 표시되며 체인에 있는 모든 인터페이스의 promisc 설정에 의존하지 않습니다.

시스템이 깨끗한 것 같습니다. 이것은 Ubuntu 22.04이지만 DHCP 서버, DHCP 클라이언트, netplan, ifupdown 및 기타 DHCP 관련 항목이 없습니다. systemd-networkd가 완전히 비활성화되었습니다(테스트 목적으로 네트워킹을 수동으로 구성했습니다).

유니캐스트 DHCP 패킷이 손실된 아이디어가 있습니까? 나에게는 커널의 무언가가 이 호스트를 대상으로 하지 않기 때문에 이러한 패킷을 잡아서 삭제하는 것처럼 보입니다.

감사합니다.

관련 정보