Bandwidthd with CentOS 6.6

Bandwidthd其实是个很古老的软件了,现在已经很少有人用了,不过,却非常适合我们的场景:
vpn

公司在idc托管机房建立了一个openvpn跳板服务器(已经有300用户了,比起dell sonicwall这种商业方案省了不少钱),这样研发人员通过vpn拨到idc,连接到这台openvpn服务器上,然后这台服务器用iptables进行snat,进而连接到其他服务器进行操作。但是这样有一个问题,某个开发人员通过跳板机往其他服务器上传东西,导致机房网络流量突然增高的话,要查出来是谁做的比较麻烦。

所以在openvpn服务器上装个bandwidthd来查看一下各ip使用流量的状况,结合openvpn配置文件中的ifconfig-pool-persist,找到关联的IP,就可以知道是哪个账号的流量过大。

安装过程:

下载Bandwidthd
wget http://www.rendoumi.com/soft/bandwidthd-2.0.1.tgz  
编译
configure --prefix=/export/servers/bandwidthd  
checking for libiconv_open in -liconv... no  
checking for png_read_info in -lpng... yes  
checking for gdImageCreate in -lgd... no  
configure: error: Bandwidthd requires but cannot find libgd  

报错:找不到libgd,在网上搜索了一圈,答案都是错的。 实际centos 6.6已经装了gd和png库,但是bandwidthd实在太老了,居然要的是libgd,不是gd库!只能去搜索libgd库手动安装了

下载libgd和libpcap:

wget http://www.rendoumi.com/soft/libgd-2.1.1.tar.gz  

编译安装:

./configure --prefix=/usr/local/libgd
make  
make install  

同理需要libpcap库,也下载一个手动安装吧:

wget http://www.rendoumi.com/soft/libpcap-1.7.4.tar.gz`  

编译安装:

./configure --prefix=/usr/local/libgd
make  
make install  

最后回到bandwidthd,重新编译:

./configure LDFLAGS="-L/usr/local/libgd/lib -L/usr/local/libpcap/lib" CPPFLAGS="-I/usr/local/libgd/include -I/usr/local/libpcap/include" --prefix=/export/servers
make  
make install  

注意上面:编译的时候加了LDFLAGS和CPPFLAGS两个参数,如果编译的时候用到了非系统自带的库和头文件,这么加参数是非常有效的。不只是编译bandwidthd时用到,编译其他老旧软件也可能会用到。

装好后修改/export/servers/bandwidthd/etc/bandwidthd.conf,只修改2行即可:

...
subnet 10.10.0.0 255.255.0.0  
dev "tun0"  
...

注意:openvpn服务器的ip段配的是10.10.0.0,掩码255.255.0.0,我们只关心vpn用户的使用,所以只监听虚拟网卡tun0即可。

服务器已经安装了nginx,html的目录设置的是/export/html 所以建立一个软连接:

ln -s /export/servers/bandwidthd/htdocs /export/html/bandwidthd  

然后打开网址: http://www.rendoumi.com/bandwidthd/
等几分钟就可以看到效果图了: vpn

找到流量最高的ip:10.10.0.110,从ifconfig-pool-persist中找出对应的账号: liwei,10.10.0.110

李伟,就是这个家伙,抓到了。

comments powered by Disqus