nftables가 여러 인터페이스를 하나의 인터페이스에 복사하도록 만드는 방법

nftables가 여러 인터페이스를 하나의 인터페이스에 복사하도록 만드는 방법

내 홈 라우터에는 서로 다른 서브넷에 2개의 내부 인터페이스가 있고 Comcast 모뎀에 연결되는 외부 인터페이스가 있습니다. 각 패킷을 복사하고 싶습니다.입력하다각 인터페이스는 Zeek을 직접 사용할 수 있는 가상 인터페이스에 연결됩니다. 나생각하다이렇게 하면 Zeek에서 각 인터페이스를 개별적으로 모니터링할 때와 같이 중복 로그 없이 네트워크 트래픽을 포괄적으로 검사하는 데 도움이 됩니다.

이는 트래픽을 "dummy0"에 복사하는 동안:

nft add table netdev filter
nft add chain netdev filter ingress { \
type filter hook ingress device eth0 priority 0\; }
nft add rule netdev filter ingress dup to dummy0

다른 이더넷 장치에도 연결하도록 확장할 수 없는 것 같습니다. 이런 종류의 일에 대한 nftables 문서가 매우 드물다는 것을 알았으므로 제안해 주시면 감사하겠습니다.

답변1

이전 nftables/커널의 경우: netdev 기본 체인은 하나의 네트워크 장치에만 등록됩니다. 여러 인터페이스에 대한 트래픽을 복제해야 하는 경우 동일한 규칙을 사용하여 기본 체인을 다시 생성하고 다른 인터페이스에 등록하면 됩니다.

nft add table netdev filter
nft add chain netdev filter ingress0 '{ type filter hook ingress device eth0 priority 0; }'
nft add chain netdev filter ingress1 '{ type filter hook ingress device eth1 priority 0; }'
nft add rule netdev filter ingress0 dup to dummy0
nft add rule netdev filter ingress1 dup to dummy0

nftable로>= 0.9.3그리고 커널>= 5.5: 중복을 피하기 위해 동일한 netdev 기본 체인을 여러 장치에 등록할 수 있습니다.

nft add table netdev filter
nft add chain netdev filter ingress '{ type filter hook ingress devices = { eth0, eth1 } priority 0; }'
nft add rule netdev filter ingress dup to dummy0

관련 정보