iptables

1.iptables和netfilter

netfilter是一套数据包过滤框架,通过hook的5个钩子函数来处理IP数据包

ip_tables是真正的内核防火墙模块,通过把自己的函数注入到netfilter的框架中来实现

防火墙功能。

iptables有4个表,raw,mangle, nat,filter

有5个链PREROUTING,INPUT,FORWORD,OUTPUT,POSTING,这5条链就是iptables填到netfilter中的5个钩子函数

其中

PREROUTING OUTPUT的链中的规则可以存放到表raw中

FORWARD,INPUT,OUTPUT的链中的规则可以存放到表filter中

PREROUTING,POSTROUTING,OUTPUT链中的规则可以存放到nat表中

PREROUTING,POSTROUTING,OUTPUT,INPUT,FORWARD链中的规则可以放到mangle表中

 

2.数据包的处理过程

(1)数据包进入IP协议栈先进行IP校验,完成校验以后,数据包被第一个钩子函数PRE_ROUTING处理。

(2)进入路由模块,由其决定该数据包是转发出去还是送给本机。

(3)若该数据包是送给本机的,要经过INPUT处理后传递给本机的上层协议,

若数据包被转发,则它将被钩子函数FORWARD处理,然后还要经钩子函数POST_ROUTING处理后才能传输到网络。

(4)本机进程产生的数据包要先进行OUTPUT处理后,再进行路由选择处理,然后经过钩子函数POST_ROUTING处理后再发向网络。

(5)其中的路由判断是通过数据包的目的地址来判断的。

3.连接跟踪

nat表中还包含了conntrack模块,该模块可以对数据包做的nat变换进行进行缓存,还可以记录连接的状态,对应的状态有如下几个:

INVAILD,表示分组对应的连接是未知的;

ESTABLISHED,表示分组对应的连接已经进行了双向的分组传输,也就是说连接已经建立;

NEW,表示这个分组需要发起一个连接,或者说,分组对应的连接在两个方向上都没有进行过分组传输;

RELATED,表示分组要发起一个新的连接,但是这个连接和一个现有的连接有关,例如:FTP的数据传输 连接和控制连接之间就是RELATED关系。

而数据包在iptables进行nat转换时,也是先查连接跟踪中的缓存,然后再查nat表。

支持的协议包含TCP、UDP、ICMP、DCCP、SCTP、GRE

   每一个连接在连接跟踪的缓存中都有两条记录,一个是原始方向的称为IP_CT_DIR_ORIGINAL,另外一个是回复方向的称为IP_CT_DIR_REPLY,这样当此条连接的回复报文过来后就可以很快确认数据包属于哪条连接。

  因此,对于主动内网snat一个ip访问出去只需要一条snat规则,回包会通过reply的记录进行翻转变换,或外网dnat访问内网的某个服务时,也只需要一条dnat规则也是这个原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三少和左眼皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值