Учет интернет трафика

В системе Locker возможен учет интернет трафика по каждому компьютеру. Реализовать учет трафика в программе можно разными способами, каждый из которых имеет свои достоинства и недостатки:

Принцип работы встроенного в программу счетчика состоит в том, что весь измеряемый интернет трафик направляется через нее как через своеобразный "туннель", а она уже в свою очередь связана с интернетом через внешний прокси-сервер. Все программы (типа Internet Explorer-a), для которых нужно считать трафик, настраиваются так что связываются с интернетом через "туннель".

Для того чтобы задействовать встроенный счетчик трафика программы Locker-а нужно заполнить в окне настройки программы (Настройка - Параметры программы - Трафик) следующие параметры настройки:

Пример:
Прокси-сервер находится на компьютере 192.168.0.100, его порт = 80. 
Locker находится на компьютере 192.168.0.200.

В настройках Locker-a нужно указать:

"IP-адрес прокси-сервера" = 192.168.0.100
"Порт прокси-сервера" = 80
"Порт для подключения" = 2222 (например)

В настройках подключения Internet Explorer-а (и других программ, выходящих в интернет) нужно указать:

"Использовать прокси-сервер"
"Адрес" = 192.168.0.200
"Порт" = 2222


На базе "туннеля" реализован Плагин к программе Locker, позволяющий управлять трафиком через web  интерфейс (250 Кбайт). Автор: Ковалев Геннадий. Вот краткая информация о нем:

В нашей организации управление доступом к интернету осуществляется через web интерфейс. То есть, если пользователь хочет зайти в интернет, то он идет на страничку нашего сервера, вводит логин-пароль, и, когда интернет уже не нужен, таким же образом отключает его.  Соответственно, когда надо включить/выключить интернет сразу некоторой группе лиц, есть "учетные записи администраторов интернета", которые могут со своего компьютера включать/выключать доступ другим. Если ваша система учета трафика тоже построена на web интерфейсе, то скорее всего вы сможете настроить этот плагин для работы с ней.


Для того чтобы использовать для подсчета трафика внешнюю программу (TMeter и т.п.) нужно в настройках программы поле "IP-адрес прокси- сервера" обязательно обнулить, а вместо этого указать "Путь к файлам трафика" программы Traffic Meter.

Для начала, вот пара ссылок для тех, что хочет организовать учет трафика на базе Linux-компьютера:

