iptables状态连接基础理论

Iptables中,关于状态连接及连接追踪是学习重点,下面就来说说Iptables中的state到底是怎么回事:

1、连接状态转换

如下图:TCP连接是C/S架构的,每一次连接都必不可少的要经理三次握手和四次断开,在客户端和服务器端建立通信和相忘于江湖的过程中,每个阶段也是有状态的,比如说,正在传输数据时,就可以称为ESTABLISHED状态,未建立连接时,称为CLOSED状态,下图就简单的反映了客户端和服务器端的几种状态,左边是客户端,右边是服务器端,客户端未向服务器端发送syn请求时,一直处于CLOSED状态,而服务器端一直是处于LISTEN状态,随时等待听令,当客户端发送给服务器端syn请求时,状态就转变为syn_sent状态,服务器端接收到syn请求后,知道是三次握手的请求,所以转变成为syn_rcvd状态,并方会给客户端syn+ack请求,这时,客户端收到syn+ack请求后知道服务器端已经统一建立连接了,就转变为ESTABLISHED状态,并响应给服务器端一个ack请求,这样,接下来双方的状态就一直处于established状态了。当数据传输完毕后,客户端向服务器端发送一个fin请求,说明要断开,同时转变成FIN_WAIT1状态,服务器端收到请求后知道是断开的信息,状态就转变成的等待对方最终确认关闭的状态CLOSE_WAIT,给客户端发送一个ack请求,同时再次给客户端发送一个fin请求,后转变成LASTBACK状态,客户端这时有两种状态,FIN_WAIT_1和FIN_WAIT_2,当收到服务器端的fin请求后,确认关闭连接,装变成CLOSED状态,并给服务器端发送ack,这样,一个整套的连接就完成了。这其中,如果最后的ack响应报文在到达服务器端前,客户端就断开了,那么ack保温就不能送达到服务器端,所以在最后一步,客户端发给服务器端的ack报文要保持两个单位传输时间,以确保ack报文顺利到达。在这个过程中,双方都一直在进行连接状态转换。

下面这个图是双方连接过程中的各种状态的具体描述

2、连接追踪模板

在netfilter中,所有访问到本机的报文都是无状态的,也就是说,如果本机是一台服务器,有很多客户端访问此服务器,那么,服务器虽然收到请求,但不知道是那个客户端请求的,也不知道应该响应给谁。所以,为了可以追踪报文请求,服务期内就需要有一段内存存储请求的一些必要信息,这就是连接追踪,但是每追踪一个连接,就会产生一段内存,所以说这个内存也是有存储上限的,另外,每个连接的也是有超时时长的,超时则会自动在此内存中删除。假设该内存中存储已满,但都未超时,如果在此时又进来报文,就会直接丢掉。这段所谓的内存空间就是连接追踪模板,也就是说,无论是基于什么协议来访问本机,都可以成为有连接状态的报文。

连接状态有一下几种:

NEW: 新建立的连接,连接追踪模板中无相应的条目时,客户端第一次发出的请求;

ESTABLISHED:NEW状态之后,边距追踪模板中的条目删除之前所进行的通信过程,都称为ESTABLISHED;

RELATED:相关联的连接,如ftp协议的命令连接与数据连接即为相关联的连接;

INVALIED: 无法识别的状态。

时间: 2024-09-30 09:38:14

iptables状态连接基础理论的相关文章

iptables状态检测

iptables状态检测 iptables状态检测是一种扩展匹配中的显式扩展,用于检测会话之间的连接关系的,有了检测我们可以实现会话间功能的扩展 什么是状态检测? 每个建立的连接包括以下信息:源IP地址.目标IP地址.源端口和目的端口,这叫一对套接字对(socket ); 协议类型.连接状态(TCP协议)和超时时间等信息.防火墙把这些信息叫作状态(stateful),能够检测每个连接状态的防火墙叫作带状态检测的包过滤防火墙:它除了能够完成简单包过滤防火墙的包过滤工作外,还在自己的内存中维护一个跟

处于CLOSE_WAIT和TIME_WAIT状态连接的原因及解决

常用的三个状态是:ESTABLISHED   TIME_WAIT   CLOSE_WAIT ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭. 具体每种状态什么意思,其实无需多说,看看下面这种图就明白了,注意这里提到的服务器应该是业务请求接受处理的一方: 这么多状态不用都记住,只要了解到我上面提到的最常见的三种状态的意义就可以了.一般不到万不得已的情况也不会去查看网络状态,如果服务器出了异常,百分之八九十都是下面两种情况: 1.服务器保持

查看iptables状态-重启

iptables 所在目录 /etc/sysconfig/iptables service iptables status 查看iptables状态 service iptables restart iptables服务重启 service iptables stop iptables服务禁用

nagios 实时监控 iptables 状态

实时监控Iptables,防止人为关闭后,忘了开启,或者监控规则是否有增删. 在客户端(被监控端): # cd /usr/local/nagios/etc # vim nrpe.cfg 增加如下内容: command[check_iptables]=/usr/local/nagios/libexec/check_iptables.sh # cd /usr/local/nagios/libexec # touch check_iptables.sh # chmod 755 check_iptabl

nagios监控iptables状态

最近我们运维要加强安全防护,老大让我们监控iptables的状态.这里我废了九牛二虎之力,再加上我师父(聪哥)的指导,才成功完成. 下面给大家看下我写的监控脚本 #!/bin/bash   prefix=/usr/local/nagios/libexec;   check_iptab_md5=`/usr/bin/sudo iptables -L -n | md5sum | awk '{print $1}'` #这里是计算iptables的filter链的MD5值,一旦发生改变.或者iptable

nagios监控iptables状态(二)

由于上一篇上面写的那个脚本不是很好用,每次加了防火墙规则以后都需要手动删除MD5文件.所以重新写了一个shell,通过计算他的规则条数来判断iptables是否做了修改! #!/bin/bash iptable_num=$(sudo /sbin/iptables -L -n|wc -l) if [ ${iptable_num} = 8 ];then      echo iptables is stoped    exit 1 else      echo iptables is started 

linux防火墙--iptables(二)

五.filter过滤和转发 a.打开内核的IP转发 # sysctl -w net.ipv4.ip_forward=1 或 # echo 1 > /proc/sys/net/ipv4/ip_forward b.基本匹配条件 ·通用匹配 → 可直接使用,不依赖于其他条件或扩展 → 包括网络协议.IP地址.网络接口等条件 ·隐含匹配 → 要求以特定的协议匹配作为前提 → 包括端口.TCP标记.ICMP类型等条件 类别 选项 用法 通用匹配 协议匹配 -p 协议名 地址匹配 -s 源地址      

iptables防火墙

getenforce 查看selinux的状态vi /etc/selinux/config 进去改他的配置文件 永久设置他的状态 setenforce 0 临时生效 2. Selinux配置文件 /etc/selinux/config 三种形式:enforcing, permissive, disabled SELINUX=disabled 更改完成重启系统才可以生效setenforce 0/1 getenforce yum install -y libselinux-utils 3. Netf

iptables之基础知识

hook funciton(钩子函数):    prerouting 进本机未过路由表    input 进来本机    output 从本机出去    forward 转发    postrouting 路由后从本机出去 规则链:    每个钩子函数上的规则合集构成链.    PREROUTING     INPUT     OUTPUT     FORWARD     POSTROUTING 自定义链:        只能被调用,有跳转和返回机制.用户可以删除自定义的空链,默认链无法删除.