nftables - 수신 체인 없이 레이어 2 브로드캐스트(DHCP)를 전달합니까?

nftables - 수신 체인 없이 레이어 2 브로드캐스트(DHCP)를 전달합니까?

나는 지금조사Docker 브리지 뒤에 DHCP 서버를 설정합니다. 내 docker 브리지가 을(를) 사용하고 있습니다 . 들어오는 요청을 브리지된 네트워크로 docker compose전달하는 방법을 찾고 있습니다 . 확인하는 데 사용할 계획인 DHCPDISCOVERIPS가 모드로 설정되어 있습니다.NFQUEUE변화*) 일부 DHCP 패킷. 체인이나 체인 queue num에서는 사용이 불가능해 보입니다 .ingressegress

체인 fwd에서 사용할 수 있다는 것을 알고 있지만 이로 인해 두 가지 문제가 발생합니다.ingress

  • 패킷 fwd에드는NF_STOLEN 중요성더 이상 통과가 발생하지 않아 패킷이 IPS로 전송되지 않습니다.
  • fwd규칙과 ingress체인에는 명명된 NIC가 필요합니다. Docker는 이러한 인터페이스를 동적으로 제공하므로 이는 깔끔한 솔루션처럼 보이지 않으며 나중에 테이블과 체인을 추가해야 하는 오버헤드를 추가합니다.

이를 위해 다음을 시도했습니다.

table inet nat {
    chain prerouting {
        type nat hook prerouting priority -100; policy accept;

        ether daddr ff:ff:ff:ff:ff:ff udp sport 68 ip daddr 255.255.255.255 dnat to 172.25.10.5;
    }
}

그리고

table netdev filterearly_lan {
    chain ingress {
        type filter hook ingress device enp1s0.10 priority -500; policy accept;
    
        ether daddr ff:ff:ff:ff:ff:ff udp sport 68 ip daddr set 172.25.10.5;
    }
}

그러나 의 출력에는 아무 것도 나타나지 않는 것 같습니다 tcpdump -i br-a039f83f0bc5 port 67 and port 68 or arp -nne.

NIC를 지정하지 않고 이런 종류의 전달을 수행할 수 있습니까? 감사해요

* nftables는 패킷 깊숙한 곳에 도달할 수 없으므로 DHCP 서버 IP(옵션 54) 필드를 변경합니다.

관련 정보