Для тех, у кого выход в интернет организован через Windows-компьютер, можно сделать измерение трафика при помощи популярной программы Traffiс Meter (http://tmeter.narod.ru) или UserGate. Эту программу нужно установить на один из компьютеров сети, на котором "виден" интернет трафик каждого компьютера. Обычно, это компьютер, на котором работает прокси-сервер или роутер. Возможен также вариант, когда TMeter стоит на каждом компьютере но он сложнее и менее надежен. Программа Locker может читать текстовые файлы отчета о трафике программы TMeter. К сожалению, последние версии TMeter-a делают этот отчет уже не в виде текстового файла, а как xml-документ. Поэтому для работы с Locker-ом нужна версия программы TMeter не старше 3.17. Скачать TMeter версии 3.17 можно отсюда

При помощи программы Texter (600 Кбайт) можно преобразовать XML-отчеты TMeter-а последних версий,  в текстовый формат, понятный программе Locker.  Есть также скрипт  который делает то же самое, но его надо периодически запускать (например, при помощи любого sheduler-а). Вот еще один конвертор XML в текстовый файл программы TMeter: http://www.slalom.si.net.ua/base/parser.rar (34 Кбайт).  Еще один конвертор XML в TXT (360 Кбайт) может работать как системный сервис (Дудченко Алексей).

Надо иметь в виду, что в комплекте с программой TMeter идет альфа-версия драйвера WinPCap, которая нестабильно работает под Windows 2000 и XP. Поэтому нужно скачать более старую версию этого драйвера с http://netgroup-serv.polito.it/winpcap 

TMeter может сохранять информацию о текущем трафике каждого компьютера в постоянно обновляющемся текстовом файле определенного формата с именем наподобие 2003-11.txt. Из этого файла и берет информацию программа Locker. Вот пример такого файла:

Время последней модификации: Tue Aug 14 23:59:59

 Id |             Название фильтра |   Всего байт |  Перед. байт | Принято байт
-------------------------------------------------------------------------------
  2 |                           k1 |        40615 |            0 |        40615
  3 |                           k2 |        26468 |        26468 |            0
  4 |                           k3 |        16784 |        16784 |            0
  5 |                           k4 |        86390 |        86390 |            0
  1 |                           k5 |        84378 |        84378 |            0
  6 |                           k6 |      2212282 |       322603 |      1889679
  7 |                           k7 |      2526572 |       350978 |      2175594
  8 |                           k8 |        17808 |        17808 |            0
  9 |                           k9 |        18935 |        18935 |            0
 10 |                          k10 |      3382868 |      1011139 |      2371729
 11 |                          k11 |      2808502 |      1058997 |      1749505

Для организации учета трафика при помощи программы TMeter нужно сделать следующее:

  1. Устанавливаем программу TMeter. Ей для работы нужен еще драйвер WinPcap, который тоже надо установить. Под некоторыми версиями Windows (например XP) последние alfa-версии WinPcap работают неустойчиво (система "виснет") поэтому нужно скачать с их сайта и установить более старую версию.  
    В поле "Network adapter" в верхней части окна TMeter-а выбираем сетевой адаптер, через который производится связь с компьютерами локальной сети.  Если в этом поле не удается выбрать данный адаптер, то, вероятно, TMeter его "не видит" и надо его заменить на адаптер другой фирмы.
  2. Настраиваем фильтры TMeter. Делаем для каждого компьютера фильтры с именами k1, k2, k3 ... Имена фильтров должны быть ОБЯЗАТЕЛЬНО именно такие!  Именно по именам фильтров Locker находит информацию о трафике каждого компьютера.   Вот по как надо настраивать фильтры:
    - Предварительные фильтры не нужны (если вам не нужно что-то особое).
    - Адрес источника: Определенный IP-адрес (конкретного компьютера, например 192.168.0.1)
    - Адрес получателя: Мой компьютер
    - Тип протокола: TCP - чтобы считал не весь трафик, а только интернет 
    - Mirrored - в обе стороны
    - С любого порта, на определенный порт. В поле порт нужно указать порт прокси-сервера (зависит от настройки прокси-сервера и обычно  80 или 3128).  
    Образец файла настроек с фильтрами приведен ниже. Настроенный файл фильтров надо обязательно сохранить и включить его автоматическую загрузку при запуске TMeter-a.
  3. В настройках TMeter-a в окне "Редактирование набора фильтров" на вкладке "Протоколирование счетчиков" выбираем каталог, в котором от будет создавать файлы с протоколами трафика. Пусть, например, это будет каталог c:\Locker\Traf\, который надо предварительно создать. Там же надо включить опцию "Записывать показания счетчиков на ежемесячной основе". Шаблон для имен файлов должен быть такой, чтобы он "стыковался" с программой Locker, например:  c:\Locker\Traf\%Y-%m.txt   В результате, в указанном каталоге TMeter будет создавать файлы с текущим трафиком по каждому компьютеру. Пример такого файла приведен выше. Именно эти файлы будет читать программа Locker. В этом файле ОБЯЗАТЕЛЬНО должны быть строки "k1", "k2", "k3"...
  4. В настройках программы Locker в группе "TrafficMeter"  в поле "Файлы трафика" указываем путь к файлам трафика TMeter-a: c:\Locker\Traf\. 
    ВНИМАНИЕ: Не используйте имен наподобие c:\Program Files\Tmeter\Traf\ (с пробелами)! 
    Программы TMeter и Locker могут работать на разных компьютерах локальной сети, поэтому путь к файлам трафика может быть, например. таким: \\Server\TMeter$\. Если каталог с файлами TMeter-a находится на другом компьютере, то к нему надо открыть доступ в сети на чтение и на ЗАПИСЬ. В поле "Формат файлов" выбираем один из двух возможных форматов имен файлов трафика.  TMeter, соответственно, должен формировать файлы с таким же форматом имен. После этого в поле "Текущий файл" должно быть видно имя текущего (сегодняшнего) файла трафика TMetera, и при помощи кнопки "Посмотреть текущий файл" можно его посмотреть.
    Имейте  виду, что после изменений в настройках Locker-a, относящихся к TMeter-у, его надо перезагрузить, чтобы новые настройки начали действовать.
  5. На вкладке "Сообщения" окна настройки Locker-а надо установить несколько параметров "Интернет трафик".
  6. Добавить в Справочнике Услуг одну или несколько услуг с включенным признаком "Интернет". Для них указать цены на странице "Интернет" записи об Услуге, если цены не зависят от номера компьютера, или цены в записях о Тарифах услуги, если цены зависят от номера компьютера. Рекомендуем для начала настроить тарификацию трафика следующим образом: 
    - В настройках Locker-a включить режим "Останавливать сеанс когда закончится сумма оплаты".
    - В записи об Услуге типа "Интернет" в поле "Цена услуги" установить цену равную базовой цене аренды компьютера без учета трафика, например: 20 руб/час.
    -  Установить стоимость входящего (или всего) трафика, например: 5 руб за Мбайт. Не нужно ОДНОВРЕМЕННО устанавливать стоимость входящего и всего трафика, иначе сумма удвоится!
    - Поля "Неоплачиваемый трафик" оставить пустыми.

В результате Locker должен начать учитывать трафик для каждого сеанса с услугой типа "Интернет" (при включенном TMeter-e).  На вкладке "Трафик" Записи о Сеансе выводится подробная информация о трафике сеанса и его стоимости. Трафик по сеансу будет не равен нулю, если в текущем файле протокола трафика (в каталоге c:\Locker\Traf\) в записи о данном компьютере цифры трафика на время начала сеанса меньше чем трафик на его окончание (или на текущий момент, если сеанс еще не закончился). Это можно проверить и "вручную" редактируя этот файл даже если TMeter не работает.

Внимание пользователям антивируса Касперского (KAV).  В настройках антивируса надо отключить контроль за файлами *.txt в каталоге с отчетами о трафике TMetera. Иначе информация о трафике в этих файлах будет периодически обнуляться из-за конфликта TMetera с KAV.

Вот еще одна статья о настройке TMeter-a.


Locker может включать и выключать трафик на компьютерах как автоматически (при превышении лимита трафика) так и при помощи кнопки "Включить/Выключить интернет" в Панели управления. Включение и выключение трафика производится при помощи внешних скриптов, которые должен быть описан в окне "Скрипты" записи об Услуге (кнопка "Скрипты" в Справочнике Услуг). Эти скрипты должны давать команду прокси-серверу на включение или выключение трафика заданного компьютера. В скрипт можно передавать параметры такие как IP-адрес компьютера и т.п. Для прокси на базе *NIX-машин такие скрипты пишутся легко. Для прокси, работающих под Windows все гораздо сложнее, так как большинство из них не предусматривают управления из других программ. Своим способом управления популярным прокси WInRoute поделился здесь Антон Костюкевич.  Для популярного сервера WinGate также имеется готовое решение при помощи программы WGShell.

Начиная с версии 4.713 программа LockWin (клиентская часть системы Locker) умеет собственными силами (без дополнительных скриптов) управлять доступом компьютера к интернету по командам Locker-а. Делает она это путем включения и выключения на компьютере "Шлюза по умолчанию". Для этого в ее настройках имеется параметр "IP-адрес шлюза", в котором должен быть указан IP-адрес устройства, через который производится подключению к интернету.
Чтобы этот способ работал, настраивать клиентские компьютеры нужно так:


Вот еще один вариант реализации включения и выключения доступа к интернету при помощи программы LockWin и утилиты Windows ARP.exe

С помощью утилиты ARP.exe, которая есть в составе Windows, можно управлять таблицей соответствия IP-адресов MAC-адресам сетевых плат. Этот способ основан на отключении связи с компьютером, выполняющим функции шлюза в интернет.  Соответственно, у этого способа есть ограничение, состоящее в том, что данный компьютер (шлюз) должен использоваться клиентскими компьютерами только для  выхода в интернет и больше ни для каких других целей. То есть его нельзя использовать ни в качестве файл севера, ни как рабочее место администратора - ничего кроме выхода в интернет и подсчета интернет трафика. Но зато это может быть совсем не "могучий" компьютер и работать под управлением любой операционной системы. Более того, этот компьютер может находиться даже не у вас в клубе - а у вашего провайдера интернета :)

