Сбор статистики по протоколу IP-accounting с маршрутизатора Cisco
На сервере с биллинговой системой необходимо создать конфигурационный файл /netup/utm5/get_xyz .conf следующего содержания:
outhost = 127.О.О .1 outport=9996 loop=30 host {
type=cisco ip=10.1.2.99 port=514 login=root timeout=5
}
Универсальные сборщики статистики
Универсальные сборщики статистики
При этом на маршрутизаторе Cisco необходимо включить на нужном интерфейсе аккаунтинг командами.
CiscoRouter#conf t
CiscoRouter(config)# interface FastEthernet 0/0 CiscoRouter(config-if)#ip accounting
Разрешить машине с get_xyz забирать статистику.
CiscoRouter#conf t
CiscoRouter(config)#username netup privilege 8 password 0 plain text password
CiscoRouter(config)#ip rcmd rsh-enable CiscoRouter(config)#no ip rcmd domain-lookup
CiscoRouter(config)#ip rcmd remote-host netup REMOTE_ IP_ADDRESS REMOTE_USER_NAME enable 8
REMOTE_lP_ADDRESS - IP-адрес сервера с get_xyz.
REMOTE_USER_NAME - имя пользователя на сервере с get_xyz, от которого производится запуск сборщика.
CiscoRouter(config)#privilege exec level 8 show ip accounting checkpoint
CiscoRouter(config)#privilege exec level 1 show ip
CiscoRouter(config)#privilege exec level 8 clear ip accounting
CiscoRouter(config)#ip accounting-threshold 4294967295
После завершения настройки маршрутизатора Cisco произведите запуск сборщика командой.
/netup/utm5/bin/get_xyz -d
Проверьте, происходит ли забор статистики с маршрутизатора Cisco командой.
show ip accounting
Проверьте, появляется ли статистика в формате NetFlow ?.5 на указанном интерфейсе. Чтобы проверить это, выполните команду.
su# tcpdump -ni lo0 port 9996
udp
При этом должно отобразиться примерно следующее:
12:40:51.958448 127.0.0.1.4675 > 127.0.0.1.9996:
1464
12:40:51.959051 127.0.0.1.4675 > 127.0.0.1.9996: udp 408
12:40:51.959074 127.0.0.1.4675 > 127.0.0.1.9996: udp 648
Сбор статистики по протоколу IP-accounting с коллектора ipcad
На сервере с биллинговой системой необходимо создать конфигурационный файл /netup/utm5/get_xyz .conf следующего содержания:
outhost = 127.0.0.1 outport=9996 loop=30 host {
type=cisco ip=10.0.0.1
# IP-адрес сервера с установленным ipcad. port=514
login=root
password=root
timeout=5
}
На удаленном сервере необходимо установить пакет ipcad () и создать конфигурационный файл /usr/local/etc/ipcad.conf примерно следующего содержания:
interface fxp0; rsh enable;
rsh root@127.0.0.1 admin; rsh root@10.0.0.2 admin;
# IP-адрес сервера с get_xyz и логин пользователя, от которого производится запуск get_xyz
Универсальные сборщики статистики
|
29 |

Accounting с ipcad будет передаваться утилите get_xyz, которая будет производить преобразование в формат Cisco NetFlow и экспортировать ее на локальный хост (127.0.0.1) порт 9996. Если всё настроено корректно, то на локальном сервере должны проходить UDP-пакеты на порт 9996. Проверить можно утилитой tcpdump:
su-2.05b# tcpdump -ni lo0 port 9996 tcpdump: listening on lo0
17:38:26.347689 127.0.0.1.2789 > 127.0.0.1.9996: udp 1464
17:38:26.550360 127.0.0.1.2789 > 127.0.0.1.9996: udp 1464
17:38:26.751455 127.0.0.1.2789 > 127.0.0.1.9996: udp 1464
17:38:26.952631 127.0.0.1.2789 > 127.0.0.1.9996: udp 1464
Сбор статистики по протоколу NetFlow с маршрутизатора Cisco
На маршрутизаторе Cisco необходимо включить на нужном интерфейсе NetFlow командами.
CiscoRouter# conf t
CiscoRouter(config)# interface FastEthernet 0/0 CiscoRouter(config-if)# ip route-cache flow
Затем указать адрес и порт сервера, на который производить отсылку пакетов Netflow:
CiscoRouter# conf t
CiscoRouter(config)# ip flow-export version 5
CiscoRouter(config)# ip flow-export destination 10.1.1.1 9996
Сбор статистики по протоколу NetFlow с маршрутизатора Cisco в случае использования NAT
Основная проблема при использовании NetFlow совместно с технологией преобразования IP-адресов NAT, заключается в том, что на внутреннем интерфейсе будет фиксироваться информация о переданном от клиента трафике, а на внешнем интерфейсе будет фиксиро-ваться трафик переданный из интернета на внешний IP-адрес маршрутизатора. Таким об-разом, в NetFlow-потоке будет информация о переданном трафике от клиента, но не будет фигурировать информация о данных переданных в сторону клиента.
Например, в рассмотренном ниже конфигурационном файле внутренняя сеть имеет IP-адреса 10.11.0.0 и маску подсети 255.255.0.0, а внешний интерфейс маршрутизатора имеет IP-адрес 10.1.0.1. При этом пользователь 10.11.0.6 пытается загрузить страницу с IP-адресом 195.161.112.6.
Интернет
I Ethernet 1/0
ІЛГ
Cisco 3620
Ниже приводится работающий конфигурационный файл маршрутизатора Cisco с комментариями:
Current configuration : 4013 bytes
!
version 12.3
service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption
hostname Router
Универсальные сборщики статистики
|

