[ipchains] traffic meter met ipchains

Pagina: 1
Acties:

  • ddofborg
  • Registratie: Augustus 2000
  • Laatst online: 26-02 09:52
ik heb een paar dagen geleden een traffic monitor gebouwd, dit is een deel van de regels (MASQ regels staan er niet in, maar PC in LAN worden geMASQ)...
code:
1
2
3
4
ipchains -A input  -s 0.0.0.0/0 -d $IP -j inet_in
ipchains -A output -s $IP -d 0.0.0.0/0 -j inet_out
ipchains -A input  -s 10.0.0.0/24 -d 10.0.0.1 -j lan_in
ipchains -A output -d 10.0.0.1 -s 10.0.0.0/24 -j lan_out

hiermee kan ik zien hoeveel verkeer ik tussen mijn server en Internet heb, en hoeveel verdeer ik tussen mijn LAN heb... dit werkt goed, alleen ik heb een probleem...

als ik met een PC achter mijn server iets download van Internet, dan wordt alleen counter inet_in opgehoogd, terwijl je zou verwachten dat [b]lan_out[b] ook omhoog zou moeten gaan...

ik heb al veel geprobeerd, maar het lukt mij niet om een counter te maken die kan tellen hoeveel bytes op Internet is download naar mijn PC die achter de server staat...
dingen zoals
code:
1
2
ipchains -A input  -s 0.0.0.0/0 -d $WORK_ST_1 -j lan_in
ipchains -A output -s $WORK_ST_1 -d 0.0.0.0/0 -j lan_out

werken niet....


weet iemand hoe het wel kan met ipchains?

Verwijderd

ik denk dat je lan_out niet verhoogd wordt omdat die regel niet meer doorlopen wordt nadat je naar inet_in bent geJumpt. Ik weet het ff niet uit mijn hoofd maar er is geloof ik wel iets als RETURN of zo, waarna je vanuit inet_in weer terugkomt en de rest van de chain gaat doorlopen.
code:
1
ipchains -A input  -s 0.0.0.0/0 -d $WORK_ST_1 -j lan_in

Dit gaat niets doen want dataverkeerd dat voor één van de computers in het LAN is heeft als doel het ip van je server en niet het ip dat de doelcompu op het LAN heeft.
code:
1
ipchains -A output -s $WORK_ST_1 -d 0.0.0.0/0 -j lan_out

zelfde verhaal, op het moment dat het pakket je server verlaat heeft het het source-ip van de server.

als je de interface naar het LAN toe specificeert kun je daarop wel een selectie maken met : -s $WORK_ST_1 -d $SERVER

correct me if I'm wrong.

  • ddofborg
  • Registratie: Augustus 2000
  • Laatst online: 26-02 09:52
ik heb hem volgens mij... als iemand interesse heeft, wil ik hem posten... ben het nu ff aan het uittesten...


DD

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024

froggie

Kwaaak

Ik ben wel geinteresseerd in dit script... wil namelijk bijhouden hoeveel traffic met www-server genereerd ivm de Chello limit van 5GB

Verwijderd

Ik heb een gelijk iets alleen voor linux 2.4 (iptables). hier staat de iptables-rules en hier het bash-script (voor cron) wat ik gebruik om de data (elke minuut) in mysql te stoppen. Op deze site staat een tabel met de output van afgelopen week. Gisteren perongelijk nog wat dingen gedeleted dus tabel is niet compleet meer.

Hiervoor had ik een soortgelijk script draaien (veel complexer) met wel 300.000 records en data per service. Grafieken had ik er toen ook bij, misschien dat ik die nog wel een keer maak.

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024

froggie

Kwaaak

Thnx!

Zal anders zelf eens gaan kijken want ik zoek eigenlijk iets zonder MySQL. Misschien kan ik zelf wel ff scrippie schrijven die de traffic in een textfile bijhoudt ofzo...

Verwijderd

