免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 扫净缘客
打印 上一主题 下一主题

[网络管理] Linux是否可以实现查内网某ip最大流量 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-01-19 21:59 |只看该作者
ntop太占CPU了。。我在as4下试过````

论坛徽章:
0
12 [报告]
发表于 2007-01-19 21:59 |只看该作者
iptables的account match结合shell脚本应该就可以吧。

论坛徽章:
0
13 [报告]
发表于 2007-01-21 16:29 |只看该作者
是啊。经验之谈,介绍下~~

我看过他们有个人做的服务器。内网最大流量,lan网arp捣乱的,几个命令就能抓出来了。非常的直观

论坛徽章:
0
14 [报告]
发表于 2007-01-21 19:05 |只看该作者
原帖由 colddawn 于 2007-1-19 21:59 发表于 12楼  
iptables的account match结合shell脚本应该就可以吧。

我对 account 也不是很理解,colddawn 正好给大家介绍一下吧,举个实例讲解一下

论坛徽章:
0
15 [报告]
发表于 2007-01-27 09:02 |只看该作者
呵呵.大家一起探讨这个问题吧~~

查阅了下iptables指南,没有什么具体有用的信息。大家继续探讨这个问题

[ 本帖最后由 扫净缘客 于 2007-1-27 09:30 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2007-01-27 18:17 |只看该作者
原帖由 platinum 于 2007-1-19 21:12 发表于 10楼  

九贱可否借这个机会教教大家具体实现啊,比如一些小技巧,数据结构、hash 之类的(不知道会不会用到,随便说的


其实很简单,
1、定义一个“内网接口”,凡是从这个口出的数据,就是内网上行,凡是从这个口进的,就是内网上行,
2、定义一个结构,描述主机,可以类似如下定义:
struct host{
    unsigned long  ip;
    unsigned long long rx;
    unsigned long long tx;
};

3、对应提取每个包的来源或目的IP地址,查hash表,加入或累计对应元素就可以了,对于只有一个C网的网段,只要查一次hash表就可以定位到;
4、写一个用户态工具,读取统计值;

这比起许多利用libpcap库的旁路拷贝统计来说,节省了许多开销,我试过在大流量下,仍表现良好

论坛徽章:
0
17 [报告]
发表于 2007-01-31 19:04 |只看该作者
其实很简单,
1、定义一个“内网接口”,凡是从这个口出的数据,就是内网上行,凡是从这个口进的,就是内网上行,
2、定义一个结构,描述主机,可以类似如下定义:
struct host{
    unsigned long  ip;
    unsigned long long rx;
    unsigned long long tx;
};

3、对应提取每个包的来源或目的IP地址,查hash表,加入或累计对应元素就可以了,对于只有一个C网的网段,只要查一次hash表就可以定位到;
4、写一个用户态工具,读取统计值;

这比起许多利用libpcap库的旁路拷贝统计来说,节省了许多开销,我试过在大流量下,仍表现良好


不太理解其中的
struct host{
    unsigned long  ip;
    unsigned long long rx;
    unsigned long long tx;
};
类型定义

能详细些吗~~

论坛徽章:
0
18 [报告]
发表于 2007-01-31 22:13 |只看该作者
struct host{
    unsigned long  ip;              // IP 地址是 32bit,占 4bytes,所以是 unsigned long 形式
    unsigned long long rx;       // 这里用来存放接收到的字节数
    unsigned long long tx;       // 这里用来存放发送出的字节数
};
如果对于 C 网来说,设计一个 254 个元素的结构体数组就可以了,用 IP 做下标,累计计算 IP 的收发字节数

论坛徽章:
0
19 [报告]
发表于 2007-02-06 10:55 |只看该作者
偶还没用过,要多想大牛歌们学习学习啊

论坛徽章:
0
20 [报告]
发表于 2007-02-06 12:47 |只看该作者
竟然忽略了这个帖子,我还是觉得是用account target是现有最简单的解决方式
文档见这里:
http://www.intra2net.com/de/produkte/opensource/ipt_account/

以前做流量监控时测试过,效果不错。不过发现netfilter无法对目的地非local的包hook,所以放弃了,最后自己写了个libpcap的程序实现的。如果是在网关环境下监控,使用account无疑是最简捷高效的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP