iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilter
所以,根据上图,我们能够想象出某些常用场景中,报文的流向:
到本机某进程的报文:PREROUTING –> INPUT
由本机转发的报文:PREROUTING –> FORWARD –> POSTROUTING
由本机的某进程发出报文(通常为响应报文):OUTPUT –> POSTROUTING
一共有4张表5张链
PREROUTING 的规则可以存在于:raw表,mangle表,nat表。
INPUT 的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。
FORWARD 的规则可以存在于:mangle表,filter表。
OUTPUT 的规则可以存在于:raw表mangle表,nat表,filter表。
POSTROUTING 的规则可以存在于:mangle表,nat表。
raw 表中的规则可以被哪些链使用:PREROUTING,OUTPUT
mangle 表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT
1、查看filter表所有链
iptables -t filter -L -n
-t:指定表,filter,filter表为默认表,可不写
-L:列出
-n:添加行号
2、添加规则
iptables -t filter -A INPUT -j DROP -p tcp --dport 8081
-j DROP: 将表丢弃 -- dport: 指定8081端口 - p:指定TCP 协议
3、删除第一条规则
iptables -t filter -D INPUT 1
4、FORWARD
iptables -t filter -I FORWARD -j ACCEPT
5、OUTPUT
将发往192.168.0.144的TCP包全部丢弃
iptables -t filter -A OUTPUT -j DROP -p tcp -d 192.168.0.144
开放18086端口
iptables -I INPUT -p tcp --dport 18080 -j ACCEPT