iptables深入解析:filter篇.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
iptables深入解析:filter篇.doc

之前大致写过iptables即netfilter的基本框架,在安全领域用到的比较多,一般小的设备防火墙,也有自己开发的比如思科的ACL,简单的包过滤什么的,都可以支持,但是它最大的缺点就是影响性能,或许我们需要借鉴tcpdump/wireshark的机制(它们都包含了对报文的解析) ,现在流行的dpi 什么的, 甚至工控领域也用到了。虽然它没有那么完美,但是框架比较好,而我们可以去改进和定制它. 参考:iptables1.4.21 kernel 3.8.13 iptables的机制分两个部分: 1. 用户空间的iptables工具 2. 内核netfilter机制的支持 它分ipv4部分和ipv6部分,这里只分析ipv4部分.代码目录(内核): net/ipv4/netfilter net/ipv6/netfilter net/netfilter 这里先分析内核部分。 我们都知道netfiter分四个基本模块 1. Ct 链接追踪 2. Filter 过滤 3. Nat 地址转换 4. Mangle 修改数据报文 CT是基础核心模块是状态防火墙和nat的基础. 而其他模块会维护一个全局表,也即我们用iptables命令的时候需要指定的表。 它们工作在内核的五个钩子点上,即链的概念. 对于上面的模块在实际代码中是相对独立的初始化的: net/ipv4/netfilter/ 1.iptable_filter.c –iptable_filter_init 2. iptable_mangle.c –iptable_mangle_init 3.iptable_nat.c –iptable_nat_init 4.iptable_raw.c –iptable_raw_init 5.iptable_security.c —iptable_security_init 而关于链接追踪它是其他的基础,比较特殊。 Net/netfilter/nf_conntrack_core.c nf_conntrack_init 又被nf_conntrack_standalone.c C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 static int nf_conntrack_net_init(struct net *net) { ????int ret; ? ????ret = nf_conntrack_init(net); ????if (ret 0) ????????goto out_init; ????ret = nf_conntrack_standalone_init_proc(net); ????if (ret 0) ????????goto out_proc; ????net-ct.sysctl_checksum = 1; ????net-ct.sysctl_log_invalid = 0; ????ret = nf_conntrack_standalone_init_sysctl(net); ????if (ret 0) ????????goto out_sysctl; ????return 0; ? out_sysctl: ????nf_conntrack_standalone_fini_proc(net); out_proc: ????nf_conntrack_cleanup(net); out_init: ????return ret; } ? static void nf_conntrack_net_exit(struct net *net) { ????nf_conntrack_standalone_fini_sysctl(net); ????nf_conntrack_standalone_fini_proc(net); ????nf_conntrack_cleanup(net); } ? static struct pernet_operations nf_conntrack_net_ops = { ????.init = nf_conntrack_net_init, ????.exit = nf_conntrack_net_exit, }; ? static int __init nf_conntrack_standalone_init(void) { ????return register_pernet_subsys(nf_conntrack_net_ops); } register_pernet_subsys这个函数不多说,它是内核命名空间

文档评论(0)

zhangningclb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档