Iptables 指南 1.1.19(中文版)(二)
4.3. 数据包在用户空间的状态
就象前面说的,包的状态依据IP所包含的协议不同而不同,但在内核外部,也就是用户空间里,只有4种状态:NEW,ESTABLISHED,RELATED 和INVALID。他们主要是和状态匹配一起使用。下面就简要地介绍以下这几种状态:
Table 4-1. 数据包在用户空间的状态
| State(状态) | Explanation(注释) |
|---|---|
| NEW | NEW说明这个包是我们看到的第一个包。意思就是,这是conntrack模块看到的某个连接第一个包,他即将被匹配了。比如,我们看到一个SYN 包,是我们所留意的连接的第一个包,就要匹配他。第一个包也可能不是SYN包,但他仍会被认为是NEW状态。这样做有时会导致一些问题,但对某些情况是有很大的帮助的。例如,在我们想恢复某条从其他的防火墙丢失的连接时,或某个连接已超时,但实际上并未关闭时。 |
| ESTABLISHED | ESTABLISHED已注意到两个方向上的数据传输,而且会继续匹配这个连接的包。处于ESTABLISHED状态的连接是很容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从NEW变为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误和重定向等信息包也被看作是ESTABLISHED,只要他们是我们所发出的信息的应答。 |
| RELATED | RELATED是个比较麻烦的状态。当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是RELATED的了,当然前提是conntrack模块要能理解RELATED。ftp是个很好的例子,FTP-data 连接就是和FTP-control有RELATED的。更有其他的例子,比如,通过IRC的DCC连接。有了这个状态,ICMP应答、FTP传输、DCC等才能穿过防火墙正常工作。注意,大部分更有一些UDP协议都依赖这个机制。这些协议是很复杂的,他们把连接信息放在数据包里,并且需要这些信息能被正确理解。 |
| INVALID | INVALID说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因能够产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP 错误信息。一般地,我们DROP这个状态的任何东西。 |
这些状态能够一起使用,以便匹配数据包。这能够使我们的防火墙很强壮和有效。以前,我们经常打开1024以上的任何端口来放行应答的数据。现在,有了状态机制,就不需再这样了。因为我们能够只开放那些有应答数据的端口,其他的都能够关闭。这样就安全多了。
4.4. TCP 连接
本节和下面的几节,我们来周详讨论这些状态,连同在TCP、UDP和ICMP这三种基本的协议里怎样操作他们。当然,也会讨论其他协议的情况。我们还是从TCP入手,因为他本身就是个带状态的协议,并且具备很多关于iptables状态机制的周详信息。
一个TCP连接是经过三次握手协商连接信息才建立起来的。整个会话由一个SYN包开始,然后是个 SYN/ACK包,最后是个ACK包,此时,会话才建立成功,能够发送数据。最大的问题在于连接跟踪怎样控制这个过程。其实很简单。
默认情况下,连接跟踪基本上对任何的连接类型做同样的操作。看看下面的图片,我们就能明白在连接的不同阶段,流是处于什么状态的。就如您看到的,连接跟踪的代码不是从用户的观点来看待TCP连接建立的流程的。连接跟踪一看到SYN包,就认为这个连接是NEW状态,一看到返回的SYN/ACK包,就认为连接是 ESTABLISHED状态。假如您仔细想想第二步,应该能理解为什么。有了这个特别处理,NEW和ESTABLISHED包就能够发送出本地网络,且只有ESTABLISHED的连接才能有回应信息。假如把整个建立连接的过程中传输的数据包都看作NEW,那么三次握手所用的包都是NEW状态的,这样我们就不能阻塞从外部到本地网络的连接了。因为即使连接是从外向内的,但他使用的包也是NEW状态的,而且为了其他连接能正常传输,我们不得不允许NEW状态的包返回并进入防火墙。更复杂的是,针对TCP连接内核使用了很多内部状态,他们的定义在 RFC 793 - Transmission Control Protocol的21-23页。但好在我们在用户空间用不到。后面我们会周详地介绍这些内容。

正如您看到的,以用户的观点来看,这是很简单的。但是,从内核的角度看这一块更有点困难的。我们来看一个例子。认真考虑一下在/proc/net/ip_conntrack里,连接的状态是如何改变的。
tcp 6 117 SYN_SENT src=192.168.1.5 dst=192.168.1.35 sport=1031 dport=23 [UNREPLIED] src=192.168.1.35 dst=192.168.1.5 sport=23 dport=1031 use=1
从上面的记录能够看出,SYN_SENT状态被配置了,这说明连接已发出一个SYN包,但应答还没发送过来,这可从[UNREPLIED]标志看出。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
- 快速学习如何搭建一个赚钱
- 什么是CPA、CPC、CPM、CPO
- 论文:Web安全对策研究
- 新手站长35天自学引路
- 站长资讯网第二版上线
- 网络营销网站功能设计的几
- 女站长的建站理财文章
- 也谈域名备案 -- 撤销已存
- 自己动手做网站 个人站长
- 对第一次做网站的朋友说些
- 传统网站逼得Web2.0没法活
- 被K过的域名如何被百度重
- 如何选择理想IDC服务商十
- 技巧:Vimdiff 使用
- 网络创业经历 靠卖域名来
- 如何提高网站流量之小节
- 王晨昀:个人网站为什么要
- 企业开展网络营销存在的误
- 一个失败者谈地方门户的运
- 域名注册与虚拟主机的选购
- SEO360的搜索引擎优化推广
- 网站运营与网络运营的一字
- 做网站要做出自己的个性—
- 中国网站内容不可逾越的三
- 如何将新网及商务中国的域
- 08年,个人站长赚钱将更加
- 保证能增加RSS订阅量的35
- 企业网站英文版制作几个关
- 龚文祥:互联网运营关键词
- 我的行业垃圾站
- 2008最新申请Google adsen
- 虚拟主机的陷阱
- 网站建设发展的几点中肯建
- 企业如何安全高效使用垃圾
- 计算机文件夹删除不掉怎么
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD



