netfilter(1)

      本文参考了http://blog.chinaunix.net/uid-23069658-id-3160506.html和http://blog.chinaunix.net/uid-23069658-id-3163999.html作者的思想,对最近的工作做个梳理。

1.大致模型:


2.上图中涉及到的上层协议,应该是网络层及以上,下图为内核和用户空间的交互大致过程:


3.内核中默认维护了三张表(其实是四张,还有一个名为raw的表很少被用到,这里不对其进行分析介绍了)filternatmangle

 1)、filter

    该表是整个过滤系统中真正起“过滤”作用的地方。所有对数据包的过滤工作都在这个表里进行,也就是说用户如果需要对某种类型的数据包进行过滤拦截,那么最好在这个表中进行操作。filter表会在NF_IP_LOCAL_INNF_IP_FORWARDNF_IP_LOCAL_OUT三个hook点注册钩子函数,也就是说所有配置到filer表中的规则只可能在这三个过滤点上进行设置。

2)、nat

    主要用于DNATSNAT和地址伪装等操作。用于修改数据包的源、目的地址。目前版本的内核中nat表监视四个hook点:NF_IP_PRE_ROUTINGNF_IP_LOCAL_IN/OUTNF_IP_POST_ROUTING。但在真正的实际应用中,我们一般仅需要在nat表的PREROUTINGPOSTROUTING点上注册钩子函数。该表有个特性:只有新连接的第一个数据包会经过这个表,随后该连接的所有数据包将按照第一个数据包的处理动作做同样的操作,这种特性是由连接跟踪机制来实现的。

  3)、mangle

     该表主要用于对数据包的修改,诸如修改数据包的 TOS TTL 等字段。同时该表还会对数据包打上一些特殊的标签以便结合 TC 等工具,实现诸如 Qos 等功能。该表监视所有的 hook 点。

4.我们通常用iptables添加规则时使用的结构:


 Netfilter 中规则是顺序存储的,一条rule规则主要包括三个部分:

  • ipt_entry:标准匹配结构,主要包含数据包的源、目的IP,出、入接口和掩码等;
  • ipt_entry_match:扩展匹配。一条rule规则可能有零个或多个ipt_entry_match结构;
  • ipt_entry_target:一条rule规则有且仅有一个target动作。就是当所有的标准匹配和扩展匹配都符合之后才来执行该target。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值