start-marker boot-end-marker
!
ip subnet-zero
!
ip cef
Интерфейс, на который производится перенаправление пакетов после обратного преобразования. Таким образом, на данном интерфейсе будет проходить трафик с IP-адреса 195.161.112.6 на IP-адрес 10.11.0.6. Чтобы данный трафик экспортировался по NetFlow, указываем опцию ip route-cache flow.
!
interface LoopbackO ip address 192.168.O.1 2 55.255.255. O ip route-cache policy ip route-cache flow
Внешний интерфейс маршрутизатора. На данном интерфейсе проходит трафик с IP-адреса 195.161.112.6 на IP-адрес этого же интерфейса - 10.1.0.1. Что бы данный трафик экспортировался по NetFlow, указываем опцию ip route-cache flow.
Кроме того, на данном интерфейсе необходимо указать опцию ip policy route-map NETUP_MAP, чтобы пакеты после обратного преобразования направлялись на интерфейс Loopback O согласно правилам, указанным в route-map.
!
interface Ethernet1/O ip address 1O.1.O.1 255.255. O.O ip nat outside ip route-cache policy ip route-cache flow ip policy route-map NETUP_MAP
Внутренний интерфейс маршрутизатора. На данном интерфейсе проходит трафик с IP-адреса клиента 10.11.0.6 на IP-адрес 195.161.112.6. Чтобы данный трафик экспортировался по NetFlow, указываем опцию ip route-cache flow.
!
interface Ethernet1/1 ip address 10.11.0.1 255.255.0.0 ip nat inside ip route-cache policy ip route-cache flow
Опции, указывающие IP-адрес какого интерфейса использовать для преобразования, а также информация о версии NetFlow-потока и адресе сервера UTM.
!
ip nat inside source list 1 interface Ethernet1/0 overload
ip flow-export version 5
ip flow-export destination 10.1.0.5 9996 ip classless
ip route 0.0.0.0 0.0.0.0 10.1.0.5
Списки доступа. Первый список доступа (номер 1) используется для указания, какую сеть необходимо преобразовывать во внешний IP-адрес при работе NAT. Второй список доступа (номер 108) используется для указания в route-map.
!
access-list 1 permit 10.11.0.0 0.0.255.255 access-list 108 permit ip any 10.11.0.0 0.0.255.255
Правила, указывающие, что если пакет направляется в сеть, указанную в списке доступа 108 (в данном случае 10.11.0.0), перенаправлять на интерфейс Loopback 0. Таким образом, все пакеты с внешних IP-адресов, в частности с IP-адреса 195.161.112.6, после обратного преобразования по техноло-
Универсальные сборщики статистики
Универсальные сборщики статистики
34
гии NAT, попадут на интерфейс Loopback 0, где будут зафиксированы и информации о них появится в потоке NetFlow.
!
route-map NETUP_MAP permit 10 match ip address 108
set interface LoopbackO Ethernet1/1
!
End
В случае если информация о трафике, переданном в сторону клиента, не появляется в NetFlow проверьте следующие пункты:
1. Работает ли route-map. Для этого выполните на маршрутизаторе команду:
show route-map NETUP_MAP
При этом счетчики переданных пакетов и байт должны увеличиваться.
2. Появляются ли пакеты в кэше NetFlow. Для этого сразу после получения клиентом информации из интернета выполните на маршрутизаторе команду:
show ip cache flow | include 195.161.112.6
При этом должна появиться информация о трафике примерно следующего вида:
Router#show ip cache flow | include 10.1.2.2
SrcIf SrcIPaddress
Pr SrcP DstP Pkts |
DstIf |
DstIPaddress |
Et1/0 195.161.112.6
06 0050 1093 3 |
Et1/1 |
10.11.0.6 |
Et1/1 10.11.0.6
06 1093 0050 5 |
Et1/0 |
195.161.112.6 |
Et1/0 195.161.112.6
06 0050 1093 2 |
Local |
10.1.0.1 |
|
|
Srclf - интерфейс, с которого пришел пакет. |
Dstlf - интерфейс, на который был направлен пакет. Если данное поле равно Null, то данная информация может не экспортироваться в NetFlow. Проверьте списки доступа.
Универсальный сборщик статистики utm5_unif
Если в импортируемом файле с данными по трафику не присутствуют IP-адреса, но присутствуют логины пользователей, то обработку таких данных можно осуществить при помощи программы utm5_unif.
Запуск осуществляется командой:
/netup/utm5/bin/utm5_unif
Ключи командной строки запуска:
-с - альтернативный путь к конфигурационному файлу
-s S0URCE_FILE - импортировать данные из файла SOURCE_ FILE
Конфигурационный файл расположен по следующему пути:
/netup/utm5/utm5_unif.conf
Файл состоит из строк вида
параметр=значение
Строки, начинающиеся с символа «#», считаются комментарием.
Список возможных параметров: core_host
Адрес хоста, на котором запущено ядро биллинговой системы. Значение по умолчанию: 127.0.0.1.
core_port
Порт, на котором запущено ядро биллинговой системы. Значение по умолчанию: 117 58.
Универсальные сборщики статистики
Универсальные сборщики статистики
core_login
Логин системного пользователя в биллинговой системе. core_password
Пароль системного пользователя в биллинговой системе. data_source
Тип данных в импортируемом файле. Для файла с данными об IP-трафике значение должно быть равно iptr.
Формат импортируемого файла должен быть следующим:
LOGIN BYTES TCLASS IP
LOGIN - логин, привязанный к услуге «IP-трафик». По данному полю происходит определение сервисной связки и, соответственно, определение стоимости трафика.
BYTES - количество переданных байт.
TCLASS - класс трафика.
IP - поле, указывающее IP-адрес, использованный при передаче данных. Данное поле используется только для отчётов, поэтому возможно указание значения 0.0.0.0 без ущерба для тарификации.
Пример
uniftest 1048576 10 10.10.10.10 test 10485760 20 0.0.0.0
Первая строка указывает на то, что пользователем с логином uniftest было передано 1048576 байт IP-трафика. При этом класс трафика равен 10 и использовался IP-адрес 10.10.10.10.
В случае если data_source=pbx, то производится импорт CDR-записей. При этом можно настроить формат импортируемого файла. Для этого необходимо определить следующие параметры:
3.
pbx_called_sid
Номер позиции в импортируемом файле, в которой находится запись о вызываемом номере. Значение по умолчанию 0.
pbx_calling_sid
Номер позиции в импортируемом файле, в которой находится запись о вызывающем номере. Значение по умолчанию 1.
pbx_duration
Номер позиции в импортируемом файле, в которой находится запись о длительности звонка. Значение по умолчанию 2.
pbx_session_id
Номер позиции в импортируемом файле, в которой находится запись о идентификаторе сессии. Значение по умолчанию pbx_delimiter
Символ-разделитель между полями. По умолчанию таким символом является точка с запятой - ;.
pbx_quote
Символ, в который заключены поля. По умолчанию таким символом является символ двойной кавычки - “.
Если сохранить указанные параметры по умолчанию, то формат файла должен быть следующим:
“9391000”,“5409652”,”100”,”0000122”
В результате разбора такой строки будут получены следующие значения:
Вызываемый номер - 9391000 Вызывающий номер -5409652
Универсальные сборщики статистики
Универсальные сборщики статистики
Длительность звонка-100 сек.
Идентификатор сессии - 122
Полученные в результате разбора исходного файла данные будут экспортированы в биллинговую систему по протоколу RADIUS. Для указания параметров экспорта необходимо определить следующие параметры в конфигурационном файле:
radius_dst_host
IP-адрес, на котором слушает поток utm5_radius. Значение по умолчанию 127.0.0.1
radius_secret
Секретное RADIUS-слово. Значение по умолчанию secret. radius_nas_name
Идентификатор сервера доступа. Это значение будет передано в атрибуте NAS-Identifier (32). Значение по умолчанию utm5_unif.
radius_port
Порт, на котором слушает поток utm5_radius. Значение по умолчанию 1813.
Для запуска обработки CDR-файла используйте команду: utm5_unif -c utm5_unif.cfg.pbx -s export_cdr.txt
Вспомогательные утилитыГенератор статистики по протоколу NetFlow
Для эмулирования работы пользователей и экспорта статистики по протоколу NetFlow ?.5 используется утилита utm5_ flowgen, которая устанавливается по следующему пути: /net-up/utm5/bin/utm5_flowgen. В командной строке можно передать следующие параметры:
-h
IP-адрес хоста, на который пересылать сгенерированные NetFlow-пакеты. Значение по умолчанию - 127.0.0.1.
-Р
Порт, на который пересылать сгенерированные NetFlow-пакеты. Значение по умолчанию - 9996.
-с
Количество NetFlow-пакетов. Значение по умолчанию -
Вспомогательные утилиты
65535.
-t
Период ожидания в микросекундах между посылками NetFlow-пакетов.
-s
IP-адрес, с которого был передан IP-трафик. Этот адрес записывается в поле srcaddr в генерируемых NetFlow-пакетах.
-d
IP-адрес, к которому был передан IP-трафик. Этот адрес записывается в поле dstaddr в генерируемых NetFlow-пакетах.
-b
Вспомогательные утилиты
140
Количество переданных байтов. Это значение записывается в поле dOctet в генерируемых NetFlow-пакетах.
Следующая команда генерирует один NetFlow-пакет с информацией о 1048576 байтах, переданных между адресами 10.0.0.1 и 10.0.0.2:
/netup/utm5/bin/utm5_flowgen -c 1 -s 10.0.0.1 -d 10.0.0.2 -b 1048576
Генератор статистики по протоколу RADIUS
Для эмулирования работы пользователей и экспорта статистики по протоколу RADIUS используется утилита utm5_rad-gen, которая устанавливается по следующему пути: /netup/ utm5/bin/utm5_radgen. В командной строке можно передать следующие параметры:
-Р
Порт, на который пересылать сгенерированные RADIUS-пакеты.
-h
IP-адрес, на который пересылать сгенерированные RADIUS-пакеты.
-s
Секретное слово для общения с RADIUS-сервером.
-с
Код RADIUS-пакета. Значение по умолчанию - 1 (Access-Request).
-и
Пароль пользователя в открытом виде. Данное значение будет передано с ID атрибута 2 (Password).
-a
Атрибуты и значения. Возможно указание нескольких атрибутов. Строка имеет следующий формат:
vendor_id:attr_id:is_digit:value
Поля разделены двоеточием. Первое поле указывает на идентификатор вендора. Значение по умолчанию - 0.
Второе поле указывает на идентификатор атрибута.
Третье поле используется для указания типа данных: цифровой либо строчный. Если значение 0, то данные передаются, как строка. Если значение 1, то данные передаются, как цифры (integer).
Четвёртое поле используется для передачи самого значения.
Примеры
1. Для посылки запроса на авторизацию (Access-request) необходимо выполнить следующую команду:
/netup/utm5/bin/utm5_radgen -h 127.0.0.1 -p 1812 -s secret -u password -a 0:1:0:username -a 0:32:0:local-host
Вспомогательные утилиты
При этом будет сгенерирован RADIUS-пакет с запросом на авторизацию для пользователя username с паролем password.
2. Для посылки запроса на аккаунтинг (Accounting-request) необходимо выполнить следующую команду:
/netup/utm5/bin/utm5_radgen -h 127.0.0.1 -p 1813 -s secret -a 0:1:0:username -a 0:32:0:localhost -a 0:40:1:1 -a 0 :44:0:sessionid1 -c 4
При этом будет сгенерирован RADIUS-пакет с запросом на ак-каунтинг для пользователя username. При этом будет указано, что осуществляется начало сессии (start). Идентификатор сессии sessionid1.
3. Для посылки запроса на аккаунтинг (Accounting-request) необходимо выполнить следующую команду:
/netup/utm5/bin/utm5_radgen -h 127.0.0.1 -p 1813 -s secret -a 0:1:0:username -a 0:32:0:localhost -a 0:40:1:2 -a 0:44:0:sessionid1 -a 0:46:1:100 -c 4
При этом будет сгенерирован RADIUS-пакет с запросом на ак-каунтинг для пользователя username. При этом будет указано, что осуществляется окончание сессии (stop). Идентификатор сессии sessionid1. Длительность сессии (Acct-Session-Time) - 100 секунд.
Утилита для резервного копирования базы данных
Для обеспечения сохранности данных рекомендуется периодически делать резервное архивирование SQL-базы данных. Для этого необходимо выполнить скрипт из поставки UTM:
/netup/utm5/bin/utm5_backup.sh
При этом будет создан файл /netup/utm5/backup/UTM5.YY_
MM_DD.gz, где YY - год создания архива, MM - месяц, DD - день.
Для периодического выполнения процедуры резервного копирования следует добавить строку вида:
Вспомогательные утилиты
0 5 * * * root /netup/utm5/
bin/utm5_backup.sh
в файл конфигурации планировщика задач /etc/crontab и перезапустить планировщик задач. При этом каждый день в 5 часов утра будет выполняться резервное копирование базы данных.
Утилита для загрузки IP-сетей из файла
Утилита для загрузки IP-сетей в классы трафика из файла. Для получения справки наберите следующую команду:
/netup/utm5/bin/utm5_load_tc.pl -h
usage: utm5_load_tc.pl -f file -c tc_class -n our_net -m our_mask [-r incoming]
В командной строке можно передать следующие параметры:
-f
Имя файла с информацией об IP-сетях следующего формата:
IP_NET/MASK
где IP_NET - адрес сети, MASK - маска подсети.
-с
Идентификатор класса трафика в UTM. Например, 10.
-п
Адрес нашей IP-сети. Например, 192.168.10.0.
-т
Маска нашей IP-сети. Например 255.255.255.0.
-г
Если указать -г 1, то наша IP-сеть будет рассматриваться, как сеть назначения. Если данный ключ не указан, то наша IP-сеть будет рассматриваться, как источник.
Вспомогательные утилиты
Пример содержимого файла с информацией о сетях
128.134.151.128/25
144.206.166.0/24
144.206.176.0/24
Утилита для сканирования ARP-таблицы
Данная утилита позволяет автоматизировать процесс выдачи IP-адресов и осуществления связки с MAC-адресами. Для запуска этой утилиты наберите команду
/netup/utm5/bin/utm5_arp.pl
При этом на экране появятся записи, которые были обнаружены в ARP-таблице операционной системы и которые будут загружены в базу данных для дальнейшего использования. Для периодического обновления записей в базе данных рекомендуется установить выполнение данной утилиты по расписанию посредством системной утилиты cron. Для этого занесите запись в файл /etc/crontab:
*/5 * * * * root /netup/utm5/bin/utm5_arp.pl > /dev/ null 2>/dev/null
После этого необходимо перезапустить утилиту cron.
В результате при добавлении оператором IP-адресов через интерфейс администратора будут предложены на выбор все найденные пары IP-адрес/MAC-адрес.

