1、iptables介绍
iptables是工作在linux内核空间的防火墙软件。具有非常强大的功能,可以实现自定义包过滤,源地址、目标地址、源端口、目标端口转换等。iptables会根据对数据包的分析来“比对”预先定义的规则内容进行匹配,若数据包与规则内容相同则进行相应的的动作处理,否则就继续下一条规则的比对;如果没有所匹配的规则,则iptables会执行默认策略。
2、iptables的表和链
iptables是由众多的表和链组成的,每个表中都有相应的链规则
filter表:实现数据包的过滤,是linux的默认表;
链名 | 功能 |
---|---|
INPUT | 主要是和进入linux主机的数据包相关 |
FORWARD | 实现数据包转发 |
OUTPUT | 主要与linux本机想要送出的数据包相关 |
nat表:用来实现源、目标地址的IP地址和端口的转换功能;
链名 | 功能 |
---|---|
PREROUTING | 在进行路由判断之前所要进行的规则 (DNAT) |
POSTROUTING | 在进行路由判断之后所要进行的规则(SNAT) |
OUTPUT | 与发送出去的数据包相关 |
mangle表:主要用来实现拆解报文,做出修改,封装报文;
链名 | 功能 |
---|---|
PREROUTING | 在进行路由判断之前所要进行的规则 (DNAT) |
INPUT | 主要是和进入linux主机的数据包相关 |
FORWARD | 实现数据包转发 |
OUTPUT | 主要与linux本机想要送出的数据包相关 |
POSTROUTING | 在进行路由判断之后所要进行的规则(SNAT) |
raw:主要用来实现关闭nat表上启用的连接追踪机制;
链名 | 功能 |
---|---|
OUTPUT | 主要与linux本机想要送出的数据包相关 |
POSTROUTING | 在进行路由判断之后所要进行的规则(SNAT) |
3、iptables的常用语法
查看规则:iptables [-t tables] [-L] [-nv]
-L:list,列出指定链上的所有规则;
-n:numberic,以数字格式显示地址和端口号;
-v:verbose,显示详细信息;-vv、-vvv
–line-numbers:显示规则编号;
-x:exactly,显示计数器计数结果的精确值;
[root@www ~]# iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
[root@www ~]#
[root@www ~]# iptables -L -n -vvv --line-numbers
Chain INPUT (policy ACCEPT 49 packets, 3276 bytes)
num pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 27 packets, 2908 bytes)
num pkts bytes target prot opt in out source destination
libiptc vlibxtables.so.10. 632 bytes.
Table `filter'
Hooks: pre/in/fwd/out/post = ffffffff/0/98/130/ffffffff
Underflows: pre/in/fwd/out/post = ffffffff/0/98/130/ffffffff
Entry 0 (0):
SRC IP: 0.0.0.0/0.0.0.0
DST IP: 0.0.0.0/0.0.0.0
Interface: `'/................to `'/................
Protocol: 0
Flags: 00
I