Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141388
  • 博文数量: 27
  • 博客积分: 2196
  • 博客等级: 大尉
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-17 10:29
文章存档

2008年(27)

我的朋友

分类: LINUX

2008-10-22 16:57:35

我们先来看看怎样阅读/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 

第17页 共125页 2008-9-4 14:55

SYN包。再下面是源地址、目的地址、源端口和目的端口。其 中有个特殊的词UNREPLIED,说明这 

个连接还没有收到任何回应。最后,是希望接收的应答包的信息,他们 的地址和端口和前面是相 

反的。 

连接跟踪记录的信息依据IP所包含的协议不同而不同,所有相应的值都是在头文件linux/include 

/netfilter-ipv4/ip_conntrack*.h中定义的。IP、TCP、UDP、ICMP协 议的缺省值是在 

linux/include/netfilter-ipv4/ip_conntrack.h里定义的。具 体的值可以查看相应的协议,但 

我们这里用不到它们,因为它们大都只在conntrack内部使用。随着状态的 改变,生存时间也会 

改变。 

最近patch-o-matic里有一个新的补丁,可以把上面提到的超时时间也作为系统变量, 

这样我们就 能够在系统空闲时改变它们的值。以后,我们就不必为了改变这些值而重 

编译内核了。 

这些可通过/proc/sys/net/ipv4/netfilter下的一些特殊的系统调用 来改变。仔细看 

看/proc/sys/net/ipv4/netfilter/ip_ct_*里的变量吧。 

当一个连接在两个方向上都有传输时,conntrack记录就删除[UNREPLIED]标志,然后重置。在末 

尾有 [ASSURED]的记录说明两个方向已没有流量。这样的记录是确定的,在连接跟踪表满时,是 

不会被删除的, 没有[ASSURED]的记录就要被删除。连接跟踪表能容纳多少记录是被一个变量控 

制的,它可由内核中的ip- sysctl函数设置。默认值取决于你的内存大小,128MB可以包含8192条 

目录,256MB是16376条。你也可以在 /proc/sys/net/ipv4/ip_conntrack_max里查看、设置。 

Iptables 指南 1.1.19 file:///C:/Documents%20and%20Settings/liu/%E6%A1%8C%E9%9... 


阅读(2617) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~