Netfilter挂钩中的NF_DROP和NF_STOLEN有什么区别?

米拉德·哈哈维(Milad Khajavi)

请参阅以下netfilter标头:http : //lxr.free-electrons.com/source/include/uapi/linux/netfilter.h我们有:

  9 /* Responses from hook functions. */
  10 #define NF_DROP 0
  11 #define NF_ACCEPT 1
  12 #define NF_STOLEN 2
  13 #define NF_QUEUE 3
  14 #define NF_REPEAT 4
  15 #define NF_STOP 5
  16 #define NF_MAX_VERDICT NF_STOP

在这里,我找到了这一段:

NF_DROP返回代码意味着应完全丢弃此数据包,并释放为其分配的所有资源。NF_ACCEPT告诉Netfilter,到目前为止,该数据包仍然可以接受,并且应该移至网络堆栈的下一个阶段。NF_STOLEN很有趣,因为它告诉Netfilter“忘记”该数据包。这告诉Netfilter,挂钩函数将从此处开始处理此数据包,而Netfilter应该丢弃对其的所有处理。但是,这并不意味着释放该分组的资源。数据包及其相应的sk_buff结构仍然有效,只是hook函数从Netfilter手中夺走了数据包的所有权。NF_REPEAT请求Netfilter再次调用hook函数。

但是我不知道discardingforgetting数据包之间关于NF_DROP的区别是什么NF_STOLE

塔尔乔什

本文档全面概述了netfilter的工作原理以及原因。

我的理解是,返回NF_DROP告诉netfilter丢弃数据包,而返回NF_STOLEN基本上意味着您从现在起就对数据包负责:内核仍然在其内部表中包含该数据包,现在您负责告诉内核在完成对数据包的所有其他操作后将其清理干净。

对于大多数应用程序,您将需要使用NF_DROP而不是NF_STOLEN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章