iptables 转发顺序转发上网

raw表: 确定是否对数据包进行状态跟蹤
mangle表: 为数据包设置标记
nat表:修改数据包中的源,目标IP地址或端口
filter:确定是否放行该数据包(过滤,这是默认的表类型)
PREROUTINT: 在进行路由选择前处理数据包
OUTPUT:处悝出站的数据包

a.没有指定规则表,则默认是filterb.没有指定规则链则指表内所有规则链c.规则链中匹配规则时,会依次检查,匹配即停止(LOG除外)

-A 规则链末尾插入新规则 -I num 规则链头部插入新规则 -i 网卡名称 匹配从这块网卡流入的数据 -o 网卡名称 匹配从这块网卡流出的数据

3.snat(源地址转换技术)和dnat(目标地址转換技术)

本机80端口转发到81端口:

  iptables 转发顺序执行规则时是从從规则表中从上至下顺序执行的,如果没遇到匹配的规则就一条一条往下执行,如果遇到匹配的规则后那么就执行本规则,执行后根據本规则的动作(accept, reject, log等)决定下一步执行的情况,后续执行一般有三种情况

  1。一种是继续执行当前规则队列内的下一条规则比如执行過Filter队列内的LOG后,还会执行Filter队列内的下一条规则

  2。一种是中止当前规则队列的执行转到下一条规则队列。比如从执行过accept后就中断Filter队列内其它规则跳到nat队列规则去执行

  3。一种是中止所有规则队列的执行

  iptables 转发顺序 是采用规则堆栈的方式来进行过滤,当一个封包进入网卡会先检查 Prerouting,然后检查目的 IP 判断是否需要转送出去接着就会跳到 INPUT 或 Forward 进行过滤,如果封包需转送处理则检查 Postrouting如果是来自本机葑包,则检查 OUTPUT 以及 Postrouting过程中如果符合某条规则将会进行处理,处理动作除了 不同)一直到堆栈中的规则检查完毕为止。透过这种机制所帶来的好处是我们可以进行复杂、多重的封包过滤,简单的说iptables 转发顺序 可以进行纵横交错式的过滤(tables)而非炼状过滤(chains)。

  ACCEPT 将封包放行进行完此处理动作后,将不再比对其它规则直接跳往下一个规则炼(nat:postrouting)。

  REJECT 拦阻该封包并传送封包通知对方,可以传送的葑包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机)进行完此处理动作后,将不再比对其它规则直接 中断过滤程序。 范例如下:

  DROP 丢弃封包不予处理进行完此处理动作后,将不再比对其它规则直接中断过滤程序。

  MASQUERADE 改写封包来源 IP 为防火墙 NIC IP可以指定 port 对应嘚范围,进行完此处理动作后直接跳往下一个规则炼(mangle:postrouting)。这个功能与 SNAT 略有不同当进行 IP 伪装时,不需指定要伪装成哪个 IPIP 会从网卡直接读取,当使用拨接连线时IP 通常是由 ISP 公司的 DHCP 服务器指派的,这个时候

  LOG 将封包相关讯息纪录在 /var/log 中详细位置请查阅 /etc/syslog.conf 组态档,进行完此處理动作后将会继续比对其它规则。例如:

  SNAT 改写封包来源 IP 为某特定 IP 或 IP 范围可以指定 port 对应的范围,进行完此处理动作后将直接跳往下一个规则炼(mangle:postrouting)。范例如下:

  DNAT 改写封包目的地 IP 为某特定 IP 或 IP 范围可以指定 port 对应的范围,进行完此处理动作后将会直接跳往下一個规则炼(filter:input 或 filter:forward)。范例如下:

  MIRROR 镜射封包也就是将来源 IP 与目的地 IP 对调后,将封包送回进行完此处理动作后,将会中断过滤程序

  QUEUE 中断过滤程序,将封包放入队列交给其它程序处理。透过自行开发的处理程序可以进行其它应用,例如:计算联机费用……等

  RETURN 结束在目前规则炼中的过滤程序,返回主规则炼继续过滤如果把自订规则炼看成是一个子程序,那么这个动作就相当于提早结束子程序并返回到主程序中。

  MARK 将封包标上某个代号以便提供作为后续过滤的条件判断依据,进行完此处理动作后将会继续比对其它规則。范例如下:

我要回帖

更多关于 iptables转发 的文章

 

随机推荐