В этом примере используется возможность запуска внешних программ (скриптов), реализованная в программе LockWin начиная с версии 4.774.  Описание вызова внешних программ LockWin-е делаются при помощи его Редактора запуска программ.

В этом примере: 192.168.0.100 - IP-адрес сетевой карточки компьютера-шлюза, 00-03-47-99-78-4f - MAC-адрес сетевой карточки компьютера-шлюза.

1) Точка вызова: "Включение интернета"
    Программа: Arp.exe  
    Параметры: -s  192.168.0.100  00-03-47-99-78-4f
    Описание:  Связывает с IP-адрес шлюза в интернет с MAC-адресом сетевой карточки компьютера-шлюза

2)  Точка: "Отключение интернета"
    Программа: Arp.exe  
    Параметры: -s  192.168.0.100  00-00-00-00-00-00
    Описание:  Связывает IP-адрес шлюза с несуществующим MAC-адресом сетевой карточки 

3)  Точка: "Запуск программы"
    Программа: Restart.bat 
    Параметры: %inet%
    Описание:  В зависимости от состояния признака "Интернет включен" ( %inet%) включает или выключает связь с шлюзом.   

Командный файл Restart.bat должен содержать следующее:

if %1==1 then goto PuskTraf
Arp.exe -s 192.168.0.100 00-00-00-00-00-00
goto End
:PuskTraf
Arp.exe -s 192.168.0.100 00-03-47-99-78-4f
:End 

