iptables功能介绍

iptables功能介绍

ID:37914918

大小:286.50 KB

页数:13页

时间:2019-06-02

iptables功能介绍_第1页
iptables功能介绍_第2页
iptables功能介绍_第3页
iptables功能介绍_第4页
iptables功能介绍_第5页
资源描述:

《iptables功能介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、iptables功能说明一、Netfilter介绍:netfilter是由RustyRussell提出的Linux2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(NetworkAddressTranslation,NAT),以及基于用户及媒体访问控制(MediaAccessControl,MAC)地址的过滤和基于状态的过滤、包速率限制等。Netfilter在ipv4中的结构:Hook1:NF_IP_PREROUTING、Hook2:NF_IP_LOCAL_INH

2、ook3:NF_IP_FORWARD、Hook4:NF_IP_POST_ROUTINGHook5:LOCAL_OUT二、iptables的介绍:Iptables是与Linux内核集成的IP信息包过滤系统。如果Linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。netfilter/iptablesIP信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这

3、些表集成在Linux内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。  虽然netfilter/iptablesIP信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter和iptables组成。  netfilter组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。  iptables13组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。Iptables结构图:Filter表:Fi

4、lter表不会对数据报进行修改,而是对数据进行过滤。它是通过钩子函数NF_IP_POSTROUTING、NF_IP_PREROUTING、NF_IP_LOCALOUT接入netfilter框架。因此对于任何一个数据报只有一个地方对其进行过滤。Nat表:Nat表监听三个netfilte钩子函数:NF_IP_PREROUTING、NF_IP_POSTROUTING、NF_IP_LOCALOUT。NF_IP_PREROUTING实现对需要转发的数据报的源地址进行地址转换,NF_IP_POSTROUTING则对需要转发的数据报的目的地址进行转换,NF_IP_

5、LOCALOUT实现对于本地数据报的目的地址的转换。Nat表与filter表不同,只有新连接的第一个数据报将遍历表格,而随后的数据报将根据第一个数据报的结果进行同样的转换处理。Mangle表:Mangle表在NF_IP_PREROUTING、NF_IP_LOCALOUT钩子中进行注册。使用mangle表可以实现对数据报的修改或给数据报附上一些带外数据报。如mangle表支持修改TOS位及设置skb的nfmard字段。13数据包在iptables中的路径图:13三、Iptables原理分析:Iptables的主要函数:intmain(intargc,c

6、har*argv[])//主函数intdo_command()//命令行处理*handle=iptc_init(*table);//从内核获取表的规则快照list_entries//显示规则在分析iptables工作流程时,以一条iptabls命令的执行来分析Iptables的代码。假设要下的规则为:iptabls–AINPUT–ieth0–ptcp--syn–s10.0.0.0/8–d10.1.28.184–jACCEPT该规则是将源地址段在10.0.0.0/8范围之内的主机发送的SYN包,接受的网口为eth0,且目的地址为10.1.28.184的

7、,执行ACCEPT以下是执行该条命令时,iptables的流程分析。(一)、命令行的入口intmain(intargc,char*argv[])(iptables-standalone.c)整个iptables命令行的入口。该函数设置了默认的table=”filter”,即当命令行中没有-t选项是,就使用默认的filter表。同时还初始化了该应用程序的名字,版本号等。#ifdefNO_SHARED_LIBSinit_extensions();#endif以上代码为没有定义共享库的话,要执行init_extensions()。这里我们假设不使用共享库,

8、所以调用该函数。该函数实在执行make的时候extensions/自动生成的initext.c中的函数。在该

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。