注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小可尼の博客

Linux后端的技术窝窝

 
 
 

日志

 
 

iptables的conntrack记录  

2013-04-15 11:58:48|  分类: connettrack |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
出处:http://blog.sina.com.cn/s/blog_4e5e815e01009ff0.html

4.2. conntrack记录

我们先来看看怎样阅读/proc/net/ip_conntrack里的conntrack记录。这些记录表示的是当前被跟踪的连接。如果安装了ip_conntrack模块,cat /proc/net/ip_conntrack 的显示类似:
tcp 6 117 syn_sent src=192.168.1.6 dst=192.168.1.9 sport=32775 dport=22 [unreplied] src=192.168.1.9 dst=192.168.1.6 sport=22 dport=32775 use=2

conntrack模块维护的所有信息都包含在这个例子中了,通过它们就可以知道某个特定的连接处于什么状态。首先显示的是协议,这里是tcp,接着是十进制的6(译者注:tcp的协议类型代码是6)。之后的117是这条conntrack记录的生存时间,它会有规律地被消耗,直到收到这个连接的更多的包。那时,这个值就会被设为当时那个状态的缺省值。接下来的是这个连接在当前时间点的状态。上面的例子说明这个包处在状态 syn_sent,这个值是iptables显示的,以便我们好理解,而内部用的值稍有不同。syn_sent说明我们正在观察的这个连接只在一个方向发送了一tcp syn包。再下面是源地址、目的地址、源端口和目的端口。其中有个特殊的词unreplied,说明这个连接还没有收到任何回应。最后,是希望接收的应答包的信息,他们的地址和端口和前面是相反的。

连接跟踪记录的信息依据ip所包含的协议不同而不同,所有相应的值都是在头文件linux/include/netfilter-ipv4/ip_conntrack*.h中定义的。ip、tcp、udp、icmp协议的缺省值是在linux/include/netfilter-ipv4/ip_conntrack.h里定义的。具体的值可以查看相应的协议,但我们这里用不到它们,因为它们大都只在conntrack内部使用。随着状态的改变,生存时间也会改变。



当一个连接在两个方向上都有传输时,conntrack记录就删除[unreplied]标志,然后重置。在末尾有 [assured]的记录说明两个方向已没有流量。这样的记录是确定的,在连接跟踪表满时,是不会被删除的,没有[assured]的记录就要被删除。连接跟踪表能容纳多少记录是被一个变量控制的,它可由内核中的ip- sysctl函数设置。默认值取决于你的内存大小,128mb可以包含8192条目录,256mb是16376条。你也可以在 /proc/sys/net/ipv4/ip_conntrack_max里查看、设置。

4.3. 数据包在用户空间的状态

就象前面说的,包的状态依据ip所包含的协议不同而不同,但在内核外部,也就是用户空间里,只有4种状态:new,established,related 和invalid。它们主要是和状态匹配一起使用。下面就简要地介绍以下这几种状态:


table 4-1. 数据包在用户空间的状态

这些状态可以一起使用,以便匹配数据包。这可以使我们的防火墙非常强壮和有效。以前,我们经常打开1024以上的所有端口来放行应答的数据。现在,有了状态机制,就不需再这样了。因为我们可以只开放那些有应答数据的端口,其他的都可以关闭。这样就安全多了。
  评论这张
 
阅读(1022)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018