Zal anders zelf eens gaan kijken want ik zoek eigenlijk iets zonder MySQL. Misschien kan ik zelf wel ff scrippie schrijven die de traffic in een textfile bijhoudt ofzo...
Tja, vervang in input.sh de ">" in een ">>" en haal de mysql-regel weg, alles staat dan in een tekstfile. Deze file zal wel snel redelijk groot worden.

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024

froggie

Kwaaak

Ik doelde niet zozeer op een file vol entries maar meer dat er in die file 1 regeltje kwam te staan met de totale traffic.

Verwijderd

edit:
nevermind (drunk modus)

Verwijderd

ik heb ook wel interesse in dat ipchains-script hoewel ik er ook aan zit te denken om naar iptables over te gaan.

bedankt iig voor het iptables/cron/mysql script. :)

  • ddofborg
  • Registratie: Augustus 2000
  • Laatst online: 26-02 09:52
hier is mijn script... hij is getest, en blijkt te werken ;)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
      ipchains -N lan_in
      ipchains -N lan_out
      ipchains -N cnet_in
      ipchains -N cnet_out
      ipchains -N inet_in
      ipchains -N inet_out

      # input
      ipchains -A input    -s 10.0.0.0/24   -d 0.0.0.0/0    -j lan_in
      ipchains -A input    -s 130.89.0.0/16 -d $SERVER_IP     -j cnet_in
      ipchains -A input    -s 0.0.0.0/0     -d $SERVER_IP     -j inet_in

      ipchains -A lan_in   -s 10.0.0.0/24   -d 10.0.0.0/24    -j RETURN
      ipchains -A cnet_in  -s 130.89.0.0/16 -d $SERVER_IP     -j ACCEPT
      ipchains -A inet_in  -s 0.0.0.0/0     -d $SERVER_IP     -j ACCEPT

      # output
      ipchains -A output    -s 0.0.0.0/0    -d 10.0.0.0/24    -j lan_out
      ipchains -A output    -s $SERVER_IP    -d 130.89.0.0/16 -j cnet_out
      ipchains -A output    -s $SERVER_IP    -d 0.0.0.0/0     -j inet_out

      ipchains -A lan_out   -s 10.0.0.1     -d 10.0.0.0/24    -j RETURN
      ipchains -A cnet_out  -s $SERVER_IP    -d 130.89.0.0/16 -j ACCEPT
      ipchains -A inet_out  -s $SERVER_IP    -d 0.0.0.0/0     -j ACCEPT

130.89.*.* is range van buiten-LAN (CampusNET)


$SERVERIP is het IP adres waarmee je de server van buiten LAN kan bereiken... dus niet 10.* ofzo...
en 10.0.0.1 is het IP van de server in het binnen-LAN


PS: er zijn dus twee locale netwerken (10.*.*.* en 130.89.*.*), de rest in dus Internet!


En om data in MySQL DB te stoppen...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
ipcahinslist=`ipchains -Z -vnxL`

lan_in=`echo  "$ipcahinslist"  | grep lan_in   | head -n1 | tr -s ' ' | cut -f3 -d' '`
cnet_in=`echo "$ipcahinslist"  | grep cnet_in  | head -n1 | tr -s ' ' | cut -f3 -d' '`
inet_in=`echo "$ipcahinslist"  | grep inet_in  | head -n1 | tr -s ' ' | cut -f3 -d' '`

lan_out=`echo  "$ipcahinslist" | grep lan_out  | head -n1 | tr -s ' ' | cut -f3 -d' '`
cnet_out=`echo "$ipcahinslist" | grep cnet_out | head -n1 | tr -s ' ' | cut -f3 -d' '`
inet_out=`echo "$ipcahinslist" | grep inet_out | head -n1 | tr -s ' ' | cut -f3 -d' '`

echo "INSERT INTO input  (instime,lan_in, cnet_in, inet_in)  VALUES (NOW(),$lan_in, $cnet_in, $inet_in)\g \
    INSERT INTO output (instime,lan_out,cnet_out,inet_out) VALUES (NOW(),$lan_out,$cnet_out,$inet_out);"
     | mysql -D $DATABASE -u $USERNAME -p$PASSWORD

