LINUX.ORG.RU
ФорумAdmin

Firewall и учет трафика интернет на одном компе


0

0

Здравтвуйте! такая проблема , у меня есть комп с двумя сетевыми картами и есть модем adsl(настроенный бриджем)подключенный к этому компу,помимо его в сети находиться 5 компьютеров , мне нужно настроить комп с двумя сетевухами как firewoll и чтобы еще считал трафик только интернет, а не локальный. Посоветуйте какую систему лучше поставить чтобы добиться этого результата. Спасибо! (GhostDog)

anonymous

Ответ на: комментарий от se

(GhostDog) на каком дистре лучше все это поставить?нужен ведь еще фаер, потомучто все компьютеры в инет будут выходить через этот комп, нужно считать трафик какой комп сколько качал.

anonymous
()

трафик очень просто считать iptables :)

true_admin ★★★★★
()
Ответ на: комментарий от anonymous

с помощью iptables:



$ipt -N t_in_int_$1
$ipt -N t_out_int_$1
$ipt -F t_in_int_$1
$ipt -F t_out_int_$1
$ipt -N acct_in_$1
$ipt -F acct_in_$1

$ipt -A FORWARD -d $2 -i $INET_IFACE -p all -m state --state ESTABLISHED,RELATED -j t_in_int_$1

$ipt -A FORWARD -s $2 -o $INET_IFACE -p all -m state --state NEW -j t_out_int_$1

$ipt -A t_in_int_$1 -j acct_in_$1
$ipt -A t_out_int_$1 -j acct_in_$1

$ipt -A acct_in_$1 -j ACCEPT

#####################
# NAT
#####################
$ipt -t nat -A POSTROUTING -s $1 -o $INET_IFACE -j SNAT --to-source $INET_IP

#**************************

MNTH=`date +%m%y`
DAT=`date +%d`
VREM=`date +%T`
IN=`$ipt -L -Z t_in_int_$1 -x -v | sed -e "1,2D" | awk '{print $2}' | sed -e '2d'`
OUT=`$ipt -L -Z t_out_int_$1 -x -v | sed -e "1,2D" | awk '{print $2}' | sed -e '2d'`
$2}' | sed -e '2d'`
TRAF=`$ipt -L -Z acct_in_$1 -x -v | sed -e "1,2D" | awk '{print $2}' | sed -e '2d'`
if [ $TRAF -ne 0 ]; then
echo "$DAT $1 $TRAF $IN $OUT $VREM">> ${MNTH}.xls
fi


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

>на каком дистре лучше все это поставить?

FreeBSD 6.3

se ★★
()
Ответ на: комментарий от anonymous

адаптируй под себя:


#!/bin/sh
WWQ=/var/zcount/account.conf
zcount="/var/www/cgi-bin"
WWname=`grep -v ^# $WWQ | awk '{print $1}'`
WWip=`grep -v ^# $WWQ | awk '{print $2}'`
WWshape=`grep -v ^# $WWQ | awk '{print $6}'`
cours=30
cena=0.09
column=3
columi=4
it=0
len=4
qa=0
ee=0

if [ ! -n "$1" ]
then
MNTH=`date +%m%y`
fi
if [ -n "$1" ]
then
len=`expr length $1`
if [ $len -eq 2 ]
then
MNTH=`date +%m%y`
qa=$1
else
MNTH=$1
fi
fi
DAT=`date +%d`"."`date +%m`"."`date +%y`
qa=`date +%d`

echo "Content-type: text/html; charset=koi8-r"
echo
echo "<html><head><title>Трафик</title><LINK href="styles.css" rel=stylesheet></head><body>"
echo "<h2>Трафик пользователей Интернета</h2>"
echo "<h3>Дата:&nbsp;&nbsp;$DAT</h3>"

echo "<table border=3 width=100% cellspacing=0 cellpadding=2>"
echo "<tbody>"
echo "<tr bgcolor=#9bb4fc>"
echo "<td>Пользователь</td><td>Выделено (Kb)</td>"
echo "<td colspan=5><table border=0 cellspacing=0 width=100%><tr><td colspan=5 align=center>Пользование услугами</td></tr>"
echo "<tr><td width=20%>Всего (Kb)<td width=20%>Входящий (Kb)</td><td width=20%>Остаток (Kb)</td><td width=20%>Сегодня</td><td width=20%>Стоимость(рубл.)</td></tr></table></td>"
echo "</tr>"


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

продолжение :

for i in $WWip; do
let "ee=ee+1"
uje=0
ujei=0
ujeid=0
cen=0
rest=0
ii=0
iid=0
io=0
shape=0
shapek=0
j=`expr $j + 1`
b=`echo $WWname | awk '{print $'"$j"'}'`
shape=`echo $WWshape | awk '{print $'"$j"'}'`
if [ ${shape:(-1)} = "K" ] || [ ${shape:(-1)} = "M" ];then
if [ ${shape:(-1)} = "K" ]; then
bb=${shape/K/*1024}
let "shape=$bb"
else
bb=${shape/M/*1048576}
let "shape=$bb"
fi
fi
let "shapek=$shape/1024"
if [ -f $zcount/$b"_"${MNTH}.xls ]; then
if [ $len -eq 4 ];then
uje=`awk -v column="$column" '{total +=$column} END {print total}' "$zcount/$b"_"${MNTH}.xls"`
ujei=`awk -v columi="$columi" '{total +=$columi} END {print total}' "$zcount/$b"_"${MNTH}.xls"`
ujeid=`awk -v columi="$columi" '$1=='$qa' {total +=$columi} END {print total}' "$zcount/$b"_"${MNTH}.xls"`
else
uje=`awk -v column="$column" '$1=='$qa' {total +=$column} END {print total}' "$zcount/$b"_"${MNTH}.xls"`
ujei=`awk -v columi="$columi" '$1=='$qa' {total +=$columi} END {print total}' "$zcount/$b"_"${MNTH}.xls"`
fi
fi
if [ "$ujei" ]
then
io=`expr $uje / 1024`
let "ii=$ujei/1024"
fi
if [ "$ujeid" ]
then
let "iid=$ujeid/1024"
fi
cen=$(echo "$ujei * $cours * $cena / 1048576" | bc)
rest=$(echo "($shape - $ujei) /1024" | bc )
let "it=it+$ujei"

if [ $ee -eq 2 || $ee -eq 4 || $ee -eq 6 || $ee -eq 8 ];then
echo "<tr color='#f5f5f5'><td width=20%>$b</td><td align=right width=20%>$shapek</td><td align=right width=12%>$io</td><td align=right width=12%>$ii</td><td align=right width=12%>$rest</td><td align=right width=12%>$iid</td><td align=right width=12%>$cen</td></tr>"
else
echo "<tr><td width=20%>$b</td><td align=right width=20%>$shapek</td><td align=right width=12%>$io</td><td align=right width=12%>$ii</td><td align=right width=12%>$rest</td><td align=right width=12%>$iid</td><td align=right width=12%>$cen</td></tr>"
fi
done
cenr=$(echo "$it * $cours * $cena / 1048576" | bc)
cend=$(echo "$it * $cena / 1048576" | bc)
it=`expr $it / 1024`
it1=`expr $it / 1024`
echo "<tr><td colspan=7>Итого на $DAT:" $it"K" "("$it1"M) \$$cend $cenr"рубл."</td></tr>"
echo "</tbody>"
echo "</table>"

echo "<br>"
echo "<font face="Verdana,Arial" size=1 color=blue>(C) 2005</font>"
echo "</br>"
echo "</body></html>"

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