Настройка FREERADIUS для приемки аккаутинговой информации от станции ELTEX SMG-2016M
1. Готовим БД MySQL для принятия аккаунтинговой информации:
1.1. Подключаемся к клиенту MySQL
# mysql -u root -p
1.2 Создаем пользователя radiususer c паролем 12345
1.3 Создаем базу данных radius
1.4 Даем пользователю radiususer право распоряжаться базой radius
1.5 Создаем таблицу redacct
mysql> use radius
mysql> CREATE TABLE IF NOT EXISTS `radacct` (
`radacctid` bigint(21) NOT NULL AUTO_INCREMENT,
`acctsessionid` varchar(64) NOT NULL DEFAULT '',
`username` varchar(50) NOT NULL,
`h323callorigin` varchar(50) NOT NULL,
`nasipaddress` varchar(15) NOT NULL DEFAULT '',
`acctstarttime` datetime DEFAULT NULL,
`acctstoptime` datetime DEFAULT NULL,
`acctsessiontime` int(12) DEFAULT NULL,
`calledstationid` varchar(50) NOT NULL DEFAULT '',
`callingstationid` varchar(50) NOT NULL,
`nasportid` varchar(25) NOT NULL,
`nasporttype` varchar(25) NOT NULL,
`CiscoNASPort` varchar(30) NOT NULL,
`h323calltype` varchar(30) NOT NULL,
`EventTimestamp` varchar(30) NOT NULL,
`AcctStatusType` varchar(10) NOT NULL,
`currentimeserver` datetime NOT NULL,
`h323disconnectcause` varchar(3) NOT NULL,
`AcctDelayTime` int(5) NOT NULL,
`h323gwid` varchar(20) NOT NULL,
`xpgkrouteretries` varchar(5) NOT NULL,
`h323remoteid` varchar(50) NOT NULL,
`xpgklocaldisconnectcause` int(3) NOT NULL,
`xpgksrcnumberin` varchar(50) NOT NULL,
`xpgksrcnumberout` varchar(50) NOT NULL,
`xpgkdstnumberin` varchar(50) NOT NULL,
`xpgkdstnumberout` varchar(50) NOT NULL,
`node` varchar(16) NOT NULL,
`OutgoingRTPlocaladdress` varchar(15) NOT NULL,
`OutgoingRTPremoteaddress` varchar(15) NOT NULL,
PRIMARY KEY (`radacctid`),
KEY `username` (`username`),
KEY `acctstarttime` (`acctstarttime`),
KEY `acctstoptime` (`acctstoptime`),
KEY `calledstationid` (`calledstationid`),
KEY `callingstationid` (`callingstationid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
mysql> exit
2. Настраиваем FREERADIUS
2.1 Настраиваем FREERADIUS для работы с БД MySQL
В файле /etc/raddb/radiusd.conf
раскоментируем строчку
$INCLUDE sql.conf
В файле /etc/raddb/sites-available/default
в секции accounting {…} раскомментируем модуль sql
# See "Accounting queries" in sql.conf
sql
в секции session {…} так же раскоментируем модуль sql
# See "Simultaneous Use Checking Queries" in sql.conf
sql
В файле /etc/raddb/sql.conf
проверяем, что в секции sql{…} прописаны правильные имя пользователя и пароль для БД MySQL,
а так же задана правильная таблица radacct.
sql {
...
login = "radius"
password = "12345"
...
radius_db = "radius"
...
acct_table1 = "radacct"
acct_table2 = "radacct"
...
}
2.2 Учим FREERADIUS работать с атрибутами Cisco AV-Pair, передачаемые от станции ELTEX SMG-2016
В файле /etc/raddb/modules/preprocess устанавливаем директиву with_cisco_vsa_hack в yes (по умолчанию no)
with_cisco_vsa_hack = yes
в файл словаря /usr/share/freeradius/dictionary.cisco
добавил в конец раздела # SIP Attributes (после 150-ого атрибута)
ATTRIBUTE xpgk-route-retries 171 string
ATTRIBUTE h323-remote-id 172 string
ATTRIBUTE xpgk-local-disconnect-cause 173 string
ATTRIBUTE xpgk-src-number-in 174 string
ATTRIBUTE xpgk-src-number-out 175 string
ATTRIBUTE xpgk-dst-number-in 176 string
ATTRIBUTE xpgk-dst-number-out 177 string
2.3 Определяем запросы по вставке информации в БД MySQL
Делаем резервную копию файла
cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup-save.conf
Затем вносим в файл /etc/raddb/sql/mysql/dialup.conf изменения
Раздел Accounting Queries приводим к виду:
#######################################################################
# Accounting Queries
#######################################################################
accounting_stop_query = " \
INSERT INTO ${acct_table1} \
(acctsessionid, \
username, \
nasipaddress, nasportid, nasporttype,\
acctstarttime, \
acctstoptime, \
acctsessiontime, \
calledstationid, callingstationid, \
h323callorigin, CiscoNASPort, h323calltype, EventTimestamp, \
AcctStatusType, \
currentimeserver, h323disconnectcause, \
AcctDelayTime, h323gwid, xpgkrouteretries, \
h323remoteid, xpgklocaldisconnectcause, \
xpgksrcnumberin, xpgksrcnumberout, xpgkdstnumberin, xpgkdstnumberout, node,\
OutgoingRTPlocaladdress, OutgoingRTPremoteaddress) \
VALUES \
('%{Acct-Session-Id}', \
'%{User-Name}', \
'%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', \
CONCAT(SUBSTRING('%{h323-setup-time}',33, 4),'-',\
case SUBSTRING('%{h323-setup-time}',26, 3) \
when \'Jan\' then \'01\' \
when \'Feb\' then \'02\' \
when \'Mar\' then \'03\' \
when \'Apr\' then \'04\' \
when \'May\' then \'05\' \
when \'Jun\' then \'06\' \
when \'Jul\' then \'07\' \
when \'Aug\' then \'08\' \
when \'Sep\' then \'09\' \
when \'Oct\' then \'10\' \
when \'Nov\' then \'11\' \
when \'Dec\' then \'12\' end,\
'-',SUBSTRING('%{h323-setup-time}',30,2),\
' ',SUBSTRING_INDEX('%{h323-setup-time}', ':', 2),SUBSTRING('%{h323-setup-time}',6, 3)), \
CONCAT(SUBSTRING('%{h323-disconnect-time}',33, 4),'-',\
case SUBSTRING('%{h323-disconnect-time}',26, 3) \
when \'Jan\' then \'01\' \
when \'Feb\' then \'02\' \
when \'Mar\' then \'03\' \
when \'Apr\' then \'04\' \
when \'Maj\' then \'05\' \
when \'Jun\' then \'06\' \
when \'Yul\' then \'07\' \
when \'Aug\' then \'08\' \
when \'Sep\' then \'09\' \
when \'Oct\' then \'10\' \
when \'Nov\' then \'11\' \
when \'Dec\' then \'12\' end,\
'-',SUBSTRING('%{h323-disconnect-time}',30,2),\
' ',SUBSTRING_INDEX('%{h323-disconnect-time}', ':', 2),SUBSTRING('%{h323-disconnect-time}',6, 3)), \
'%{Acct-Session-Time}', \
'%{Called-Station-Id}', '%{Calling-Station-Id}', \
'%{h323-call-origin}', '%{Cisco-NAS-Port}', '%{h323-call-type}', '%{Event-Timestamp}', \
'%{Acct-Status-Type}', \
'%S', '%{h323-disconnect-cause}', \
'%{Acct-Delay-Time}', '%{h323-gw-id}', '%{xpgk-route-retries}', \
'%{h323-remote-id}', '%{xpgk-local-disconnect-cause}', \
'%{xpgk-src-number-in}', '%{xpgk-src-number-out}', '%{xpgk-dst-number-in}', '%{xpgk-dst-number-out}', 'UFA-SMG2', \
'%{Outgoing-RTP-local-address}', '%{Outgoing-RTP-remote-address}')"
Здесь UFA-SMG2 - это имя устройства
2.4 Разрешаем серверу FREERADIUS работать со станцией SMG-2016 с ip адресом 10.207.32.5 и с radius-секретом smg
В файле /etc/raddb/clients.conf
client 10.207.32.5 {
ipaddr = 10.207.32.5
secret = smg
}
2.5 Рестартуем RADIUS
# service radiusd restart
Теперь, если станция ELTEX будет отправлять аккаутинговые пакеты, RADIUS их примет и сложит в БД MySQL
1. Готовим БД MySQL для принятия аккаунтинговой информации:
1.1. Подключаемся к клиенту MySQL
# mysql -u root -p
1.2 Создаем пользователя radiususer c паролем 12345
1.3 Создаем базу данных radius
1.4 Даем пользователю radiususer право распоряжаться базой radius
1.5 Создаем таблицу redacct
mysql> use radius
mysql> CREATE TABLE IF NOT EXISTS `radacct` (
`radacctid` bigint(21) NOT NULL AUTO_INCREMENT,
`acctsessionid` varchar(64) NOT NULL DEFAULT '',
`username` varchar(50) NOT NULL,
`h323callorigin` varchar(50) NOT NULL,
`nasipaddress` varchar(15) NOT NULL DEFAULT '',
`acctstarttime` datetime DEFAULT NULL,
`acctstoptime` datetime DEFAULT NULL,
`acctsessiontime` int(12) DEFAULT NULL,
`calledstationid` varchar(50) NOT NULL DEFAULT '',
`callingstationid` varchar(50) NOT NULL,
`nasportid` varchar(25) NOT NULL,
`nasporttype` varchar(25) NOT NULL,
`CiscoNASPort` varchar(30) NOT NULL,
`h323calltype` varchar(30) NOT NULL,
`EventTimestamp` varchar(30) NOT NULL,
`AcctStatusType` varchar(10) NOT NULL,
`currentimeserver` datetime NOT NULL,
`h323disconnectcause` varchar(3) NOT NULL,
`AcctDelayTime` int(5) NOT NULL,
`h323gwid` varchar(20) NOT NULL,
`xpgkrouteretries` varchar(5) NOT NULL,
`h323remoteid` varchar(50) NOT NULL,
`xpgklocaldisconnectcause` int(3) NOT NULL,
`xpgksrcnumberin` varchar(50) NOT NULL,
`xpgksrcnumberout` varchar(50) NOT NULL,
`xpgkdstnumberin` varchar(50) NOT NULL,
`xpgkdstnumberout` varchar(50) NOT NULL,
`node` varchar(16) NOT NULL,
`OutgoingRTPlocaladdress` varchar(15) NOT NULL,
`OutgoingRTPremoteaddress` varchar(15) NOT NULL,
PRIMARY KEY (`radacctid`),
KEY `username` (`username`),
KEY `acctstarttime` (`acctstarttime`),
KEY `acctstoptime` (`acctstoptime`),
KEY `calledstationid` (`calledstationid`),
KEY `callingstationid` (`callingstationid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
mysql> exit
2. Настраиваем FREERADIUS
2.1 Настраиваем FREERADIUS для работы с БД MySQL
В файле /etc/raddb/radiusd.conf
раскоментируем строчку
$INCLUDE sql.conf
В файле /etc/raddb/sites-available/default
в секции accounting {…} раскомментируем модуль sql
# See "Accounting queries" in sql.conf
sql
в секции session {…} так же раскоментируем модуль sql
# See "Simultaneous Use Checking Queries" in sql.conf
sql
В файле /etc/raddb/sql.conf
проверяем, что в секции sql{…} прописаны правильные имя пользователя и пароль для БД MySQL,
а так же задана правильная таблица radacct.
sql {
...
login = "radius"
password = "12345"
...
radius_db = "radius"
...
acct_table1 = "radacct"
acct_table2 = "radacct"
...
}
2.2 Учим FREERADIUS работать с атрибутами Cisco AV-Pair, передачаемые от станции ELTEX SMG-2016
В файле /etc/raddb/modules/preprocess устанавливаем директиву with_cisco_vsa_hack в yes (по умолчанию no)
with_cisco_vsa_hack = yes
в файл словаря /usr/share/freeradius/dictionary.cisco
добавил в конец раздела # SIP Attributes (после 150-ого атрибута)
ATTRIBUTE xpgk-route-retries 171 string
ATTRIBUTE h323-remote-id 172 string
ATTRIBUTE xpgk-local-disconnect-cause 173 string
ATTRIBUTE xpgk-src-number-in 174 string
ATTRIBUTE xpgk-src-number-out 175 string
ATTRIBUTE xpgk-dst-number-in 176 string
ATTRIBUTE xpgk-dst-number-out 177 string
2.3 Определяем запросы по вставке информации в БД MySQL
Делаем резервную копию файла
cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup-save.conf
Затем вносим в файл /etc/raddb/sql/mysql/dialup.conf изменения
Раздел Accounting Queries приводим к виду:
#######################################################################
# Accounting Queries
#######################################################################
accounting_stop_query = " \
INSERT INTO ${acct_table1} \
(acctsessionid, \
username, \
nasipaddress, nasportid, nasporttype,\
acctstarttime, \
acctstoptime, \
acctsessiontime, \
calledstationid, callingstationid, \
h323callorigin, CiscoNASPort, h323calltype, EventTimestamp, \
AcctStatusType, \
currentimeserver, h323disconnectcause, \
AcctDelayTime, h323gwid, xpgkrouteretries, \
h323remoteid, xpgklocaldisconnectcause, \
xpgksrcnumberin, xpgksrcnumberout, xpgkdstnumberin, xpgkdstnumberout, node,\
OutgoingRTPlocaladdress, OutgoingRTPremoteaddress) \
VALUES \
('%{Acct-Session-Id}', \
'%{User-Name}', \
'%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', \
CONCAT(SUBSTRING('%{h323-setup-time}',33, 4),'-',\
case SUBSTRING('%{h323-setup-time}',26, 3) \
when \'Jan\' then \'01\' \
when \'Feb\' then \'02\' \
when \'Mar\' then \'03\' \
when \'Apr\' then \'04\' \
when \'May\' then \'05\' \
when \'Jun\' then \'06\' \
when \'Jul\' then \'07\' \
when \'Aug\' then \'08\' \
when \'Sep\' then \'09\' \
when \'Oct\' then \'10\' \
when \'Nov\' then \'11\' \
when \'Dec\' then \'12\' end,\
'-',SUBSTRING('%{h323-setup-time}',30,2),\
' ',SUBSTRING_INDEX('%{h323-setup-time}', ':', 2),SUBSTRING('%{h323-setup-time}',6, 3)), \
CONCAT(SUBSTRING('%{h323-disconnect-time}',33, 4),'-',\
case SUBSTRING('%{h323-disconnect-time}',26, 3) \
when \'Jan\' then \'01\' \
when \'Feb\' then \'02\' \
when \'Mar\' then \'03\' \
when \'Apr\' then \'04\' \
when \'Maj\' then \'05\' \
when \'Jun\' then \'06\' \
when \'Yul\' then \'07\' \
when \'Aug\' then \'08\' \
when \'Sep\' then \'09\' \
when \'Oct\' then \'10\' \
when \'Nov\' then \'11\' \
when \'Dec\' then \'12\' end,\
'-',SUBSTRING('%{h323-disconnect-time}',30,2),\
' ',SUBSTRING_INDEX('%{h323-disconnect-time}', ':', 2),SUBSTRING('%{h323-disconnect-time}',6, 3)), \
'%{Acct-Session-Time}', \
'%{Called-Station-Id}', '%{Calling-Station-Id}', \
'%{h323-call-origin}', '%{Cisco-NAS-Port}', '%{h323-call-type}', '%{Event-Timestamp}', \
'%{Acct-Status-Type}', \
'%S', '%{h323-disconnect-cause}', \
'%{Acct-Delay-Time}', '%{h323-gw-id}', '%{xpgk-route-retries}', \
'%{h323-remote-id}', '%{xpgk-local-disconnect-cause}', \
'%{xpgk-src-number-in}', '%{xpgk-src-number-out}', '%{xpgk-dst-number-in}', '%{xpgk-dst-number-out}', 'UFA-SMG2', \
'%{Outgoing-RTP-local-address}', '%{Outgoing-RTP-remote-address}')"
Здесь UFA-SMG2 - это имя устройства
2.4 Разрешаем серверу FREERADIUS работать со станцией SMG-2016 с ip адресом 10.207.32.5 и с radius-секретом smg
В файле /etc/raddb/clients.conf
client 10.207.32.5 {
ipaddr = 10.207.32.5
secret = smg
}
2.5 Рестартуем RADIUS
# service radiusd restart
Теперь, если станция ELTEX будет отправлять аккаутинговые пакеты, RADIUS их примет и сложит в БД MySQL
Комментариев нет:
Отправить комментарий