- iptables & netfilter framework
- iptables : 对应于内核当中的每个match和target,用户态都提供一个对应的共享库用于实现对内核空间的模块的控制。iptables主要依靠sockopt 实现于netfilter框架的通信,对于netfilter将数据包传送给iptables的实现主要依靠netlink来实现用户态与内核态的通信, 其中iptables在2.6中更名为xtables。
- match(struct xt_match)
- iptables : 对应于内核当中的每个match和target,用户态都提供一个对应的共享库用于实现对内核空间的模块的控制。iptables主要依靠sockopt 实现于netfilter框架的通信,对于netfilter将数据包传送给iptables的实现主要依靠netlink来实现用户态与内核态的通信, 其中iptables在2.6中更名为xtables。
内核态的match模块主要用于实现对流经系统的数据包的匹配工作,该部分主要用于对数据包进行分析,找到满足条件的数据包,返回值为true表示匹配成功,否则进行链中下一规则的匹配。match过程中不应对数据包惊醒任何的改动;
return false and 置 *hotdrop = 1,系统将立即丢弃该数据包;
- target(struct xt_target)
return :
NF_ACCEPT
NF_DROP
NF_STOLEN
NF_QUEUE
NF_REPEAT
NF_STOP
XT_CONTINUE
- conntrack :跟踪流经系统的数据包的状态信息,通过对数据包连接状态的处理,就可以在根据连接的状态对连接中的后续数据包进行统一的处理;典型的连接状态清参看内核中nf_conntrack_ftp的实现。
struct nf_conn
union nf_conntrack_help
struct nf_conntrack_tuple
struct nf_conntrack_expect
nf_ct_conntrack_expect_related
- hook
- 内核推后执行任务机制
- kthread
- workqueue
- softirq
- tasklet
- hard interrupt
- 用户态<->内核态通信