iptables -A INPUT -f -j DROP
但是在nftables中没有相同的东西。 有什么办法呢?
从Nftables维基或只是你可以使用ip frag-off 。 现在(在一些试验和错误之后),3个标志(保留的,DF,MF)被包括在3个最高位的该值中,并且必须被排除在testing之外,需要&操作。 所以这:
nft 'add rule ip filter input ip frag-off & 0x1fff != 0 drop'
会做…
…但是当加载nf_conntrack_ipv4(几乎总是)时,其特定的nf_defrag_ipv4部分以挂机优先级-400注册,并将重新组装所有片段。 这意味着之后的任何处理都不会看到任何碎片。 所以你的链条必须要优先考虑低于这个值的钩子。 这是一个完整的工作示例:
nft add table filter nft 'add chain filter predefrag { type filter hook prerouting priority -450; }' nft 'add rule ip filter predefrag ip frag-off & 0x1fff != 0 drop'
可以说,第一个数据包也是一个偏移量为0但是MF设置的片段。 所以也许0x1fff应该被replace为0x3fff来捕捉它。