PDA

Просмотр полной версии : Iptables подсчет трафика


blasterjon
15.01.2008, 14:53
У меня на серваке ОС RHEL Linux есть два сетевухи:
eth0:
ip: 192.168.10.100
mask: 255.255.255.0
gateway: 192.168.10.1
dns: 192.168.10.2

eth1:
ip: 192.168.30.1
mask: 255.255.255.0
и два клиентский машин
PC1:
ip: 192.168.30.2
mask: 255.255.255.0
gateway: 192.168.30.1
dns: 192.168.10.2

PC2:
ip: 192.168.30.3
mask: 255.255.255.0
gateway: 192.168.30.1
dns: 192.168.10.2

написал подсчет трафика на Iptables:

#/bin/bash
date1=`date '+%Y-%m-%e'`;
date2=`date '+%H:%M:%S'`;
iptables="/sbin/iptables"
iptables -t mangle -nxvL PREROUTING | awk '/eth1/ {print $8,$2}'>/etc/traffic/traffic.txt
cat /etc/traffic/traffic.txt | while read line;
do
var1=`echo "$line"|awk '{print $1}'`
var2=`echo "$line"|awk '{print $2}'`
MYSQL_RESULT=`mysql -D mysql -u root --password=хххххх -e "INSERT INTO day VALUES('$var1','$var2','$date1','$date2')"`;
done;

вот мой Iptables

# Generated by iptables-save v1.2.11 on Sat Jan 5 09:34:21 2008
*nat
:PREROUTING ACCEPT [198:52937]
:POSTROUTING ACCEPT [13:2140]
:OUTPUT ACCEPT [150:10393]
-A PREROUTING -d ! 192.168.30.0/255.255.255.0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -d ! 192.168.30.0/255.255.255.0 -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 3128
-A PREROUTING -d ! 192.168.30.0/255.255.255.0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth0 -j SNAT --to-source 192.168.10.100
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Sat Jan 5 09:34:21 2008
# Generated by iptables-save v1.2.11 on Sat Jan 5 09:34:21 2008
*mangle
:PREROUTING ACCEPT [3709:1993470]
:INPUT ACCEPT [3718:1994172]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3147:690917]
:POSTROUTING ACCEPT [3147:690917]
-A PREROUTING -s 192.168.30.2 -d 192.168.30.0/255.255.255.0 -i eth1 -j ACCEPT
-A PREROUTING -s 192.168.30.3 -d 192.168.30.0/255.255.255.0 -i eth1 -j ACCEPT
-A POSTROUTING -s ! 192.168.30.0/255.255.255.0 -d 192.168.30.2 -o eth0 -j ACCEPT
-A POSTROUTING -s ! 192.168.30.0/255.255.255.0 -d 192.168.30.3 -o eth0 -j ACCEPT
COMMIT
# Completed on Sat Jan 5 09:34:21 2008
# Generated by iptables-save v1.2.11 on Sat Jan 5 09:34:21 2008
*filter
:INPUT ACCEPT [3710:1982876]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3139:679621]
-A FORWARD -i eth1 -j ACCEPT
COMMIT
# Completed on Sat Jan 5 09:34:21 2008

не понимаю, чего то неправильно вычисляют. На один ден максимум 2 мегабайта показывают. А на трафик инспекторе другая результат. Или я неправильно настроил Iptables. И как можно сделат так, чтобы когда я ип адреса клиентских машин написаль на Iptables е и потом был доступ к интернет в клиентских машин. Народ помогите настроит Iptables

Rustam Khamidov
15.01.2008, 16:44
Вижу что клиентов по http/https/8080 ты прозрачно проксируешь через кэш-прокси сервер squid. Вижу, что остальный трафик клиентов в NAT.

Мои вопросы:
1. А зачем маскарад? Туда что нить вообще попадает?
1. Основным потребителем инета в твоем случае является твой сервер, точнее сквид. Где ты его обсчитываешь?
2. Вторым потребителем является пользователи под натом, ты их считаешь в таблице mangle?
3. Сумма клиентского трафика под сквидом и сумма трафика потребляемого из инета сквидом практически никогда не совпадет. Разница будет зависеть от кол-ва запросов, чем их больше тем больше будет разница. Что ты подсчитаешь и что должно биться с провайдером?

Рекомендации:
1. Так как у тебя нет прямого роутинга клиентских машин а есть один айпи пропускаемый твоим провайдером, то вход-выход с интерфейса eth0 вдолжен совпадать с биллингом провайдера.
2. Организуй подсчет на входе-выходе интерфейса eth1 в таблице фильтров с разносом по клиентским машинам. Сумма клиентского трафика будет всегда больше (крайне редко равна) трафика провайдера, при условии что на сервере не сидит админ и чего либо не качает ,)
3. Я не увидел ни одного правила файервола *( Провайдер защищает снаружи? А пользователи с локалки не балуются?

В принципе могу написать правила, сообщи если нужно.
Если же хочешь не новых правил а точного местонахождения ошибок в твоем решении, то для полноценного анализа не хватает :
iptables -nvx -L PREROUTING > /etc/traffic/iptables.part.dump.txt
iptables -nvx -L > /etc/traffic/iptables.full.dump.txt
cat /etc/traffic/iptables.part.dump.txt | awk '/eth1/ {print $8,$2}' > /etc/traffic/traffic.post.awk.txt

А затем три файла в студию
/etc/traffic/iptables.part.dump.txt
/etc/traffic/iptables.full.dump.txt
/etc/traffic/traffic.post.awk.txt

Rustam Khamidov
15.01.2008, 17:01
Прочти раздел 3.1 по доке http://www.opennet.ru/docs/RUS/iptables/

Ruslan Juldashev
15.01.2008, 19:41
# Generated by iptables-save v1.2.11 on Sat Jan 5 09:34:21 2008
*nat
:PREROUTING ACCEPT [198:52937]
:POSTROUTING ACCEPT [13:2140]
Смайлики очень гармонично смотрятся!