адрес/МАС-адрес
Для запуска этой утилиты укажите корректные параметры для доступа к базе данных в файле /netup/utm5/bin/arp.sh и выполните команду:
/netup/utm5/bin/arp.sh
При этом в ARP-таблице операционной системы должны появиться неизменяемые связки IP-адрес/MAC-адрес. Они обычно помечаются как permanent либо PERM. Например:
(10.1.2.27) at 00:0c:29:8e:be:86 on lncO permanent [ethernet]
Для периодического обновления записей в ARP-таблице рекомендуется установить выполнение данной утилиты по расписанию посредством системной утилиты cron. Для этого занесите запись в файл /etc/crontab:
*/5 * * * * root /netup/utm5/bin/arp.sh > /dev/null 2>/dev/null
После этого необходимо перезапустить утилиту cron.
Данная технология позволяет избежать подмены IP-адресов со стороны злоумышленников, в результате чего уменьшается риск хищения IP-трафика.
|

команд. Исправления ошибок могут включать в себя работу с таблицами, содержащими данные об учётных записях абонентов, поэтому выполнение команд производится вручную и возлагается на администратора системы.
Записи, созданные верификатором, имеют следующий формат:
-- ERROR|WARNING <описание ошибки>
-- SQL DESC <описание SQL-запроса, который предлагает сделать верификатор> ^QL-запроо -- affected tables: <список таблиц>
В некоторых случаях SQL-команда будет за
комментирована и в описании помечена как «NOT RECOMMENDED». Это вызвано тем, что обычно все рекомендации верификатора по исправлению ошибок сводятся к удалению сбойных услуг, IP-групп и т. п. Противоречие в базе данных будет устранено, но вместе с этим может быть потеряна информация.
Перед выполнением работ по исправлению базы данных необходимо сделать резервную копию её таблиц. Для этого существует список «affected tables», содержащий названия таблиц, которые будут затронуты в ходе выполнении SQL-команд.
Перед исполнением SQL-команд обязательно требуется остановить ядро системы utm5_core. Обратите внимание, что перезапуск ядра после исправления базы данных может выявить новые несоответствия, вызванные исправлением старых ошибок.
Верификатор базы данных
Импорт данных из других систем
Импорт данных из других систем
Перед проведением действий по импорту в базу данных UTM необходимо остановить ядро системы. После проведения изменений нужно запустить ядро utm5_core. Если в процессе импорта были допущены ошибки, то появятся предупреждающие записи в файле /netup/utm5/log/verificator.log. В этом случае необходимо проверить все стадии ещё раз либо обратиться в службу технической поддержки Компании Не-тАП.
Создание учётной записи абонента
Для создания учётной записи абонента в базе данных UTM следует использовать следующий SQL-запрос:
INSERT INTO users (id, login, password, basic_account, is_blocked, discount_period_id, create_date, last_ change_date, who_create, who_change, is_juridical, full_name, juridical_address, actual_address, flat_ number, entrance, floor, passport, work_telephone, home_telephone, mobile_telephone, web page, icq_num-ber, tax_number, kpp_number, email, bank_id, bank_ac-count, comments, house_id, is_send_invoice, advance_ payment) VALUES ('ID', 'LOGIN', 'PASSWORD', 'ID', 'BLOCK', 'PERIOD_ID', unix_timestamp(), unix_time-stamp(), '-1', '-1', 'O', 'FULL_NAME', 'JUR_ADDR',
'ACT_ADDR', 'FLAT', 'ENT', 'FLOOR', '', 'PASSPORT',
'WORK_PHONE', 'HOME_PHONE', '', '', '', '', 'EMAIL',
'O', '', '', 'O', 'O', 'O');
Основные параметры, использующиеся в этом запросе, описаны ниже.
ID — уникальный идентификатор абонента и лицевого счёта. Идентификатор лицевого счёта может отличаться от идентификатора абонента.
LOGIN — имя учётной записи абонента. С этим именем происходит подключение пользователя к веб-интерфейсу.
PASSWORD — пароль для учётной записи пользователя.
Создание лицевого счёта
Для создания лицевого счёта абонента в базе данных UTM следует использовать следующую последовательность SQL-запросов:
INSERT INTO accounts (id, balance, account_name, credit, flags, discount_period_id, dealer_account_id, comission_coef, default_comission_value, is_dealer, int_status, block_recalc_abon, block recalc prepaid) VALUES ('ID', 'BALANCE', 'COMMENTS', 'CREDIT', 'PERIOD_ID', 'O', 'O', 'O', 'O', 'O', 'O', 'O', '0');
INSERT INTO users_accounts (uid, account_id) VALUES
('ID', 'ID');
Основные параметры, использующиеся в этих запросах, описаны ниже.
ID — идентификатор абонента и лицевого счёта.
BALANCE — баланс лицевого счёта в условных единицах.
Создание родительской периодической услуги
Для создания записи о периодической услуге в базе данных UTM следует использовать следующую последовательность SQL-запросов:
INSERT INTO services_data (id, service_type, service_ name, tariff_id, link_by_default, parent_service_id) VALUES (SERVICE_ID, SERVICE_TYPE, 'Периодическая услуга', O, 1, SERVICE_ID);
INSERT INTO periodic_services_data (id, cost, dis-count_method) VALUES (SERVICE_ID, COST, METHOD);
Основные параметры, использующиеся в этих запросах, описаны ниже.
SERVICE_ID — уникальный идентификатор услуги.
COST — стоимость периодической услуги в условных единицах. Данная стоимость будет списана в течение расчётного периода.
Импорт данных из других систем
Импорт данных из других систем
METHOD — способ списания. Возможные значения: 1 — в начале расчётного периода, 2 — в конце расчётного периода, 3 — плавно в течение всего расчётного периода.
SERVICE_TYPE — тип услуги. Для периодической услуги данное поле равно 2. Другие возможные значения: 1 — разовая услуга, 2 — периодическая услуга, 3 — передача IP-трафика, 4 — хотс-пот, 5 — коммутируемый доступ, 6 — телефония.
Создание родительской услуги передачи IP-трафика
Для создания записи об услуге IP-трафика в базе данных UTM следует использовать следующую последовательность SQL-запросов:
INSERT INTO services_data (id, service_type, service_ name, tariff_id, link_by_default, parent_service_id) VALUES (SERVICE_ID, SERVICE_TYPE, 'Услуга IP-трафика', 0, 1, SERVICE_ID);
INSERT INTO periodic_services_data (id, cost, dis-count_method) VALUES (SERVICE_ID, COST, METHOD);
INSERT INTO iptraffic_borders (borders_id, border,cost) VALUES (BORDER_ID, BORDER, BORDER_COST);
INSERT INTO traf_serv_tclasses (tst_id, tclass_id, borders_id) VALUES (TST_ID, TCLASS_ID, BORDER_ID);
INSERT INTO iptraffic_services_data (id, tst_id)
VALUES (SERVICE_ID, TST_ID);
Основные параметры, использующиеся в этих запросах, описаны ниже.SERVICE_ID — уникальный идентификатор услуги.BORDER_ID — уникальный идентификатор стоимостных границ для IP-трафика.BORDER — граница в байтах.BORDER_COST — стоимость трафика за 1 МБ при достижении указанной границы. Данная стоимость будет действовать до
следующей границы либо до бесконечности, если границ больше нет.
TST_ID — уникальный идентификатор для связки стоимостных границ, классов трафика и услуг передачи IP-трафика.
TCLASS_ID — идентификатор класса трафика. По умолчанию, в базе данных UTM создаётся три класса трафика с идентификаторами 10,20 и 1000.
COST — стоимость периодической услуги в условных единицах. Данная стоимость будет списана в течение расчётного периода.
METHOD — способ списания. Возможные значения: 1 - в начале расчётного периода, 2 - в конце расчётного периода, 3 - плавно в течение всего расчётного периода.
SERVICE_TYPE — тип услуги. Для услуги передачи IP-трафика данное поле равно 3. Другие возможные значения: 1 - разовая услуга, 2 - периодическая услуга, 3 - передача IP-трафика, 4 - хотспот, 5 - коммутируемый доступ, 6 - телефония.
Создание тарифного плана с включёнными в него услугами
На базе созданных родительских услуг можно создать дочерние услуги и включить их в тарифный план.
Для создания записи о тарифном плана в базе данных UTM следует использовать следующий SQL-запрос:
INSERT INTO tariffs (id, name) VALUES (TID, 'Тарифный план');
Для создания записи о дочерней периодической услуге в базе данных UTM следует использовать следующую последовательность SQL-запросов:
INSERT INTO services_data (id, service_type, ser-vice_name, tariff_id, link_by_default, parent_ser-vice_id) VALUES (PERIODIC_SERVICE_ID, SERVICE_TYPE, 'Периодическая услуга', TID, 1, PARENT_SERVICE_ID);
Импорт данных из других систем
Импорт данных из других систем
52
INSERT INTO periodic_services_data (id, cost, dis-count_method) VALUES (PERIODIC_SERVICE_ID, COST, METHOD);
INSERT INTO tariffs_services_link (tariff_id, ser-vice_id) VALUES (TID, PERIODIC_SERVICE_ID);
Для создания записи о дочерней услуге IP-трафика в базе данных UTM следует использовать следующую последовательность SQL-запросов:
INSERT INTO services_data (id, service_type, service_ name, tariff_id, link_by_default, parent_service_id) VALUES (IP_SERVICE_ID, SERVICE_TYPE, 'Услуга IP-трафика', TID, 1, PARENT_SERVICE_ID);
INSERT INTO periodic_services_data (id, cost, dis-count_method) VALUES (IP_SERVICE_ID, COST, METHOD);
INSERT INTO iptraffic_borders (borders_id, border, cost) VALUES (BORDER_ID, BORDER, BORDER_COST);
INSERT INTO traf_serv_tclasses (tst_id, tclass_id, borders_id) VALUES (TST_ID, TCLASS_ID, BORDER_ID);
INSERT INTO iptraffic_services_data (id, tst_id)
VALUES (SERVICE_ID, TST_ID);
INSERT INTO tariffs_services_link (tariff_id, ser-vice_id) VALUES (TID, IP_SERVICE_ID);
Основные параметры, использующиеся в этих запросах, описаны ниже.
TID — идентификатор тарифного плана.
PERIODIC_SERVICE_ID — уникальный идентификатор дочерней периодической услуги. Значение идентификатора дочерней услуги должно отличаться от значения идентификатора родительской услуги.
IP_SERVICE_ID — уникальный идентификатор дочерней услуги передачи IP-трафика. Значение идентификатора дочерней услуги должно отличаться от значения идентификатора родительской услуги.
PARENT_SERVICE_ID — идентификатор родительской услуги.
Все остальные параметры заполняются аналогично параметрам базовых услуг, рассмотренным выше.
Создание расчётного периода
Для создания записи о расчётном периоде в базе данных UTM следует использовать следующую последовательность SQL-запросов:
INSERT INTO discount_periods (id, start_date, end_ date, periodic_type) VALUES (PERIOD_ID, unix_time-stamp('2004-12-01'), unix_timestamp('2005-01-01'), PERIOD_TYPE);
UPDATE discount_periods SET canonical_len=end_date-start_date WHERE id='PERIOD_ID';
Основные параметры, использующиеся в этих запросах, описаны ниже.
PERIOD_ID — уникальный идентификатор расчётного периода.
PERIOD_TYPE — тип расчётного периода. Возможные значения: 1 — ежедневный, 2 — еженедельный, 3 — ежемесячный, 4 — ежеквартальный, 5 — ежегодный.
Привязка тарифного плана к лицевому счёту абонента
Для создания привязка тарифного плана к лицевому счёту абонента в базе данных UTM следует использовать следующий SQL-запрос:
INSERT INTO account_tariff_link (id, account_id, tar-iff_id, next_tariff_id, discount_period_id) VALUES (ATL_ID, ACCOUNT_ID, TARIFF_ID, TARIFF_ID_NEXT, PERIOD_ID);
Основные параметры, использующиеся в этом запросе, описаны ниже.
ATL_ID — уникальный идентификатор данной связки «лицевой счёт-тарифный план».
Импорт данных из других систем
Импорт данных из других систем
ACCOUNT_lD — идентификатор лицевого счёта.
TARIFF_ID — идентификатор тарифного плана.
TARIFF_ID_NEXT — идентификатор тарифного плана следующего расчётного периода. Если на следующий расчётный период тарифный план не меняется, то значение в данном поле равно TARIFF_ID.
PERIOD_ID — идентификатор расчётного периода.
Для привязки периодической услуги из тарифного плана к лицевому счёту необходимо выполнить следующую последовательность SQL-запросов:
INSERT INTO service_links (id, user_id, account_id, service_id, tariff_link_id) VALUES (SLINK_ID, USER_
ID, ACCOUNT_ID, SERVICE_ID, ATL_ID);
INSERT INTO periodic_service_links (id, discount_pe-riod_id, discounted_in_curr_period, need_del, unpre-pay_period, unabon_period) VALUES (SLINK_ID, PERIOD_ ID, 0, 0, 0, 0);
Основные параметры, использующиеся в этих запросах, описаны ниже.
SLINK_ID — уникальный идентификатор связки «идентификатор абонента-идентификатор лицевого счёта-идентифика-тор услуги».
USER_ID — уникальный идентификатор абонента.
ACCOUNT_ID — уникальный идентификатор лицевого счёта
SERVICE_ID — уникальный идентификатор периодической услуги.
PERIOD_ID — уникальный идентификатор расчётного периода.
Для привязки услуги передачи IP-трафика из тарифного плана к лицевому счёту необходимо выполнить следующую последовательность SQL-запросов:
INSERT INTO service_links (id, user_id, account_id, service_id, tariff_link_id) VALUES (SLINK_ID, USER_
ID, ACCOUNT_ID, SERVICE_ID, ATL_ID);
INSERT INTO periodic_service_links (id, discount_pe-riod_id, discounted_in_curr_period, need_del, unpre-pay_period, unabon_period) VALUES (SLINK_ID, PERIOD_ ID, 0, 0, 0, 0);
INSERT INTO ip_groups (ip_group_id, ip, mask, uname, upass, mac, allowed_cid, create_date, ip_type) VALUES (IP_GROUP_ID, IP, MASK, ULOGIN, UPASS, MAC, '', unix_ timestamp(NOW()), 0);
INSERT INTO downloaded (downloaded_id, tclass_id) VALUES(DOWNLOADED_ID, TCLASS_ID);
INSERT INTO iptraffic_service_links (id, ip_group_ id, downloaded_id) VALUES (SLINK_ID, IP_GROUP_ID, DOWNLOADED_ID);
Основные параметры, использующиеся в этих запросах, описаны ниже.
SLINK_ID — уникальный идентификатор связки «идентификатор абонента-идентификатор лицевого счёта-идентифика-тор услуги».
USER_ID — уникальный идентификатор абонента.
ACCOUNT_ID — уникальный идентификатор лицевого счёта.
SERVICE_ID — уникальный идентификатор услуги передачи IP-трафика.
PERIOD_ID — уникальный идентификатор расчётного периода.
IP_GROUP_ID —идентификатор группы IP-адресов, привязанных к данному абоненту. Под этим идентификатором можно добавить несколько записей в таблицу ip_groups.
IP — IP-адрес в целочисленном виде (signed int). Например, адрес 195.161.112.6 необходимо вставлять как 1012830202.
MASK — маска подсети в целочисленном виде (signed int). Например, маску 255.255.255.255 необходимо вставлять как -1.
Импорт данных из других систем
Импорт данных из других систем
ULOGIN — логин, с которым возможно производить подключения по VPN.
upass — пароль для ulogin.
DOWNLOADED_lD — уникальный идентификатор для строки, в которую в процессе работы биллинговой системы будет записываться потреблённое количество данного класса трафика.
Предоставление услуги хотспот
Для организации услуги хотспот необходим сервер, на котором установлены операционная система FreeBSD или Linux и веб-сервер Apache, настроен кэширующий сервер DNS и установлена биллинговая система NetUP UTM.
Для полностью автоматического входа клиента в сеть нужно установить и настроить сервер DHCP, который будет выдавать компьютеру клиента IP-адрес. Наиболее распространённый и широко используемый сервер DHCP - isc-dhcpd. Его можно загрузить по адресу . gz.
Установку произвести командами.
./configure
make
make install
Также isc-dhcp можно установить из дистрибутивов, поставляющихся с операционной системой.
Конфигурация сервера DHCP
Главный конфигурационный файл - dhcpd.conf. Он должен содержать следующие строки.
option domain-name »yourdomain.com«; option domain-name-servers 10.1.2.1; option subnet-mask 255.255.255.0; default-lease-time 36000; max-lease-time 86400; authoritative; ddns-update-style none; log-facility local7;
subnet 10.1.2.0 netmask 255.255.255.0
option routers 10.1.2.1; pool
Предоставление услуги хотспот
Предоставление услуги хотспот
{
range 10.1.2.10 10.1.2.200 ; allow unknown clients;
}
}
При такой конфигурации сервер будет выдавать адреса из диапазона 10.1.2.10-10.1.2.200, как правило, начиная с конца диапазона. Сам сервер при этом должен иметь адрес 10.1.2.1. Очень важно проследить, на каком интерфейсе будет работать сервер DHCP, так как выдача адресов, например, в интернет может привести к нежелательным последствиям. Поэтому сервер DHCP должен запускаться с указанием интерфейса, на котором ему следует работать. Например, внутренний интерфейс fxp0. Правильная команда запуска - dhcpd fxp0. Интерфейс указывается в качестве параметра командной строки. Несколько интерфейсов можно указывать через пробел, например, dhcpd fxp0 fxp1 ed0
После настройки автоматического получения адресов нужно позаботиться о том, чтобы клиент мог без труда активировать свою карточку. Для этого необходимо принудительно перенаправлять на страницу активации запросы от неавторизовав-шегося клиента. Такое перенаправление делается при помощи файрвола.
Настройка файрвола для FreeBSD
В ОС FreeBSD файрволом является программа ipfw.
Для перенаправления всех пакетов, следующих на 80 порт (как правило, просмотр веб-сайтов) от неавторизовавшихся клиентов, будем использовать natd с опцией -proxy_rule. Эта опция позволяет перенаправлять указанные пакеты на любой другой адрес, в нашем случае на страничку UTM с вводом номера и пин-кода предоплаченной карты.
Предположим, наш сервер имеет локальный адрес 10.1.2.1 и локальная сеть 10.1.2.0/24, внешний IP-адрес сервера - 10.10.10.1. Запускаем natd.
# natd -p 9000 -a 10.1.2.1 -proxy_rule port 80 server 10.1.2.1:80 -reverse
В соответствии с этим нужно сконфигурировать файрвол. Один из вариантов рабочей конфигурации - следующий.
10000 divert 9000 tcp from 10.1.2.0/24 to not 10.1.2.1 dst-port 80 via fxp0
10100 divert 9000 tcp from 10.1.2.1 80 to 10.1.2.0/24
10200 allow tcp from 10.1.2.0/24 to any dst-port 80 via fxp0
10300 allow tcp from any 80 to 10.1.2.0/24 10400 skipto 20000 ip from any to me 10500 skipto 20000 ip from me to any 15000 deny log ip from any to any
20000 divert 8668 ip from 10.1.2.0/24 to any via fxp1 20100 divert 8668 ip from any to 10.10.10.1 via fxp1 65535 allow ip from any to any
В этом варианте конфигурации приняты следующие обозначения:
fxp0 - интерфейс с адресом 10.1.2.1;
fxp1 - внешний интерфейс маршрутизатора;
8668 - порт, на котором принимает соединения обычный natd (вида natd -n fxp1).
При такой конфигурации необходимо добавить в UTM правила файрвола для включения доступа пользователям.
/sbin/ipfw add RULE_ID skipto 20000 ip from UIP to any
/sbin/ipfw add RULE_ID skipto 20000 ip from any to UIP,
И для выключения.
/sbin/ipfw delete RULE_ID,
В результате получим, что после активации карточки пользователь будет попадать сразу на правила divert 20000 и сможет
Предоставление услуги хотспот
Предоставление услуги хотспот
беспрепятственно загружать странички из Интернета. В случае если карточка не активирована, то все запросы пользователя будут перенаправлены на страницу авторизации.
Настройка файрвола для Linux
В ОС Linux файрволом является программа iptables.
В iptables существует действие REDIRECT, которое позволяет перенаправлять указываемые пакеты на порт локальной машины, подменяя адрес назначения. Воспользуемся этим действием для перенаправления запросов от неавторизовавшихся клиентов на страницу UTM с вводом номера и пин-кода предоплаченной карты. Для этого в таблице nat в цепочку PREROUTING нужно добавить правило.
iptables -t nat -A PREROUTING -s 10.1.2.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 80
Далее, в UTM нужно добавить на каждого пользователя два правила для включения доступа.
/sbin/iptables -t nat -I PREROUTING 1 -s UIP/UBITS -j ACCEPT
/sbin/iptables -A FORWARD -s UIP/UBITS -j ACCEPT /sbin/iptables -A FORWARD -d UIP/UBITS -j ACCEPT
И для выключения.
/sbin/iptables -t nat -D PREROUTING -s UIP/UBITS -j ACCEPT
/sbin/iptables -D FORWARD -s UIP/UBITS -j ACCEPT /sbin/iptables -D FORWARD -d UIP/UBITS -j ACCEPT
При этом должна быть выставлена запрещающая политика для цепочки FORWARD (iptables -P forward drop).
Настройка веб-сервера Apache
Необходимо переопределить начальную страницу и страницу 404 в конфигурационном файле httpd.conf.
ErrorDocument 404 »/cgi-bin/utm5/aaa5?cmd=card_login«
DirectoryIndex »/cgi-bin/utm5/aaa5?cmd=card_login« index.html
При этом на любой запрос пользователя будет выдаваться страница, с приглашением ввести номер и пин-код карты для выхода в Интернет.
После исправления конфигурационного файла необходимо перезапустить веб-сервер.
apachectl restart
В случае, если после успешной авторизации необходимо организовать автоматическое перенаправление пользователя на первоначально набранный URL, то необходимо в параметрах aaa5 передать redirect=yes. В этом случае параметры в конфигурации веб-сервера будут выглядеть следующим образом:
ErrorDocument 404 »/cgi-bin/utm5/aaa5?cmd=card_ login&redirect=yes«
DirectoryIndex "/cgi-bin/utm5/aaa5?cmd=card_ login&redirect=yes" index.html
Также необходимо в конфигурационном файле web5.cfg указать строку
src_redirect=yes
В этом случае при первом обращении к aaa5 будет сохранён адрес из переменной окружения SERVER_HOST и, если пользователь ввёл корректные данные для авторизации, то он будет автоматически переправлен по сохраненному адресу.
Например, пользователь после получения IP-адреса по DHCP запустил интернет-браузер и в строке адреса набрал сайт www. netup.ru. В результате срабатывания перенаправления пользователю будет выдано приглашение для ввода номера карты и пин-кода. После успешной авторизации автоматически будет загружена страница .
Настройка услуги хотспот
В центре управления в разделе (Тарификация | Услуги) необходимо добавить услугу хотспот, указать временные диапазо-
Предоставление услуги хотспот
Предоставление услуги хотспот
ны и стоимость. Идентификатор этой услуги необходимо указать при добавлении карточек в систему.
После ввода пользователем номера и пин-кода карты в процессе активации карты страничка в браузере будет автоматически регулярно обновляться, давая тем самым серверу знак, что пользователь все ещё пользуется услугой. В случае если в течение указанного в настройках промежутка времени не было обновления страницы (пользователь закрыл эту страничку или просто выключил компьютер), либо поступил сигнал закрытия сессии (пользователь выбрал в меню пункт «Выход»), то доступ в интернет блокируется и производится списание средств за время работы. Также блокирование доступа в интернет наступает при окончании средств на карте.
Приём платежей через платёжную систему «Рапида»
Приём платежей в пользу абонентов через платёжную систему (ПС) «Рапида» реализован в АСР NetUP UTM 5 посредством отдельного модуля utm5_rapida_check. Помимо приёма платежей через ПС «Рапида» модуль выступает также в качестве интегратора АСР NetUP UTM 5 со сторонним ПО в части автоматизации приёма платежей из других АСР или ИС, о чём упоминается в разделе «Платежи». В качестве протокола обмена информацией между модулем utm5_rapida_check и сторонним ПО выступают файлы с информацией о платежах абонентов (ФИПА).
Подготовка системы
Для начала работы с ключами необходимо выполнить следующие действия.
Загрузить последнюю версию dvc_tool с сайта разработчика. Для ОС FreeBSD: FreeBSD4.6R.zip. Для ОС Linux: Download/Master2.2.zip.
Исполняемый файл dvc_tool нужно установить в директорию /sbin.
Перейти в директорию:
cd /netup/utm5/dvc_home
Создать хранилище ключей:
dvc_tool -init 123 [ OK ][ p11 ][ init ][ (null) ]
Импортировать сертификаты. В примере указаны имена файлов с тестовыми сертификатами:
dvc_tool -cmd cert -inform P7B -in testpay4.p7b [ OK ][ cert ][ import ][ testpay ]
[ OK ][ cert ][ import ][ CP CSP Test CA ]
Приём платежей через платёжную систему «Рапида»
Приём платежей через платёжную систему «Рапида»
dvc_tool -cmd cert -inform DER -in CryptoproCA.cer [ OK ][ cert ][ import ][ CryptoPro CA ]
Проверка подписи на сообщениях
Проверка подписи на письмах от платежной системы осуществляется автоматически через настраиваемый интервал времени. При проверке используется программа /netup/ utm5/bin/utm5_rapida_check, которая в свою очередь после сбора сообщения с сервера POP3 выполняет проверку подписи на сообщениях следующей командой (команда приведена для информации, АСР автоматически выполняет данную проверку без участия администратора.):
dvc_tool -home /netup/utm5/dvc_home -cmd vfy -in / netup/utm5/pay_msg/1077049250_4032783c00000005.msg -smime | grep »\[ OK \] \[ vfy \]« | grep »\[ 100 \]«
Настройки модуля utm5_rapida_check
Для управления проведением платежей используются следующие параметры в настройках модуля utm5_rapida_check АСР NetUP UTM 5. Настройки модуля хранятся в его конфигурационном файле rapida5.cfg.
rapida_host
IP-адрес сервера POP3.
rapida_login
Логин к почтовому ящику, в который поступают сообщения о платежах.
rapida_password
Пароль к почтовому ящику, в который поступают сообщения о платежах.
core_host
Адрес хоста, на котором запущено ядро биллинговой системы. Значение по умолчанию - 127.0.0.1.
core_port
Порт, на котором запущено ядро биллинговой системы. core_login
Логин системного пользователя в биллинговой системе core_password
Пароль системного пользователя в биллинговой системе. rapida_check_interval
Интервал в секундах, через который производить проверку наличия новых платежей.
rapida_pay_path
Путь к системной директории модуля, где сохраняется информация о платежах в виде текстовых файлов.
rapida_log_path
Путь к системной директории модуля, где сохраняются сообщения от ПС «Рапида», в виде текстовых файлов, полученные с сервера POP3 без изменений.
rapida_ext_path
Путь к системной директории модуля, из которой модуль читает файлы ФИПА.
dvc_home
Путь к системной директории модуля, в которой находятся хранилище ключей и сертификаты, посредством которых производится проверка подписи на сообщениях от ПС «Рапида».
template_string_62
Приём платежей через платёжную систему «Рапида»
Приём платежей через платёжную систему «Рапида»
Параметр задает шаблон идентификации абонента в уведомлениях о платеже от ПС «Рапида» и ФИПА (строка :62 уведомления о платеже, смотрите ниже). В шаблоне могут быть использованы специальные символы, указывающие на признак по которому АСР NetUP UTM5 идентифицирует абонентов для вноса платежа:
ли - означает, что в данной позиции будет указан идентификатор абонента [user id].
ла - идентификатор счета [account id].
лс - идентификатор контракта [contract id].
Л1 - логин абонента.
Лр - семь цифр из логина абонента.
ЛЛ - в данной позиции будет указана некоторая нефиксированная информация, не являющаяся необходимой для идентификации абонента.
Примеры шаблонов:
template_string_62=HOMep документа: ла template_string_62=фио: лл, N договора: Л1
Проверка работоспособности
В результате работы в директории /netup/utm5/pay_msg будут сохраняться сообщения, полученные с сервера POP3 без изменений. Рекомендуется их сохранять для дальнейшего анализа. В директории /netup/utm5/pay будут сохраняться файлы в открытом виде, содержащие информацию о платежах. Например:
1077049250_4032783c00000002.msg 1077049250_4032783c00000003.msg 1077 0492 50_40327 83c00000004.msg 1077 0492 50_40327 83c00000005.msg 1077 0492 51_40327 83c00000001.msg ok_1077 0492 52_40327 83c00000005.pay
ok_1077049253_4032783c00000004.pay ok_107704925 5_4 032783c00000003.pay ok_107704925 6_4 032783c00000002.pay ok_10 7 7 0 49257_4 03 27 83 c 0000000l.pay
Если файл имеет префикс err_, следовательно, при обработке этого файла возникли ошибки. Если файл имеет префикс ok_, следовательно, обработка этого файла прошла успешно.
Формат файлов с информацией о платеже
Структура и содержание файлов должны соответствовать следующей лексической конструкции (поля, обязательные для заполнения, выделены жирным шрифтом):
RRECV
FROM: <от кого поступает платеж(абонент)>
TO: <кому поступает платеж(провайдер)>
DATE:<дата платежа(DD:MM:YY)>
:10 MessTp: 710
:21 RegRecvEssId: <Код платежных реквизитов ТСП>
:30 PaymId: <Код исполненного платежа>
:31 InvId: <Код регистрации принятого счета>
:40 PaymSum: <Сумма платежа>
:50 InvNumb: <Номер счета ТСП, по которому произошла оплата>
:51 InvDate: <Дата выписки счета в ТСП>
:60 PaymSubjText: <Текстовое описание назначения платежа>
:61 PaymSubjTp: <Код назначения платежа по каталогу типов назначений платежей>
:62 PaymSubjParam: <Идентификатор абонента>
ENDRRECV
Поле :10 всегда должно иметь значение 710.
В случае ФИПА, файл может содержать несколько лексических конструкций, расположенных в файле друг за другом.
Пример
RRECV
FROM: ООО Платежная интернет-система РАПИДА
TO: Закрытое акционерное общество »ТЕСТ« (г.Москва)
Приём платежей через платёжную систему «Рапида»
Приём платежей через платёжную систему «Рапида»
:10 MessTp: 710 :21 RegRecvEssId: 412 :30 PaymId: 12404 :4 0 PaymSum: 3,00 :31 InvId:
:5 0 InvNumb:
:51 InvDate:
:60 PaymSubjText: Доступ в интернет :61 PaymSubjTp: 584
:62 PaymSubjParam: НОМер Договора: 1 ENDRRECV
Сумма указанная в поле :40 PaymSum: зачисляется на основной лицевой счёт, соответствующий абоненту с номером договора указанным в поле : 62 PaymSubjParam: НОМер Договора: (если в качестве значения параметра template_string_62 используется значение лс).
Совместная работа UTM и LDAP
Данный вопрос детально рассмотрен в статье «Настройка и использование централизованного управления сервисами сети при помощи сервера LDAP» расположенной на сайте компании НетАП в разделе «Документация».
Использование биллинговой системы NetUP UTM в связке с сервером OpenLDAP позволяет более гибко и удобно администрировать услуги, предоставляемые пользователям. В результате описанных ниже настроек сервер LDAP будет играть роль единого хранилища пользовательских данных (логин, пароль, почтовый ящик и прочее), доступ к которому может иметь любое программное обеспечение в сети, поддерживающее протокол LDAP. Таким образом, можно поддерживать актуальность данных (наличие пользователя, его пароль и т. д.) для всех серверов в сети через единое хранилище.
Администратор системы
NetUP UTM 5
|
I
экспорт,
изменение,
удаление
пользователей |

