是不是所有入站和出站数据包都要经过netfilter的所有hook?
即使没有在netfilter的hook上注册任何callback? 回复 1# superwujc启用了 netfilter 的话,且注册了对应 hook 的话,是需要走的。
回复 2# Godbach
非常感谢楼上,小弟菜鸟,谈一下自己的看法:
如果启用了netfilter的话,NF_HOOK()与三层与二层协议的处理函数之间是有交互操作的
因此启用netfilter相当于在数据包的必经之路上设置了路卡,注册在hook上的callback相当于路卡上的值班人员
但不论路卡上是否有人值班(是否注册了相应的callback),数据包都会到达路卡门前
若有,则数据包是否被允许通过,何时通过,以及按何种方式通过,都是路卡值班人员说了算
若没有,则数据包会直接通过路卡
简言之,启用netfilter的情况下,数据包一定经过hook点,而不论是否有callback
如有不对敬请指正,谢谢。 看一下ip_rcv 最后的return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, skb, dev, NULL,
ip_rcv_finish); 回复 4# breakCU
非常感谢,小弟正在学习
顺便问一下,有关内核源码实现的教程中,都提到了helper method/ helper function/ helper routine,例如获取L4,L3,L2首部的skb_transport_header(),skb_network_header(),skb_mac_header()
但是自己google了许久都没有找到内核 helper method的完整列表,说明文档等
kernel官网倒是提供了一份kernel API文档,但是具体点helper method并未提及
这样的话,在写内核模块的时候,无法确定具体的任务是否有特定的helper method,是不是要自己实现
难道只能在内核源码中寻找,然后逐个尝试?
请指点一下这个问题,谢谢。
看协议栈代码,看UNIX/LINUX网络编程+LINUX内核API完全参考手册。反正是RFSC!回复 5# superwujc
回复 6# breakCU
RFSC啥意思?
回复 6# breakCU
好吧,Read the F*cking Source Code
多谢。
我靠,网上有很多大神对netfilter的架构的分析文章,找找看看 学习了
页:
[1]