一 概述:

(一)功能:iptables指令设置、维护和检查linux内核的IP地址过滤规则的工具(即linux提供给用户的内核防火墙配置工具)。注意:与ebtables区分,ebtables在iptables前面,ebtables是针对以太网数据帧的。

*linux引入了新的包处理引擎,称为:Netfilter,同时还有一个管理它的命令行工具即iptables。

*iptables对网络上的数据包有次序的施加规则“链”。链的结合构成了“表(tables)”,用于处理特定类型的流量。

*iptables定义不同的规则表,每个规则表有很多内置的规则链(内置链和自定义链),每个规则链包含一系列能够匹配IP数据包的规则条目,每个规则条目都包含了对匹配的数据包的处理方式。对数据包的处理方式称为目标(target)。

*一旦某个包匹配了一条规则,就不再用其他规则来检查它。

*注意区分:规则表、规则链、规则条目、目标。

*相关命令:iptables-save、iptables-restore


(二)iptables定义不同的规则表:

1.filter表(默认的iptables表):用于过滤IP数据包。

*fileter包含三个规则链(chain):内核处理的每个包都要经过3个链中的一个。

~INPUT链:处理那些发送给本机的数据包。

~FORWARD链:处理那些被路由出去的数据包。

~OUTPUT链:本机产生向外发送的数据包。


2.nat表:用于配置NAT功能。

*nat表包含的3个规则链:

~PREROUTING链:altering packets as soon as they come in.

~OUTPUT链:altering locally-generated packets before routing.

~POSTROUTING链:altering packets as they are about to go out.


3.mangle表:可以修改或者改变不被包过滤和NAT处理的网络包的内容。

*mangle表包含的5个规则链:


~PREROUTING链。

~INPUT链。

~OUTPUT链。

~POSTROUTING链。


~FORWARD链。


(三)规则目标:

1.规则目标包括:

*ACCEPT:匹配这条规则的数据包可以通过。
*DROP:丢弃数据包。
*REJECT:丢弃数据包,返回一个ICMP错误信息。
*RETURN:返回到先前的调用规则处,类似于子函数调用中的return。
*QUEUE:通过一个内核模块把包交给本地应用程序。
*REDIRECT:把包分给一个代理,而不是让它们直接通过。
*LOG:提供一种跟踪数据包的简单路径。
*ULOG:提供范围更广的日志记录信息。
*MIRROR:在发送包之前交换源IP地址和目的地址。


二 iptables的使用(需要root权限):

(一)常用选项:

*-t <表名>:指定要管理的表。可以是filter、nat、mangle或raw,默认为filter。
*-A:向链中追加规则条目。//格式:sudo iptables -A 链名字(例如FORWORD) -i eth0 -p ANY -j ACCEPT.
*-D:从链中删除规则条目。
*-I:向链中插入规则条目。
*-L:显示链中定义的记录条目。
*-R:替换链中的规则条目。
*-Z:将链中的数据包计数和字节计数清零。
*-N:用户自定义的链。
*-P:定义链中的默认目标。建立DROP作为链的默认目标。
/*与规则条目相关*/
*-p <协议>:指定协议类型。可以是TCP、UDP、ICMP、ALL(表示所有协议),可以在协议前加!表示否定。
*-s <源地址>:指定源IP地址。
*-d <目的地址>:指定目的IP地址。
*--sport<端口号>:匹配源端口。
*--dport<端口号>:匹配目的端口。
*--icmp-type <type>:匹配ICMP类型代码。
*-i<网络接口>:指定数据包进入的网络接口。只能用在"INPUT"、"FORWARD"、"PREROUTING"链中。
*-j <目标>:指定要跳转的目标。目标可以是内置的目标(ACCEPT、DROP、QUEUE等)和同一个表中的自定义链。
*-o <网络接口>:指定数据包离开的网络接口。只能用在“INPUT”,“OUTPUT”,“FORWARD","POSTROUTING"链中,可以在网络接口前+‘!’否定。


(二)使用情况:

1.sudo iptables -t filter -L:

ibtables ebtables 区别_网络接口

2.sudo iptables -t filter -A INPUT -j ACCEPT -p tcp -s 10.3.8.1 -d 10.3.8.2:

ibtables ebtables 区别_网络接口_02

3.iptables -t filter -A INPUT -s 192.12.12.12 -j DROP//禁止192.12.12.12访问本机。


三 iptables-save和iptables-restore:

(一)iptables-save:输出linux系统内核中iptables的当前配置。

1.常用选项:

*-t <表名>:指定要到处配置信息的表。

2. 默认iptables-save在终端输出iptables的配置信息,可以使用重定向将输出信息存放到指定的文件。iptables输出的信息可由iptables-restore指令进行还原,重新加载到内核。

(二)iptables-restore:还原由iptables-save备份的iptables配置信息。

(三)使用方法:

*iptables-save -t filter > txt //备份
*iptables-restore < txt //还原