Для надежности, этот же Restart.bat можно запускать каждую минуту как в разблокированном так и в заблокированном состоянии компьютера.

Спасибо за идею этого способа управления Локтионову Алексею из московского клуба FlashBack !


Вот еще один способ управления доступом к интернету, который прислал нам Dimanus:

Простой и эффективный способ включения/выключения инета для клиентов. Главное достоинство - моментальный разрыв активных соединений , т.е. предотвращение "утечки" трафика. Работает на 2000 и XP (стандартная утилита netsh).

В этом примере сетевое соединение называется rlan, карта имеет адрес 192.168.0.1, сервер, он же dns и шлюз - 192.168.0.100. Впрочем, DNS тут даже не затрагивается.

Итак, включение инета:

netsh interface ip set address rlan static 192.168.0.1 255.255.255.0 192.168.0.100 1

Выключение:

netsh interface ip set address rlan static 192.168.0.1 255.255.255.0 NONE

Маршрутизатором может быть виндовский общий доступ (только тогда адрес сервера будет 0.1) или WinRoute, что предпочтительнее из-за доп. возможностей типа контент-фильтра и трафик-антивируса.

Примечание: при выключенном шлюзе DNS запросы всё равно идут, т.к. адрес DNS сервера находится в этой же сети.
Решение1: писать юзерам DNS провайдера.
Решение2: писать юзерам DNS как адрес ДРУГОЙ сетевой карты СЕРВЕРА, которая будет им видна только после включения шлюза. Всё равно в WinRoute под термином "FIREWALL" понимается любой адрес данной машины.

Этот способ также может использоваться через "Запуск доп. программ" LockWin-a


Пример настроек фильтров программы TMeter (файл Locker.tmf).:

[Common]
Version=2.50
Timestamp=10 April 2002, 09:10:12
LAT=192.168.200.1,192.168.200.250
LogMode=0
LogEnable=1
LogMonthlyEnable=1
LogPath=D:\TMeter\Trafik\
NextFilterId=11
PreFilterType=0

[Filter]
id=1
Name=From my computer to any computer (исходящий трафик):
Color=255
Visible=0
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=No, Proto=IP, src_addr=MyIP, src_port=0, dst_addr=0.0.0.0/0.0.0.0, dst_port=0

[Filter]
id=2
Name=From my computer to any computer (входящий трафик):
Color=65280
Visible=0
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=No, Proto=IP, src_addr=0.0.0.0/0.0.0.0, src_port=0, dst_addr=MyIP, dst_port=0

[Filter]
id=3
Name=From my computer to any computer:
Color=4194368
Visible=0
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=Yes, Proto=IP, src_addr=MyIP, src_port=0, dst_addr=0.0.0.0/0.0.0.0, dst_port=0

[Filter]
id=4
Name=From my computer to any web-server
Color=16711680
Visible=1
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=Yes, Proto=TCP, src_addr=192.168.200.136/255.255.255.255, src_port=0, dst_addr=0.0.0.0/0.0.0.0, dst_port=80
Mirrored=Yes, Proto=TCP, src_addr=192.168.200.136/255.255.255.255, src_port=0, dst_addr=0.0.0.0/0.0.0.0, dst_port=443

[Filter]
id=5
Name=Весь локальный трафик
Color=1175267
Visible=1
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=Yes, Proto=IP, src_addr=MyIP, src_port=0, dst_addr=LAN, dst_port=0

[Filter]
id=6
Name=Весь интернет-трафик
Color=8388736
Visible=1
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=Yes, Proto=TCP, src_addr=MyIP, src_port=0, dst_addr=LAN, dst_port=80

[Filter]
id=7
Name=k1
Color=5418331
Visible=1
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=Yes, Proto=TCP, src_addr=192.168.200.1/255.255.255.255, src_port=0, dst_addr=MyIP, dst_port=80

[Filter]
id=8
Name=k2
Color=255
Visible=1
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=Yes, Proto=TCP, src_addr=192.168.200.2/255.255.255.255, src_port=0, dst_addr=MyIP, dst_port=80

[Filter]
id=9
Name=k3
Color=255
Visible=1
LogTrafficEnable=0
LogTrafficFlushTimes=2
LogTrafficFirstADO=0
LogTrafficOptions=0
NoCompressNonPrivilegedPorts=0
Mirrored=Yes, Proto=TCP, src_addr=192.168.200.3/255.255.255.255, src_port=0, dst_addr=MyIP, dst_port=80

 . . .