是基于Netfilter基本架构实现的一个可扩展的数据报高级管理系统或核外配置工具,利用table、chain、rule三级来存储数据报的各种规则。Netfilter-iptables由两部分组成,一部分是Netfilter的"钩子",另一部分则是知道这些钩子函数如何工作的一套规则--这些规则存储在被称为iptables的数据结构之中。钩子函数通过访问iptables来判断应该返回什么值给Netfilter框架。

 

iptables的结构:

 

iptables 将数据包目的地址换成另外的 iptables修改数据包内容_源地址

4张表):
    raw:高级功能,如:网址过滤。
    mangle:数据包修改(QOS),用于实现服务质量。
    nat:地址转换,用于网关路由器。
    filter:包过滤,用于防火墙规则。 (默认)

5条链):
    INPUT链:处理输入数据包。
    OUTPUT链:处理输出数据包。
    PORWARD链:处理转发数据包。
    PREROUTING链:用于目标地址转换(DNAT)。
    POSTOUTING链:用于源地址转换(SNAT)。

  动作包括:
    ACCEPT:接收数据包。
    DROP:丢弃数据包(无返回值)。
    REJECT:拒绝(有返回值)。
    SNAT:源地址转换。
    DNAT:目标地址转换。 
    LOG:日志记录。

 

iptables命令输入格式:

 



iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作



 

语法格式:

iptables(选项)(参数)

选项:

-t <表>:指定要操纵的表;(没有这个 "-t <table>"参数的话,默认使用 “filter”表!)

-A:向规则链中添加条目;

-D:从规则链中删除条目;

-I:向规则链中插入条目;

-R:替换规则链中的条目;

-L:显示规则链中已有的条目;

-F:清楚规则链中已有的条目;

-h:显示帮助信息;

-p:指定要匹配的数据包协议类型;

-s:匹配来源地址IP/MASK,加叹号"!"表示除这个IP外;

-j<目标>:指定要跳转的目标;

-i<网络接口>:指定数据包进入本机的网络接口;

-o<网络接口>:指定数据包要离开本机所使用的网络接口。

-m <模块名> <匹配该模块下的某一项> : 使用扩展模块来进行数据包的匹配


删除已添加的iptables规则:



1 将所有iptables以序号标记显示,执行:
2 iptables -L -n --line-numbers
3 
4 比如要删除INPUT里序号为8的规则,执行:
5 iptables -D INPUT 8



 

实例:



1 iptables -I INPUT -p tcp --dport 80 -j ACCEPT   (这里没有  -t <table>,默认为“-t filter”)
2 iptables -A INPUT -p tcp --dport 22:25 -j ACCEPT #允许访问22--25之间的端口
3 iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令
4 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #使用模块 “state” 下的 “--state” 规则,允许已建立的或相关连的通行