LINUX.ORG.RU
ФорумAdmin

Ipchains question


0

0

На маршрутизаторе нужно считать трафик.
Для этого создается соответствующая цепочка,
в которой и производится подсчет.

Вопрос: если на эту цепочку ссылаться и из input,
и из output, то каждый пакет будет учитываться по 2 раза,
или нет?
Если да, то из какой цепочкм на нее ссылаться?

Спасибо


Ежели указать в правиле имя интерфейса, на котором считаем, то скорее всего 1 раз (-i <iface_name>). Другое дело, что 2 разные цепочки (для входящего и исходящего) IMHO удобнее.

Dimai
()
Ответ на: комментарий от Alone

Нужно считать проходящий через маршрутизатор трафик.
для этого делаю :
ipchains -I input -s 0.0.0.0/0 -d 0.0.0.0/0 -j calc_trafic
ipchains -I output -s 0.0.0.0/0 -d 0.0.0.0/0 -j calc_trafic

ipchains -A calc_trafic -s IP_из_списка -d 0.0.0.0/0
ipchains -A calc_trafic -d IP_из_списка -s 0.0.0.0/0
// и так для каждого IP
потом ipchains -L -v > ./stat
... и там анализирую

Вопрос : нужно ли делать ссылку на calc_trafic и в input, и в output?

Спасибо.

pivoo
() автор топика

Если это маршрутизатор БЕЗ маскарадинга, то только в input IMHO. Если это маршрутизатор с маскарадингом, то входящий из интернета траффик на входе посчитать по клиентам просто не получается (он адресован на адрес интерфейса, от имени которого маскарад) и приходится считать на выходе.

Dimai
()
Ответ на: комментарий от Dimai

Я считаю так (перловый код, конечно, не шедевр, но сгодится): -------------------------------------------------------------- # Extract from ipchains rules set #well, let's get some accounting statistics # Routing traffic $IPCHAINS -A input -i $EXTIF -s 0/0 -d $INTERNALNET #Masq traffic $IPCHAINS -A input -i $EXTIF -s 0/0 -d <masqueraded_IP>/32 -------------------------------------------------------------- #!/usr/bin/perl open (TRAFFIC, "ipchains -L input -nvx |") or die ("Cannot open file"); @lines=<TRAFFIC>; close TRAFFIC; for ($i=0; $i<3; $i++) { #First check rule (that's routing ) All --> Internal Net @item=split(/\s+/, $lines[$i]); #Second check rule (that's masquerading) All --> Masqueraded IP item1=split(/\s+/, $lines[$i+1]); } $item[1]=$item1[1]+$item[1]; $item[2]=$item1[2]+$item[2]; open (TRAFDAY, ">>/home/ups/traffic_day.txt") or die ("Cannot open file"); $date= `date +%x`; chomp $date; $date= $date . " " . `date +%X`; print TRAFDAY "$item[1]" . ":" . "$item[2]" . ":" . "$date"; close TRAFDAY; my $all_pkts=0; my $all_bytes=0; open (SUMTRAF, "/home/ups/traffic_day.txt") or die ("Cannot open file"); @records_day=<SUMTRAF>; close SUMTRAF; open (INDEX_HTML, ">/home/ups/traffic.html") or die ("Cannot open file"); print INDEX_HTML "<HTML><HEAD><HEAD><BODY><H2>Traffic accounting (external interface)</H2><hr><table>"; foreach $element (@records_day) { (my $pkts, my $bytes, my $record_time, my $record_time2, my $record_time3)=split(/:/,$element); print INDEX_HTML "<tr><td bgcolor=#CCE6FF>$pkts</td> <td bgcolor=#CCE6FF><b>$bytes</b></td> <td bgcolor=#CCE6FF>$record_time:$record_time2:$record_time3</td></tr> ;"; $pkts=~s/\D+/$1/; if ($bytes =~ /K$/) { $bytes=~s/\D+/$1/; $bytes=$bytes * 1024; #print "$bytes\n"; } if ($bytes =~ /M$/) { $bytes=~s/\D+/$1/; $bytes=$bytes * 1024 * 1024; } $all_pkts=$pkts+$all_pkts; $all_bytes=$bytes+$all_bytes; } print INDEX_HTML "</table><hr>"; $all_bytesk=$all_bytes/1024; $all_bytesm=$all_bytesk/1024; print INDEX_HTML "<b> Overall bytes: $all_bytes , $all_bytesk K, $all_bytesm M </b><hr>\n"; print INDEX_HTML "</BODY></HTML>"; close INDEX_HTML; system ("/sbin/ipchains -Z");

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.