4.2.52.tar.gz.
Установите BerkeleyDB командами.
tar xvfz db-4.2.52.tar.gz cd db-4.2.52 cd build_unix/
../dist/configure --prefix=/usr/ --exec-prefix=/usr/ make
make install
OpenLDAP
Скачайте OpenLDAP: .
Установите OpenLDAP командами.
tar xvfz openldap-2.1.26.tgz cd openldap-2.1.26 ./configure make depend make
make install
Отредактируйте конфигурационный файл /usr/local/etc/ openldap/slapd.conf. Пример содержимого конфигурационного файла приведён ниже.
include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson. schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.sche-ma
include /usr/local/etc/openldap/schema/misc.schema include /usr/local/etc/openldap/schema/java.schema
pidfile /usr/local/var/run/slapd.pid argsfile /usr/local/var/run/slapd.args
allow bind_v2
database bdb
suffix "dc=example,dc=ru"
rootdn "cn=Manager,dc=example,dc=ru"
rootpw secret
directory /usr/local/var/openldap-netup index cn,sn,uid pres,eq,sub
Совместная работа UTM и LDAP
Совместная работа UTM и LDAP
Произведите запуск сервера OpenLDAP командой.
/usr/local/libexec/slapd
Создайте файл example.ldiff следующего содержания.
dn: dc=example,dc=ru objectclass: dcObject objectclass: organization o: Example company dc: example
dn: cn=Manager,dc=example,dc=ru objectclass: organizationalRole cn: Manager
Примените его командой.
ldapadd -D "cn=Manager,dc=example,dc=ru" -w secret < example.ldiff
Почтовый сервер Cyrus
Скачайте демон авторизации, почтовый (POP3/IMAP) сервер Cyrus и патч к нему по адресам:
ftp: / / ftp.andrew.cmu.edu/pub/ cyrus-mail / cyrus-imapd-2.2.3.tar.gz;
/ cyrus-mail/cyrus-sasl-2.1.18.tar. gz;
/ cyrus/cyrus-imapd-2.2.3 / cyrus-imapd-2.2.3-autocreate-0.8.6.diff.
Установите демон авторизации командами.
tar xvfz cyrus-sasl-2.1.18.tar.gz cd cyrus-sasl-2.1.18
./configure --with-ldap --with-bdb-incdir=/usr/local/ BerkeleyDB.4.2/include/
make
make install
Создайте файл /usr/local/etc/saslauthd.conf, в котором укажите строки.
ldap_servers: ldap://127.О.О.1/ ldap_bind_dn: cn=Manager,dc=example,dc=ru ldap_password: secret
ldap_search_base: ou=users,dc=example,dc=ru ldap_mech: DIGEST_MD5 ldap_auth_method: custom
Произведите запуск демона командой.
/usr/local/sbin/saslauthd -a ldap
Установите почтовый сервер командами.
tar xvfz cyrus-imapd-2.2.3.tar.gz
patch < cyrus-imapd-2.2.3-autocreate-0.8.6.diff cd cyrus-imapd-2.2.3
./configure --with-ldap --with-sasl=/usr/local/ --with-bdb=/usr/local/BerkeleyDB.4.2/ --with-bdb-inc-dir=/usr/local/BerkeleyDB.4.2/include/
make
make install
Создайте файл /etc/imapd.conf и укажите в нём строки.
configdirectory: /var/imap partition-default: /var/spool/imap sasl_pwcheck_method: saslauthd admins: aospan mboxlist_db: flat autocreatequota: 1ОООООО createonpost: yes
Добавьте в систему пользователя cyrus командой adduser.
Cоздайте директории.
/var/imap/
Совместная работа UTM и LDAP
Совместная работа UTM и LDAP
/var/imap/proc
/var/imap/db
/var/imap/socket
/var/imap/log
/var/imap/msg
/var/spool/imap/
Важно! Укажите владельцем созданных папок пользователя cyrus.
Выполните команды, находясь в директории cyrus-imapd-2.2.3.
./tools/mkimap
cp master/conf/normal.conf /etc/cyrus.conf
Произведите запуск почтового сервера командой.
/usr/cyrus/bin/master &
Почтовый сервер Postfix
Скачайте почтовый (SMTP) сервер postfix по адресу
Установите его командами.
tar xvfz postfix-2.О.19.tar.gz cd postfix-2.0.19 make tidy
make makefiles CCARGS="-I./ -DHAS_LDAP" AUXLIBS="-ll-dap -llber"
make
make install
Создайте конфигурационный файл /etc/postfix/main.cf примерно следующего содержания.
mailbox_transport = lmtp:unix:/var/imap/socket/lmtp alias_maps = hash:/etc/aliases, ldap:ldapsource ldapsource_server_host = example.ru
ldapsource_search_base = ou=users,dc=example,dc=ru ldapsource_version = 3
ldapsource_bind_dn = cn=Manager,dc=example,dc=ru ldapsource bind pw = secret ldapsource_result_attribute = mail ldapsource_query_filter = (&(mail=%s)) readme_directory = no sample_directory = /etc/postfix sendmail path = /usr/sbin/sendmail setgid_group = postdrop command_directory = /usr/sbin manpage_directory = /usr/local/man daemon_directory = /usr/libexec/postfix newaliases_path = /usr/bin/newaliases mailq path = /usr/bin/mailq queue_directory = /var/spool/postfix mail_owner = postfix
unknown_local_recipient_reject_code = 450
Произведите запуск почтового сервера командой.
/usr/libexec/postfix/master &
Создание схемы LDAP
Создайте файл netup.ldiff следующего сдержания.
dn: ou=users, dc=example, dc=ru objectclass: organizationalUnit ou: users
dn: cn=test, ou=users, dc=example, dc=ru cn: test sn: test
givenName: Test Test objectClass: inetOrgPerson objectClass: uidObject objectclass: organizationalPerson objectclass: top mail: test
Совместная работа UTM и LDAP
Совместная работа UTM и LDAP
mail: uid: test
userPassword: {MD5}2FeO34RYzgb7xbt2pYxcpA==
Затем примените созданный файл командой.
ldapadd -D "cn=Manager,dc=example,dc=ru" -w secret < netup.ldiff
В результате будет создана учётная запись почты . Для получения почты по протоколу POP3 (рекомендуется настроить POP3S) необходимо использовать логин test и пароль qwerty (в LDAP хранится его MD5-хеш: {MD5} 2FeO34 RYzgb7xbt2pYxcpA==).
Сгенерировать хеши можно perl-скриптом, который можно найти по адресу ,
либо использовать команду
slappasswd -h {MD5}
Просмотреть содержимое LDAP можно при помощи утилиты командной строки ldapsearch либо при помощи графической утилиты «LDAP Browser/Editor»: ~gawojar/ldap /.
Установка и настройка сервера DHCP
Скачайте сервер DHCP по адресу ftp://ftp.isc.org/isc/dhcp/ dhcp-3.0pl2.tar.gz и обновление к нему по адресу . lunytune.net/dhcp-3.0pl2.ldap.diff.gz.
Установите командами.
tar xvfz dhcp-3.0pl2.tar.gz gzip -d dhcp-3.0pl2.ldap.diff.gz cp dhcp-3.0pl2.ldap.diff dhcp-3.0pl2 cd dhcp-3.0pl2
patch -p1 < dhcp-3.0pl2.ldap.diff ./configure
файле work.freebsd/server/Makefile укажите строку LIBS = -lldap
вместо строки
LIBS =
Выполните команды.
make
make install
Если у вас уже имеется файл конфигурации dhcpd.conf, то для автоматического переноса данных в LDAP следует использовать скрипт contrib/dhcpd-conf-to-ldap.pl(предварительно в него необходимо вписать ваши данные).
Примерный вариант LDIFF-файла:
dn: cn=dhcpd.example.ru, dc=example, dc=ru objectClass: top objectClass: dhcpServer cn: dhcpd.example.ru
dhcpServiceDN: cn=DHCP Config, dc=example, dc=ru
dn: cn=DHCP Config, dc=example, dc=ru cn: DHCP Config objectClass: top objectClass: dhcpService objectClass: dhcpOptions
dhcpPrimaryDN: cn=dhcpd.example.ru, dc=example, dc=ru dhcpStatements: default-lease-time 600 dhcpStatements: max-lease-time 7200 dhcpStatements: log-facility local7 dhcpOption: domain-name "example.ru" dhcpOption: domain-name-servers 10.1.2.1
dn: cn=10.1.2.0, cn=DHCP Config, dc=example, dc=ru
cn: 10.1.2.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
Совместная работа UTM и LDAP
Совместная работа UTM и LDAP
dhcpNetMask: 24
dhcpRange: 10.1.2.2 10.1.2.253 dhcpOption: domain-name-servers 10.1.2.1 dhcpOption: routers 10.1.2.1
dn: cn=test, cn=DHCP Config, dc=example, dc=ru cn: test
objectClass: top objectClass: dhcpHost objectClass: dhcpOptions
dhcpHWAddress: ethernet 00:00:e2:58:ac:a6 dhcpStatements: fixed-address 10.1.2.45
Создайте конфигурационный файл /etc/dhcpd.conf примерно следующего содержания:
ldap-server "localhost"; ldap-port 389;
ldap-username "cn=Manager, dc=example, dc=ru"; ldap-password "secret"; ldap-base-dn "dc=example, dc=ru"; ldap-method dynamic; ddns-update-style ad-hoc;
Запуск сервера DHCP произведите командой (вместо fxp0 укажите ваш интерфейс).
/usr/sbin/dhcpd fxp0
В результате поиск данных для выдачи IP-адресов по DHCP будет производиться в LDAP.
Установка и настройка сервера FTP
Скачайте FTP-сервер - ftp://ftp.proftpd.org/distrib/source/ proftpd-1.2.9.tar.bz2
Установите сервер командами.
tar xvfj proftpd-1.2.9.tar.bz2 cd proftpd-1.2.9
./configure --with-modules=mod_ldap make
make install
В конфигурационном файле /usr/local/etc/proftpd.conf
укажите строки.
LDAPServer localhost
LDAPDNInfo cn=Manager,dc=example,dc=ru secret LDAPDoAuth on "ou=users,dc=examle,dc=ru"
Файл LDIFF для добавления тестового пользователя выглядит следующим образом.
dn: cn=test, ou=users, dc=netup, dc=ru
cn: test
sn: test
givenName: Test
objectClass: inetOrgPerson
objectClass: uidObject
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: top
uid: test
userPassword: {MD5}2FeO34RYzgb7xbt2pYxcpA== uidNumber: 10001 gidNumber: 10001 homeDirectory: /home/test
Применить файл можно командой.
ldapadd -D "cn=Manager,dc=example,dc=ru" -w secret < netup.ldiff
В результате будет создана учётная запись FTP test с паролем qwerty (в LDAP хранится MD5-хеш {MD5} 2FeO34RYzgb7xbt2pY xcpA==). Домашняя директория пользователя - /home/test.
Запуск сервера FTP можно осуществить командой.
/usr/local/sbin/proftpd
Совместная работа UTM и LDAP
Совместная работа UTM и LDAP
180
Установка и настройка сервера DNS
Скачайте сервер DNS по адресу ftp://ftp.isc.org/isc/ bind9/9.2.3/bind-9.2.3.tar.gz.
Разархивируйте командами.
tar xvfz bind-9.2.3.tar.gz cd bind-9.2.3
Скопируйте файлы командами:
cp contrib/sdb/ldap/ldapdb.c bin/named/ cp contrib/sdb/ldap/ldapdb.h bin/named/include/
Отредактируйте файл bin/named/Makefile.in. Необходимо указать строки вместо тех, что есть.
DBDRIVER_OBJS = ldapdb.@O@
DBDRIVER_SRCS = ldapdb.c
DBDRIVER_INCLUDES = -I/usr/local/include DBDRIVER_LIBS = -L/usr/local/lib -lldap -llber
Отредактируйте файл bin/named/main.c. Необходимо указать строки.
include <ldapdb.h>
после строки
#include "xxdb.h
ldapdb_init();
после строки
xxdb_init();
ldapdb_clear();
после строки
xxdb_clear();
После этого можно произвести сборку и установку командами.
./configure
make
make install
Сервер DNS будет установлен по пути /usr/local/sbin/ named.
Конфигурационный файл /etc/named.conf.
Пример конфигурации домена, данные для которого хранятся в LDAP.
zone "hosting.example.ru" { type master;
database "ldap ldap://127.О.0.1/dc=hosting,dc=exampl e,dc=ru 172800";
} ;
Примерный вариант LDIFF-файла для создания зоны с одной записью.
dn: dc=hosting,dc=example,dc=ru dc: hosting objectClass: dcObject objectClass: Organization o: DNS
dn: relativeDomainName=zzz,dc=hosting,dc=example,dc= ru
objectClass: top objectClass: dNSZone relativeDomainName: zzz aRecord: 10.1.2.105 dNSTTL: 3600
zoneName: hosting.example.ru
dn: dNSTTL=3600+relativeDomainName=@,dc=hosting,dc=ex ample,dc=ru
Совместная работа UTM и LDAP
Совместная работа UTM и LDAP
182
objectClass: top objectClass: dNSZone relativeDomainName: @
sOARecord: hosting.example.ru. root.example.ru. 2004040304 86400 900 3600000 360
0
dNSTTL: 3600
zoneName: hosting.example.ru mXRecord: 10 mail.example.ru. nSRecord: ns.example.ru. nSRecord: ns2.example.ru. aRecord: 10.0.0.1
Настройка биллинговой системы
Настройки доступа к серверу LDAP из UTM указываются в конфигурационном файле /netup/utm5/utm5.cfg. Для этого используются следующие параметры:
ldap_enable
Включить ли поддержку LDAP. Значение по умолчанию - no. Для включения необходимо указать yes.
ldap_host
IP-адрес сервера LDAP. Значение по умолчанию - 127.0.0.1. ldap_login
Логин для доступа к серверу LDAP. Значение по умолчанию не предусмотрено. Пример: cn=Manager,dc=example,dc=ru.
ldap_password
Пароль для доступа к серверу LDAP. Значения по умолчанию не предусмотрено.
ldap_ping_timeout
Периодичность проверки соединения с сервером LDAP в секундах. Значение по умолчанию - 60 секунд.
ldap_base_dn
Верхняя часть вашего дерева LDAP. Эта строка добавляется к запросам на сервер LDAP. Пример: ou=users, dc=example, dc=ru. В этом случае запрос на добавление почтового ящика будет выглядеть как cn=, ou=users, dc=example, dc=ru.
Для добавления почтового ящика пользователю через биллинговую систему необходимо задать новый технический параметр на подключённую услугу. Обычно это периодическая услуга, стоимость которой равна абонентской плате за пользование почтовым ящиком.

