一 概述:
(一)功能: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:
2.sudo iptables -t filter -A INPUT -j ACCEPT -p tcp -s 10.3.8.1 -d 10.3.8.2:
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 //还原