[转帖]Linux conntrack模块,ip_conntrack 模块的作用

linux,conntrack,模块,ip,作用 · 浏览次数 : 0

小编点评

文章中对ip_conntrack模块的介绍如下: > ip_conntrack 模块会记录 tcp 通讯协议的 established connection 记录, 而且预设 timeout 时间长达五天 (432,000 秒)。所以局域网中当有人使用p2p类的软件就很容易使ip_conntrack达到最大值...也由此造成: 我们先看看怎样阅读/proc/net/ip_conntrack里的conntrack记录。这些记 录表示的是当前被跟踪的连接。 因此,通过查看/proc/net/ip_conntrack 文件中的 conntrack 记录,我们可以判断当前局域网中有多少个连接正在处于ESTABLISHED 状态,以及它们的状态信息。 文章中提到,如果安装了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 tcp 6 431967 ESTABLISHED src=192.168.18.120 dst=192.168.18.98 sport=1059 dport=22 packets=3287 bytes=262840 src=192.168.18.98 dst=192.168.18.120 sport=22 dport=1059 packets=2863 bytes=439784 [ASSURED] mark=0 secmark=0 use=1 conntrack模块维护的所有信息都包含在这个例子中了,可以通过它们就可以判断当前连接是否是ESTABLISHED 状态。 ``` 文章中还提到,可以通过查看/proc/net/ip_conntrack 文件中的 conntrack 记录,我们可以判断当前局域网中有多少个连接正在处于ESTABLISHED 状态,以及它们的状态信息。如果发现连接数量超过预设值(5),可以采取措施消除这些连接,例如重启系统或调整防火墙规则。 文章中提到,通过使用perl实现对消除ddos***有一定帮助,因为ddos***可以通过向目标服务器发送大量SYN请求以占领目标服务器的资源,造成服务器崩溃。通过查看/proc/net/ip_conntrack 文件中的 conntrack 记录,我们可以判断当前局域网中有多少个连接正在处于ESTABLISHED 状态,以及它们的状态信息。如果发现连接数量超过预设值(5),可以采取措施消除这些连接,例如重启系统或调整防火墙规则。

正文

ip_conntrack 是Linux NAT一个跟踪连接条目的模块记录着允许的跟踪连接条目ip_conntrack 模块会记录 tcp 通讯协议的 established connection 记录, 而且预设 timeout 时间长达五天 (432,000 秒).所以局域网中当有人使用p2p类的软件就很容易使ip_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

tcp 6 431967 ESTABLISHED src=192.168.18.120 dst=192.168.18.98 sport=1059 dport=22

packets=3287 bytes=262840 src=192.168.18.98 dst=192.168.18.120 sport=22 dport=1059

packets=2863 bytes=439784 [ASSURED] mark=0 secmark=0 use=1

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里查看、设置。

转自:http://hi.baidu.com/weioip/blog/item/02961246a17bd4016b63e5ae.html

一个perl脚本来清空ip_conntrack.但是我发觉更简单办法是移除ip_conntrack模块.移除时提示有依赖,还是直接service iptables stop来得快.但是要记得,ip_forward也被设为0了,所以该设的全重设

如何清除/proc/net/ip_conntrack的内容?

作者 woflyin

2004-12-09

对于做处于网关地位的机器,其开启了nat功能,那么/proc/net/ip_conntrack是保存的是内网地址和外部地址连接的情况,记录每个连接的周详情况,其内容一般会保持5天,期间重新启动网络并不会有效减少其内容,唯一的办法就是重新启动和增大内存的数量,给监控带来不便,内容很容易满,核心便会报警:

ip_conntrack: table full, dropping packet

解决办法:

1.增加内存:修改/etc/sysctl.conf的配置容量 net.ipv4.ip_conntrack_max=大的数值!

2.隔一段时间重新启动系统,清空ip_conntrack

3.对ip_conntrack编程,读取其内容,匹配指定的ip地址,然后调用发包程式发送RST报文,人为的完成tcp连接。用perl实现,调用了一个外部程式hping2,能够从其主页找到,这个程式就是个构包器

用法:cl.pl ipaddress

#!/usr/bin/perl

$ip = $ARGV[0];

#print $ARGS,$ip;

exit if(!$ip);

open(FH,”ip_conntrack”);

while()

{

if (/^tcp .*ESTABLISHED src=$ip/)

{

#print $_;

@line = split(/=/,$_);

$sip = $line[1];

$sip =~s/ .*//g;

$dip = $line[2];

$dip =~s/ .*//g;

$sport = $line[3];

$sport =~s/ .*//g;

$dport = $line[4];

$dport =~s/ .*//g;

print “$sip:$sport $dip:$dportn”;

`/usr/bin/hping2 $dip -R -s $sport -p $dport -a $sip -k -c 1 >/dev/null 2>/dev/null &`;

}

}

4。问题:通过这个思路,是否能够对消除ddos***有一定帮助呢?查询ip_conntrack表,判断syn_SENT标志是否过多,过多就能够采取这样的做法消除他们呢?希望大家讨论,一起进步!

来源: http://www.abc188.com/info/html/wangzhanyunying/jianzhanjingyan/20080417/71130.html

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux25427 人正在系统学习中

与[转帖]Linux conntrack模块,ip_conntrack 模块的作用相似的内容:

[转帖]Linux conntrack模块,ip_conntrack 模块的作用

ip_conntrack 是Linux NAT一个跟踪连接条目的模块记录着允许的跟踪连接条目ip_conntrack 模块会记录 tcp 通讯协议的 established connection 记录, 而且预设 timeout 时间长达五天 (432,000 秒).所以局域网中当有人使用p2p类的

[转帖]Linux内核参数之nf_conntrack

https://www.jianshu.com/p/d2b28703e376 问题描述 近日线下测试环境的一个cloudstack计算节点上的虚拟机出现频繁的丢包情况,经过排查日志发现这个计算节点的包被丢弃,日志信息如下: Oct 29 16:18:14 a2 kernel: __ratelimit

[转帖]Linux内核参数之nf_conntrack

https://www.jianshu.com/p/d2b28703e376 问题描述 近日线下测试环境的一个cloudstack计算节点上的虚拟机出现频繁的丢包情况,经过排查日志发现这个计算节点的包被丢弃,日志信息如下: Oct 29 16:18:14 a2 kernel: __ratelimit

[转帖]linux中内核的一个不错的参数somaxconn

最近发现很多内核优化参数都记不住了,写下文章来备记,方便以后查看. 编辑 /etc/sysctl.conf 文件,在里面加入如下内容:(有注释) #设置系统对最大跟踪的TCP连接数的限制(CentOS 5.6无此参数) net.ipv4.ip_conntrack_max = 25000000 #最大

[转帖]CONNTRACK_MAX和HASHSIZE

关于linux中的CONNTRACK_MAX和HASHSIZE要注意的地方 如果在压力测试的时候,并发数增大,但无法完成测试,可以尝试调整下参数: vi /etc/sysctl.conf 在kernel2.6之前的添加项: net.ipv4.netfilter.ip_conntrack_max =

[转帖]Linux 磁盘I/O 调度算法 说明

2022-08-23 13:031361转载Linux 1 Linux 4.0 IO协议栈框架图 I/O 调度算法在各个进程竞争磁盘I/O的时候担当了裁判的角色。他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能。 Linux 4.0 IO协议栈框架图 I/O调度程序的总结 当向

[转帖]Linux中常见IO调度器

https://www.jianshu.com/p/3c16e39a005a 单队列调度算法多队列调度算法 deadline mqdeadlines cfq bfq noop none kyber 对于磁盘I/O,Linux提供了cfq, deadline和noop三种调度策略 cfq: 这个名字是

[转帖]Linux 平台使用shc 工具加密shell 脚本

2021-08-03 20:4510030原创Linux 本文链接:https://www.cndba.cn/dave/article/4642 1 shc 工具说明 shell 脚本是常用脚本,运维中经常使用,但有时候在shell 脚本中会包含一些敏感的信息,比如密码或者特殊的参数,此时我们就可以

[转帖]Linux系统多网卡环境下的路由配置

https://www.cnblogs.com/connect/p/linux-static-route.html Linux下路由配置命令 1. 添加主机路由 route add -host 192.168.1.11 dev eth0 route add -host 192.168.1.12 gw

[转帖]linux命令行下如何格式化json并进行各种json处理操作

https://blog.csdn.net/penriver/article/details/122016563 有时需要在linux 的命令行下,需要查看json的内容或针对json进行各种操作,本文针对此进行梳理、总结。 在Linux系统下基于python json.tool可以格式化json,