Iptables的表链关系解析

 

Iptables的5条链分别是:

 

PREROUTING       路由前

INPUT                  发到本机某进程的报文

OUTPUT              本机某进程发出的报文

FORWARD          转发

POSTROUTING   路由后

 

Iptables的4张表:

 

filter        负责过滤工程,FW

nat          网络地址转换功能 network address translate

mangle    拆解报文,做出修改,并重新封装

raw         关闭nat表上启用的连接追踪机制

 

链表关系

PREROUTING       的规则可存在于:nat表、mangle表、raw表

INPUT          的规则可存在于:mangle表、filter表(nat表centos6没有,centos7有)

FORWARD       的规则可存在于:mangle表、filter表

OUTPUT          的规则可存在于:raw表、mangle表、nat表、filter表

POSTROUTING     的规则可存在于:mangle表、nat表

实际操作我们用的更多的是表链关系

表链关系(表中的规则可被哪些链使用)

raw          :PREROUTING、OUTPUT

mangle    :PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

nat         :PREROUTING、OUTPUT、POSTROUTING (INPUT链 centos7有,centos6没有)

filter      :INPUT、FORWARD、OUTPUT

用表示出来就是:

 

这个不用硬记,有方法的(iptables -t 表 -L)

 

当4张表出现在同一条链上的时候,优先级别是:

raw—>mangle—->nat—>filter

4张表只可能同时间出现在OUTPUT链上。

 

规则链名包括:

•   {C}INPUT链:处理输入数据包。

•   {C}OUTPUT链:处理输出数据包。

•   {C}PORWARD链:处理转发数据包。

•   {C}PREROUTING链:用于目标地址转换(DNAT),路由前。

•   {C}POSTOUTING链:用于源地址转换(SNAT),路由后。

 

 

动作包括:

•   {C}accept:接收数据包。

•   {C}DROP:丢弃数据包。

•   {C}REDIRECT:重定向、映射、透明代理。

•   {C}SNAT:源地址转换。

•   {C}DNAT:目标地址转换。

•   {C}MASQUERADE:IP伪装(NAT),用于ADSL。

•   {C}LOG:日志记录。

 

iptables里面的dport和sport

首先先来翻译一下dport和sport的意思:

dport:目的端口 

sport:来源端口 

初学iptables比较容易迷糊,但是我尽量用通俗的语言给你讲解。

 

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口

 

dport 和sport字面意思来说很好理解,一个是数据要到达的目的端口,一个是数据来源的端口。

但是在使用的时候要分具体情况来对待,这个具体情况就是你的数据包的流动行为方式。(INPUT还是OUTPUT)

比如你的例子:/sbin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT 

注意里面的INPUT参数,这个代表你的这条数据包的进行的 “进入” 操作! 

那么你的这条数据包可以这么描述: 

1.这是一条从外部进入内部本地服务器的数据。 

2.数据包的目的(dport)地址是80,就是要访问我本地的80端口。 

3.允许以上的数据行为通过。 

总和:允许外部数据访问我的本地服务器80端口。

再看第2条列子:/sbin/iptables -A INPUT -p tcp –sport 80 -j ACCEPT 

1.这是一条从外部进入内部本地服务器的数据。 

2.数据包的来源端口是(sport)80,就是对方的数据包是80端口发送过来的。 

3.允许以上数据行为。 

总结:允许外部的来自80端口的数据访问我的本地服务器。

input方式总结: dport指本地,sport指外部。

如果你的数据包是(OUTPUT)行为,那么就是另外一种理解方式: 

比如: 

/sbin/iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT 

1.这是一条从内部出去的数据。 

2.出去的目的(dport)端口是80。 

3.允许以上数据行为。

output行为总结:dport只外部,sport指本地。

正在加载评论...