看看 /proc/net/ip_conntrack 这个文件的内容是记录当前在连接状态表中的所有机器的列表
udp的第四个字段是 src=IP tcp的第五个字段是 src=IP
我用这种方式能够查看某个时刻在线的IP的UDP和TCP连接数
file=/tmp/conn-$(date +%Y%m%d%H%M%S)
cp /proc/net/ip_conntrack $file
awk '/^udp/{udp[$4]++};/^tcp/{tcp[$5]++};{i=(/^udp/)?4:5;a[$i]++}END{for(i in a)printf "%-25s\t%d\tudp=%d\ttcp=%d\n",i,a,udp,tcp}' $file | sort -r -k2n
复制代码
这样能够大致统计出某个时刻同时的IP数,以及每个IP的udp“连接”和tcp连接数
因为读取ip_conntrack和计算需要一定的时间,因此统计的时间粒度不能很细