Estou tentando capturar e processar (em um aplicativo analítico de terceiros) pacotes DHCP da sessão ERSPAN, mas não consigo fazer isso. Existe uma interface PHY que recebe tráfego ERSPAN e uma interface do tipo erspan para obter pacotes desencapsulados (ip link add inspan type erspan seq key 10 local 10.171.165.65 erspan_ver 1)
Estou usando nftables para combinar e manipular a regra mais fácil:
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
}
}
mostra SOMENTE pacotes de transmissão (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)
enquanto TODOS os pacotes unicast (presentes no tráfego ERSPAN encapsulado em PHY) estão faltando neste rastreamento, como se tivessem consumido (e descartado) em algum lugar entre PHY e inspan.
Observe que TUDO O RESTO aparece no inspan (ao procurar usando tcpdump) - qualquer outro TCP, UDP, etc, EXCETO DHCP uincast e não depende das configurações promisc de todas as interfaces da cadeia.
O sistema parece estar limpo. Este é o Ubuntu 22.04, mas sem nenhum servidor DHCP, clientes DHCP também, netplan, ifupdown e outras coisas relacionadas ao DHCP; systemd-networkd completamente desabilitado (para fins de teste, estou configurando a rede manualmente).
Alguma idéia de onde os pacotes DHCP unicast foram perdidos? Para mim, parece que algo no kernel captura esses pacotes e os descarta, já que eles não são direcionados para este host.
Obrigado.