Please read the FAQ
[ News ] [ Description ] [ Example Output (Screenshots) / Documentation] [ Installation ] [ Future ] [ Copyright Info ]
News |
---|
15-Nov-1999
After some request in the past 4 months to the author of ipacct (Zaheer Merali), I decided to do the porting on my own. I contacted Peter De Schrijver and he ported ipacct to 2.2.13 and 2.3.24.
I will not try to update, correct, fix the unstable ipacct 0.8 tree, i'll just try to keep the 0.7 tree updated. For the record, the previous site of ipacct was http://zaheer.grid9.net/useripacct
Description |
---|
This package adds per user ip accounting to the kernel and contains programs to control and use this accounting data.
Fist of all it consists of a kernel patch which adds per user ip accounting to the kernel. The kernel patch accounts all bytes sent or received on the ip level, i.e. all headers get accounted including the ip header itself. This data is exported via the proc filesystem. Moreover the patch allows to control the ip access on a per user basis. Furthermore it is possible to specify a weight for ip addresses. This weight controls how much every byte costs that is transfered from or to this ip addresses. With this weight/cost set to zero you can ignore certain host or networks completely from the statistics which might be convenient for the local network. The cost can be different for different ip addresses.
Second, there's a program for controlling and viewing the weights/costs and the accounting data produced by the kernel. With it you can modify the weight table in a manner very similar to the syntax of the route program.
Please note the following, IPacct is unable to correctly account PPP
users, because these use the PPP daemon as a gateway. The packets in a
PPP connection are being accounted to the PPP daemon UID. In order to correctly
account these packets, it would be necessary to alter the PPP daemon.
If you want to account PPP, take a look at net-acct-0.4.tar.gz.
This tool allows you to account the traffic on SLIP/PPP connections, but
not on Ethernet connections. You won't be able to deny access, though.
Example Output (Screenshots :) ) |
---|
User Sent Received Flags miranda 0 88 hoos 40 1006 fatman 40 3000 nobody 88 0 httpd 276 244In this example you see how much traffic every user produced since the last reset of the statistics.
Addr Mask Weight 194.7.78.0 255.255.255.0 0 127.0.0.1 255.255.255.255 0 default * 1
This weight table says that access to 194.7.78.0 and 127.0.0.1 is ignored (weight/cost 0). And access to all other hosts on the internet is accounted with a costs of one.
Third, a program named ipacctd creates an interface to your own accounting program. It reads the kernel ip statistics every specified interval and passes to data to a user supplied program like ipquota (see below). But you can also impose your own ip accounting policy by writing your own program or shell script for recording and analyzing the produced data.
And fourth, there is ipquota which is a package of itself. If used with
ipacctd it can impose ip quotas on certain users. These quotas can be easily
changed and viewed. Furthermore ipquota uses the feature of the ipacct
kernel patch to control access to the net: if a user exceeds his quota
he is denied further net access excluding access to hosts and networks
which are recorded with a weight/cost of zero in the kernel. There's a
program included which is used to create a low-rate/high-rate system (much
like the phone system), using ipacct's feature of a weight table. Thanks
to Carlos Soares for this program.
There is also an alternative to ipquota, called ipstats which provides
accounting capabilities, but does not impose a quota, generating only IP
traffic statistics.
Installation |
---|
more MCONFIG
(vi/joe/emacs MCONFIG)
make patches
cd /usr/src/linux
patch -p1 -s < dir_of_useripacct_patches/patch.linux-kernel_version_you_chose
make config (try make menuconfig)
make dep
make clean
make bzImage (or make zlilo, or whatever you use usually)
If you use modules you will also:
make modules
make modules_install
make
make install
make install.man
echo Starting ipacctd with ipquota...
/usr/sbin/ipacctd /usr/sbin/ipquota
If you want to run ipstats add the following:
echo Starting ipacctd with ipstats...
/usr/sbin/ipacctd /usr/sbin/ipstats
/usr/sbin/ipadd username 1024000
Or display the ip quota of a user.
/usr/bin/sayip username
/usr/sbin/ipallow -a username
Copyright |
---|
This package is Copyright (C) 1994, 1995, 1996 Lars Fenneberg. It is distributed according to the GNU General Public License. Some small parts are Copyright (C) 1995,1996,1999 João Ventura and are also under the GNU GPL.
Send comments, questions, suggestions to:
Ramses Smeyers <rsmeyers@khk.org>