Страница 1 из 1

Опять про подсчет трафика. На этот раз проблема с frox'ом.

Добавлено: 2007-10-26 7:51:59
Slider007
Вобщем вчера по ftp скачал порядка 26mb (Налогоплатильщик ЮЛ :lol: )
Трафик смотрю свой, и что же ? Скачаных 26mb как будто не качал - не видно :(.
Полез разбираться. Оказалось, что данные пришли с самого шлюза, что вообще-то логично, т.к. в фаярволе форвард идет на ip шлюза:

Код: Выделить всё

${FwCMD} add 1700 fwd 192.168.60.1,2121 tcp from ${NetIn}/${NetMask} to any 21 via ${LanOut}
Соответственно данные со шлюза и отдаются.

Запрос к MySQL'y выглядит стандартно (с сайта брал):

Код: Выделить всё

SELECT to_IP,SUM(bytes)/1024/1024 AS bytes FROM ${tablename} 
WHERE date = '${curdate}%' 
AND from_IP != '${ip_external_servera}' 
AND to_IP != '${ip_external_servera}' 
AND to_IP != '${ip_internal_servera}' 
AND from_IP != '${ip_internal_servera}' 
AND to_IP LIKE '${lan_mask}%' 
GROUP BY to_IP 
ORDER BY bytes DESC
И естественно то, что пришло с {ip_internal_servera} в вывод трафика не попадает.

Решил переписать запрос к БД, для чего пошел смотреть чего там мне пришло с шлюза (а я к нему и по ssh цепляюсь, и web-сервер внутренний на нем болтается - тоже к нему често обращаюсь, и файлы могу туда-сюда кидать). Получилось вот что:

Код: Выделить всё

SELECT sum(bytes/1024/1024) AS bytes, from_IP, port_from_IP FROM ${tablename} \
WHERE date = '2007-10-25' 
AND to_IP = '192.168.60.11' 
AND from_IP = '192.168.60.1' 
GROUP BY port_from_IP 
ORDER BY bytes DESC

(192.192.168.60.1 - сервер, 192.168.60.11 - мой компьютер)

Результат:
bytes   from_IP port_from_IP
32.9928 192.168.60.1    client
2.3900  192.168.60.1    48559
2.3887  192.168.60.1    43413
2.3651  192.168.60.1    47493
1.1910  192.168.60.1    46477
0.4216  192.168.60.1    80
0.1046  192.168.60.1    46594
0.0705  192.168.60.1    47464
80 порт, это понятно чего такое. А вот с остальным не понятки. Логично предположить, что трафик который я с ftp слил (26mb), прячется в первой строке (32.9928 192.168.60.1 client), но почему его тогда 33mb, а не 26 ? И чего это такое с 4ХХХХ портов накапало ?

Вобщем пришла мне в голову мысль добавить в запрос трафик который приходит с IP шлюза с порта "client". Выглядит примерно так:

Код: Выделить всё

SELECT 
to_IP,SUM(bytes)/1024/1024 AS bytes FROM ${tablename} 
WHERE 
(date = '${curdate}%') 
AND 
(to_IP LIKE '${lan_mask}%') 
AND 
((from_IP != '${ip_external_servera}' AND to_IP != '${ip_external_servera}' AND to_IP != '${ip_internal_servera}' AND from_IP != '${ip_internal_servera}') 
OR 
 (port_from_IP = 'client'  AND from_IP = '${ip_internal_servera}')) 
GROUP BY to_IP 
ORDER BY bytes DESC
Ну вроде считает.
Только как быть уверенным что по порту "client" пришел именно мой ftp трафик, и ничего лишнего туда не попало, либо наоборот, мой трафик туда не попал ?
Можно конечно вообще плюсовать весь трафик пришедший с шлюза, но тогда заведомо в таблицу трафика весь мусор будет сыпаться :(.

Вобщем проблема ..
Кто сталкивался с этим ? И как вышел из ситуации ?
Может я недомудрил чего-то, или наоборот перемудрил ??

Ну вот, опять целую тираду написал ..

Re: Опять про подсчет трафика. На этот раз проблема с frox'ом.

Добавлено: 2007-10-26 9:38:35
dikens3
Frox действительно отдаёт от своего IP. Я просто запретил всем доcтуп по FTP во внешний мир.