一.概述
iptables利用数据包过滤机制,根据数据包的分析资料“比对”预先定义的规则,若数据包数据与规则内容相同则进行相应的动作,否则比对下一条规则,类似于网络设备中的ACL。
二.iptables的表格(table)与链(chain)
1.Linux的iptables至少有三个table:包括管理本机进出的Filter、管理后端主机(防火墙内部的其他计算机)的NAT、管理特殊标志使用的Mangle(较少使用)。
2.Filter(过滤器):只要跟进入Linux主机的数据包有关,是默认的table;
INPUT:主要与想要进入linux主机的数据包有关;
OUTPUT:主要与linux主机所要送出的数据包有关;
FORWARD:与linux本机无关,它可以传递数据包到后端的计算机中,与NAT的table相关性较高。
3.NAT(地址转换):主要用来进行来源与目的地IP或port的转换,主要与linux主机后的局域网内计算机有关;
PREROUTING:在进行路由判断前所要进行的规则(DNAT/REDIRECT);
POSTROUTING:在进行路由判断后所要进行的规则(SNAT/MASQUERADE);
OUTPUT:与发送出去的数据包有关。
4.Mangle(破坏者):主要与特殊的数据包的路由标志有关;
PREROUTING:在进行路由判断前所要进行的规则(DNAT/REDIRECT);
POSTROUTING:在进行路由判断后所要进行的规则(SNAT/MASQUERADE);
INPUT:主要与想要进入linux主机的数据包有关;
OUTPUT:主要与linux主机所要送出的数据包有关;
三.本机的iptables语法
1.规则的查看和清除:
iptables [-t tables] [-L] [-nv]
-t:后跟table,如nat或filter,默认使用filter;
-L:列出目前的table规则;
-n:不进行IP与HOSTNAME的反查,显示信息的速度会快很多;
-v:列出更多信息,包括通过该规则的数据包总位数,相关的网络接口等。
例:
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
INPUT_direct all -- 0.0.0.0/0 0.0.0.0/0
INPUT_ZONES_SOURCE all -- 0.0.0.0/0 0.0.0.0/0
INPUT_ZONES all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
FORWARD_direct