dit scriptje moet je gewoon in je CROND of ATD stoppen... en om x minuten uitlezen...


veel plezier

Verwijderd

Heel leuk, maar ik heb geen MySQL op mijn systeem staan. Is er niet ergens een simpel tooltje dat hetzelfde doet? (Liefst gewoon in X-windows?)

  • Deltafox
  • Registratie: Augustus 2001
  • Laatst online: 26-12-2025
Ok ik reageer nu wel op een gruwelijk oud topic maar heb dit script net met succes aan de praat gekregen!

echt vet!

Heb het script iets verandert want ik wil alleen meten van een single verbinding hoeveel traffic eroverheen gaat.

Volgende tabellen in mysql:

CREATE TABLE input (
instime datetime NOT NULL,
inet_in text,
PRIMARY KEY (instime)
);

CREATE TABLE output (
instime datetime NOT NULL,
inet_out text,
PRIMARY KEY (instime)
);

heeft iemand een betere manier om traffic te meten reply dan aub

  • luie-steffie
  • Registratie: Maart 2002
  • Laatst online: 07-12-2023
Probeer het eens met ipac
http://sourceforge.net/projects/ipac-ng

en hier zie je een oud voorbeeldje van mij:
http://news.luiemotorfiet...otorfiets.cgi?ipac-recent

  • Deltafox
  • Registratie: Augustus 2001
  • Laatst online: 26-12-2025
hmm dat lijkt veel op MRTG ( http://people.ee.ethz.ch/~oetiker/webtools/mrtg/ )

Nee dit is wat flexibeler, ik wil namelijk straks van een IP:POORT combinatie kunnen zien hoeveel traffic daaroverheen is gegaan. En met ipchains kun je dit wel meten neem ik aan.

Maar nog twee vraagjes:

1) het getal wat hier uit ipchains wordt gefilterd, zijn dat bits of bytes?

2) hoe kan het dat dat getal steeds maar blijft oplopen? is het te resetten?

  • Deltafox
  • Registratie: Augustus 2001
  • Laatst online: 26-12-2025
Deltafox schreef op 22 May 2003 @ 22:16:
Nee dit is wat flexibeler, ik wil namelijk straks van een IP:POORT combinatie kunnen zien hoeveel traffic daaroverheen is gegaan. En met ipchains kun je dit wel meten neem ik aan.

Maar nog twee vraagjes:

1) het getal wat hier uit ipchains wordt gefilterd, zijn dat bits of bytes?

2) hoe kan het dat dat getal steeds maar blijft oplopen? is het te resetten?
.. zo heb volgens mij alle antwoorden op m'n vragen ondertussen, ik zal ze even met jullie delen :)

1) traffic van IP:POORT combinatie => + protocol UDP OF TCP (weet iemand of een quake3 server UDP en/of TCP verkeer veroorzaakt of hoe kan ik dat checken?)

ipchains rules hiervoor:
code:
1
2
3
4
5
6
7
8
9
10
ipchains -N q3_in
ipchains -N q3_out

# input
ipchains -A input    -s 0.0.0.0/0     -d 192.168.0.17 27960   -p udp  -j q3_in
ipchains -A q3_in  -s 0.0.0.0/0     -d 192.168.0.17 27960   -p udp   -j ACCEPT

# output
ipchains -A output    -s 192.168.0.17 27960     -d 0.0.0.0/0  -p udp   -j q3_out
ipchains -A q3_out  -s 192.168.0.17 27960     -d 0.0.0.0/0  -p udp   -j ACCEPT


2) de traffic uit ipchains is in bytes. Als ik hier KBytes van wil maken moet ik dan delen door 1000 of 1024?

3) om de teller (de chain) te resetten kan je alle regels flushen en opnieuw toevoegen, is hier een betere of makkelijkere manier voor?

Verwijderd

http://rousse.pm.org/sasacct/

heb je hier anders wat aan?

en in 1 kB gaan 1024 bytes :)

[ Voor 22% gewijzigd door Verwijderd op 23-05-2003 13:19 ]

Pagina: 1