关于Netfilter 对APR 数据包hook点的疑问

发布于 2022-10-15 09:27:53 字数 3377 浏览 26 评论 0

不明白Netfilter 对APR 时hook时挂接点的设置?
netfilter一共有5个挂接点,但是对AF_INET family ,对ARP的没发现有说明?
钩子名称                              调用时机  
NF_IP_PRE_ROUTING                完整性校验之后,路由决策之前
NF_IP_LOCAL_IN                         目的地为本机,路由决策之后
NF_IP_FORWARD                         数据包要到达另外一个接口去
NF_IP_LOCAL_OUT                        本地进程的数据,发送出去的过程中
NF_IP_POST_ROUTING        向外流出的数据上线之前

这是open source NOarp设置的hook点,按道理说一个是挂接在NF_IP_PRE_ROUTING和NF_IP_POST_ROUTING 这两个地方;
但是NF_ARP_IN和NF_ARP_OUT是这两个吗???
/*************************************************************************************************/
/* Hooks Table
**************************************************************************************************/
static struct nf_hook_ops noarp_nf_ops_in =
   {{ NULL, NULL }, noarp_infilter, NF_ARP, NF_ARP_IN, 0};

static struct nf_hook_ops noarp_nf_ops_out =
   {{ NULL, NULL }, noarp_outfilter, NF_ARP, NF_ARP_OUT, 0};

The (idealized) IPv4 traversal diagram looks like the following:

netfilter architecture:

A Packet Traversing the Netfilter System:

   --->[1]--->[ROUTE]--->[3]--->[4]--->
                 |                          ^
                 |                           |
                 |                    [ROUTE]
                 v                          |
                [2]                      [5]
                 |                          ^
                 |                          |
                 v                         |
                  [ Local process]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

谁对谁错谁最难过 2022-10-22 09:27:54

netfilter 中对PF_INET和NF_ARP使用不同的hook点。 对于NF_ARP  hook点是在nf_hooks[NF_ARP][hook]上面

双马尾 2022-10-22 09:27:54

回复 2# linuxxtz

    但是netfilter提供只要那几个hook点,ARP也应该是挂到这些点上吧?
难道还是其他地方?

请各位指点,多谢了!

私藏温柔 2022-10-22 09:27:54

回复 3# chary8088

netfilter是一个框架,它支持arptables, iptables, ipv6tables, ebtables。这些不同协议的hook点是不同的,你说的NF_IP_* hook点对应的是iptables的hook。 netfilter所有的hook都挂在 nf_hooks, nf_hooks是二维数组,定义:struct list_head nf_hooks[NPROTO][NF_MAX_HOOKS]; arptables关注的是nf_hooks[NF_ARP][]上的hook,这些hook点挂在下面的链上
#define NF_ARP_IN   0
#define NF_ARP_OUT  1
#define NF_ARP_FORWARD  2

逐鹿 2022-10-22 09:27:54

非常感谢LS,那请问有ARP hook点的图吗?
那ARP是挂接那个地方?就是数据包流的那些点?
多谢
多谢

猫瑾少女 2022-10-22 09:27:54

回复 5# chary8088

    arptables的NF_ARP_IN是在接收arp,NF_ARP_OUT是在本机发送arp时, NF_ARP_FORWARD是在网桥模式下转发的arp。LZ可以跟踪一下源代码

习ぎ惯性依靠 2022-10-22 09:27:54

2.4 的内核 好像只有 in和out,没有arp_forward的挂勾点,那应该怎样捕捉转发的arp包?

泅人 2022-10-22 09:27:54

回复 7# ogmw

2.4 的内核 好像只有 in和out,没有arp_forward的挂勾点,那应该怎样捕捉转发的arp包?

Why not port to 2.6/3.x kernel?

   

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文