IP через биллинговую систему необходимо подключить пользователю услугу типа «Передача IP-трафика» и указать IP-адрес и MAC-адрес. При этом будет автоматически добавлена запись на сервере LDAP в раздел cn=DHCP Config. Например,
dn: cn=10.1.2.45, cn=DHCP Config, dc=example, dc=ru
cn: 10.1.2.45
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
dhcpHWAddress: ethernet 00:00:e2:58:ac:a6 dhcpStatements: fixed-address 10.1.2.45
Ссылки
RFC-2251 по протоколу LDAP - rfc2251.txt.
Проект OpenLDAP - .
Совместная работа UTM и LDAP
Контрольный пример
184
Контрольный пример
Контрольный пример предназначен для проверки корректности функционирования биллинговой системы NetUP UTM на вашем сервере. Суть проверки заключается в загрузке в базу данных параметров пяти клиентов и эмулирования работы этих пользователей в течение трёх месяцев. Необходимые данные для запуска контрольного примера находятся на CD-ROM с биллинговой системой NetUP UTM.
Внимание. Остановите сервисы критичные к изменению даты на сервере.
Остановите ядро биллинговой системы utm5_core.
Установите дату на сервере на 00 часов 00 минут 1 апреля 2003 года.
Для FreeBSD:
date 0304010000
Для Linux:
date 0401000003
Для загрузки данных в базу выполните команды.
mysqladmin drop UTM5
mysqladmin create UTM5
mysql UTM5 < UTM5_MYSQL_kp.sql
mysql -f UTM5 < UTM5_MYSQL_update.sql
Произведите корректировку данных в файле kp.pl о том, на каком порту принимает NetFlow-пакеты ядро биллинговой системы, а также путь к программе-генератору NetFlow-пакетов - utm5_flowgen (обычно /netup/utm5/bin/ utm5_flow-gen).
Запустите ядро биллинговой системы utm5_core.
Запустите программу kp.pl командой.
perl kp.pl
В процессе работы программы дата на сервере будет меняться с 1 апреля 2003 г. до 1 июля 2003 г. Таким образом, будет эмулирована работа тестовых пользователей в течение трёх месяцев: апреля, мая, июня 2003 г.
|
Первый месяц (апрель 2003 г.) |
|
|
clil |
cli2 |
cli3 |
cli4 |
cli5 |
Объем в день,
МБ |
0,5 |
2 |
4 |
10 |
40 |
Количество
дней |
30 |
30 |
30 |
30 |
30 |
|
Объем за месяц, МБ |
15 |
60 |
120 |
300 |
1200 |
|
Стоимость единицы превышения |
0,2 |
0,2 |
0,2 |
0,15 |
0,15 |
Предоплачено,
МБ |
50 |
50 |
50 |
500 |
500 |
|
Стоимость превышения |
0 |
2 |
14 |
0 |
105 |
|
Абонплата |
3 |
3 |
3 |
100 |
100 |
|
Остаток |
-3 |
-5 |
-17 |
-100 |
-205 |
|
Контрольный пример
Контрольный пример
|
Второй месяц (май 2003 г.) |
|
|
clil |
cli2 |
cli3 |
cli4 |
cli5 |
Объем в день,
МБ |
1 |
2,5 |
5 |
20 |
50 |
Количество
дней |
31 |
31 |
31 |
31 |
31 |
|
Объем за месяц, МБ |
31 |
77,5 |
155 |
620 |
1550 |
|
Стоимость единицы превышения |
0,2 |
0,2 |
0,2 |
0,15 |
0,15 |
Предоплачено,
МБ |
50 |
50 |
50 |
500 |
500 |
|
Стоимость превышения |
0 |
5,5 |
21 |
18 |
157,5 |
|
Абонплата |
3 |
3 |
3 |
100 |
100 |
|
Остаток |
-6 |
-13,5 |
-41 |
-218 |
-462,5 |
|
|
Третий месяц (июнь 2003 г.) |
|
|
clil |
cli2 |
cli3 |
cli4 |
cli5 |
Объем в день,
МБ |
1,5 |
3 |
6 |
30 |
60 |
Количество
дней |
30 |
30 |
30 |
30 |
30 |
|
Объем за месяц, МБ |
45 |
90 |
180 |
900 |
1800 |
|
Стоимость единицы превышения |
0,2 |
0,2 |
0,2 |
0,15 |
0,15 |
Предоплачено,
МБ |
50 |
50 |
50 |
500 |
500 |
|
|
Стоимость превышения |
0 |
8 |
26 |
60 |
195 |
|
Абонплата |
3 |
3 |
3 |
100 |
100 |
|
Остаток |
-3 |
-11 |
-29 |
-160 |
-295 |
|
Итого остаток |
-9 |
-24,5 |
-70 |
-378 |
-757,5 |
В случае корректной работы биллинговой системы, полученные вами цифры после отработки kp.pl должны совпадать с указанными в таблице.
После проведения работ установите корректную дату на сервере.
Контрольный пример
|