as5350 + radius c БД

Обсуждаем, спрашиваем, помогаем в настройке VoIP

Re: as5350 + radius c БД

Сообщение TrEK » 16 апр 2013, 10:31

Это условие необходимое, но не достаточное - у меня как минимум, сразу три вопроса:
1. В какой секции этот инклюд находится?
2. Каково содержимое sql.conf?
3. Каково содержимое секции accounting?


1. В секции modules.
2.
Код: Выделить всё
# -*- text -*-
##
## sql.conf -- SQL modules
##
##      $Id$

######################################################################
#
#  Configuration for the SQL module
#
#  The database schemas and queries are located in subdirectories:
#
#       sql/DB/schema.sql       Schema
#       sql/DB/dialup.conf      Basic dialup (including policy) queries
#       sql/DB/counter.conf     counter
#       sql/DB/ippool.conf      IP Pools in SQL
#       sql/DB/ippool.sql       schema for IP pools.
#
#  Where "DB" is mysql, mssql, oracle, or postgresql.
#

sql {
        #
        #  Set the database to one of:
        #
        #       mysql, mssql, oracle, postgresql
        #
        database = "mysql"

        #
        #  Which FreeRADIUS driver to use.
        #
        driver = "rlm_sql_${database}"

        # Connection info:
        server = "localhost"
        #port = 3306
        login = "login"
        password = "pass"

        # Database table configuration for everything except Oracle
        radius_db = "radius"
        # If you are using Oracle then use this instead
        # radius_db = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=your_sid)))"

        # If you want both stop and start records logged to the
        # same SQL table, leave this as is.  If you want them in
        # different tables, put the start table in acct_table1
        # and stop table in acct_table2
        acct_table1 = "radacct"
        acct_table2 = "radacct"

        # Allow for storing data after authentication
        postauth_table = "radpostauth"

        authcheck_table = "radcheck"
        authreply_table = "radreply"

        groupcheck_table = "radgroupcheck"
        groupreply_table = "radgroupreply"

        # Table to keep group info
        usergroup_table = "radusergroup"

        # If set to 'yes' (default) we read the group tables
        # If set to 'no' the user MUST have Fall-Through = Yes in the radreply table
        # read_groups = yes

        # Remove stale session if checkrad does not see a double login
        deletestalesessions = yes

        # Print all SQL statements when in debug mode (-x)
        sqltrace = no
        sqltracefile = ${logdir}/sqltrace.sql

        # number of sql connections to make to server
        num_sql_socks = 5

        # number of seconds to dely retrying on a failed database
        # connection (per_socket)
        connect_failure_retry_delay = 60

        # lifetime of an SQL socket.  If you are having network issues
        # such as TCP sessions expiring, you may need to set the socket
        # lifetime.  If set to non-zero, any open connections will be
        # closed "lifetime" seconds after they were first opened.
        lifetime = 0

        # Maximum number of queries used by an SQL socket.  If you are
        # having issues with SQL sockets lasting "too long", you can
        # limit the number of queries performed over one socket.  After
        # "max_qeuries", the socket will be closed.  Use 0 for "no limit".
        max_queries = 0

        # Set to 'yes' to read radius clients from the database ('nas' table)
        # Clients will ONLY be read on server startup.  For performance
        # and security reasons, finding clients via SQL queries CANNOT
        # be done "live" while the server is running.
        #
        #readclients = yes

        # Table to keep radius client info
        nas_table = "nas"

        # Read driver-specific configuration
        $INCLUDE sql/${database}/dialup.conf
#####################################################
accounting_stop_query = "UPDATE ${acct_table2} SET AcctStopTime = '%S', \
AcctSessionTime = '%{Acct-Session-Time}', \
AcctInputOctets = '%{Acct-Input-Octets}', \
AcctOutputOctets = '%{Acct-Output-Octets}', \
AcctTerminateCause = '%{h323-disconnect-cause}', \
AcctStopDelay = '%{Acct-Delay-Time}', \
ConnectInfo_stop ='%{Connect-Info}', \
`remote-address`='%{h323-remote-address}', \
`hopcount`='%{iphop[0]}', \
`hop1`='%{iphop[1]}', \
`hop2`='%{iphop[2]}' \
WHERE AcctSessionId = '%{Acct-Session-Id}' \
AND UserName = '%{SQL-User-Name}' \
AND NASIPAddress = '%{NAS-IP-Address}'"
}



3. Каково содержимое секции accounting?


в sites-enabled/default
Код: Выделить всё
accounting {
        #
        #  Create a 'detail'ed log of the packets.
        #  Note that accounting requests which are proxied
        #  are also logged in the detail file.
        detail
#       daily

        #  Update the wtmp file
        #
        #  If you don't use "radlast", you can delete this line.
        unix

        #
        #  For Simultaneous-Use tracking.
        #
        #  Due to packet losses in the network, the data here
        #  may be incorrect.  There is little we can do about it.
        radutmp
#       sradutmp

        #  Return an address to the IP Pool when we see a stop record.
#       main_pool

        #
        #  Log traffic to an SQL database.
        #
        #  See "Accounting queries" in sql.conf
        sql

        #
        #  If you receive stop packets with zero session length,
        #  they will NOT be logged in the database.  The SQL module
        #  will print a message (only in debugging mode), and will
        #  return "noop".
        #
        #  You can ignore these packets by uncommenting the following
        #  three lines.  Otherwise, the server will not respond to the
        #  accounting request, and the NAS will retransmit.
        #
#       if (noop) {
#               ok
#       }

        #
        #  Instead of sending the query to the SQL server,
        #  write it into a log file.
        #
#       sql_log

        #  Cisco VoIP specific bulk accounting
#       pgsql-voip

        #  Filter attributes from the accounting response.
        attr_filter.accounting_response

        #
        #  See "Autz-Type Status-Server" for how this works.
        #
#       Acct-Type Status-Server {
#
#       }
}
TrEK
новичок
 
Сообщения: 44
Зарегистрирован: 02 мар 2012, 13:35

Re: as5350 + radius c БД

Сообщение lehisnoe » 16 апр 2013, 10:52

Ну вот и ответ и он находится в sql.conf:
у тебя есть директива accounting_stop_query, которая обновляет инфу о вызове (UPDATE), но нет accounting_start_query, которая вставляет (INSERT) начальные данные о вызове при его установлении. А т.к. нет начальных данных, то и обновлять нечего.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: as5350 + radius c БД

Сообщение TrEK » 16 апр 2013, 13:52

lehisnoe писал(а):Ну вот и ответ и он находится в sql.conf:
у тебя есть директива accounting_stop_query, которая обновляет инфу о вызове (UPDATE), но нет accounting_start_query, которая вставляет (INSERT) начальные данные о вызове при его установлении. А т.к. нет начальных данных, то и обновлять нечего.

То есть здесь неправильно?
в sql.conf:
Код: Выделить всё
        $INCLUDE sql/${database}/dialup.conf


Код: Выделить всё
        accounting_start_query = " \
          INSERT INTO ${acct_table1} \
            (acctsessionid,    acctuniqueid,     username, \
             realm,            nasipaddress,     nasportid, \
             nasporttype,      acctstarttime,    acctstoptime, \
             acctsessiontime,  acctauthentic,    connectinfo_start, \
             connectinfo_stop, acctinputoctets,  acctoutputoctets, \
             calledstationid,  callingstationid, acctterminatecause, \
             servicetype,      framedprotocol,   framedipaddress, \
             acctstartdelay,   acctstopdelay,    xascendsessionsvrkey) \
          VALUES \
            ('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', \
             '%{SQL-User-Name}', \
             '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', \
             '%{NAS-Port-Type}', '%S', NULL, \
             '0', '%{Acct-Authentic}', '%{Connect-Info}', \
             '', '0', '0', \
             '%{Called-Station-Id}', '%{Calling-Station-Id}', '', \
             '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', \
             '%{%{Acct-Delay-Time}:-0}', '0', '%{X-Ascend-Session-Svr-Key}')"

        accounting_start_query_alt  = " \
          UPDATE ${acct_table1} SET \
             acctstarttime     = '%S', \
             acctstartdelay    = '%{%{Acct-Delay-Time}:-0}', \
             connectinfo_start = '%{Connect-Info}' \
          WHERE acctsessionid  = '%{Acct-Session-Id}' \
          AND username         = '%{SQL-User-Name}' \
          AND nasipaddress     = '%{NAS-IP-Address}'"

        accounting_stop_query = " \
          UPDATE ${acct_table2} SET \
             acctstoptime       = '%S', \
             acctsessiontime    = '%{Acct-Session-Time}', \
             acctinputoctets    = '%{%{Acct-Input-Gigawords}:-0}' << 32 | \
                                  '%{%{Acct-Input-Octets}:-0}', \
             acctoutputoctets   = '%{%{Acct-Output-Gigawords}:-0}' << 32 | \
                                  '%{%{Acct-Output-Octets}:-0}', \
             acctterminatecause = '%{Acct-Terminate-Cause}', \
             acctstopdelay      = '%{%{Acct-Delay-Time}:-0}', \
             connectinfo_stop   = '%{Connect-Info}' \
          WHERE acctsessionid   = '%{Acct-Session-Id}' \
          AND username          = '%{SQL-User-Name}' \
          AND nasipaddress      = '%{NAS-IP-Address}'"


Здесь же есть описание создания данных в БД, в dialup.conf
Или просто переделать строки обновления на строки создания в sql.conf ?
TrEK
новичок
 
Сообщения: 44
Зарегистрирован: 02 мар 2012, 13:35

Re: as5350 + radius c БД

Сообщение TrEK » 16 апр 2013, 22:18

Закоментировал в sql.conf строку # $INCLUDE sql/${database}/dialup.conf

добавил для создания полей в таблице... но и далее ничего не создается и не апдейтитсья...
####################################################
accounting_start_query = "INSERT ${acct_table2} SET AcctStopTime = '%S', \
AcctSessionTime = '%{Acct-Session-Time}', \
AcctInputOctets = '%{Acct-Input-Octets}', \
AcctOutputOctets = '%{Acct-Output-Octets}', \
AcctTerminateCause = '%{h323-disconnect-cause}', \
AcctStopDelay = '%{Acct-Delay-Time}', \
ConnectInfo_stop ='%{Connect-Info}', \
`remote-address`='%{h323-remote-address}', \
`hopcount`='%{iphop[0]}', \
`hop1`='%{iphop[1]}', \
`hop2`='%{iphop[2]}' \
WHERE AcctSessionId = '%{Acct-Session-Id}' \
AND UserName = '%{SQL-User-Name}' \
AND NASIPAddress = '%{NAS-IP-Address}'"
#####################################################
accounting_stop_query = "UPDATE ${acct_table2} SET AcctStopTime = '%S', \
AcctSessionTime = '%{Acct-Session-Time}', \
AcctInputOctets = '%{Acct-Input-Octets}', \
AcctOutputOctets = '%{Acct-Output-Octets}', \
AcctTerminateCause = '%{h323-disconnect-cause}', \
AcctStopDelay = '%{Acct-Delay-Time}', \
ConnectInfo_stop ='%{Connect-Info}', \
`remote-address`='%{h323-remote-address}', \
`hopcount`='%{iphop[0]}', \
`hop1`='%{iphop[1]}', \
`hop2`='%{iphop[2]}' \
WHERE AcctSessionId = '%{Acct-Session-Id}' \
AND UserName = '%{SQL-User-Name}' \
AND NASIPAddress = '%{NAS-IP-Address}'"
}
TrEK
новичок
 
Сообщения: 44
Зарегистрирован: 02 мар 2012, 13:35

Re: as5350 + radius c БД

Сообщение TrEK » 16 апр 2013, 22:23

уже и не знаю где , что раскоментировать, в одних статьях говорят раскоментировать в sites-enable , в других - нет.
И черт его пойми где правильная настройка... и почему оно не пишет в БД.


а по логам попробуй понять что оно хочет?:



rad_recv: Accounting-Request packet from host 192.168.180.9 port 1646, id=172, length=702
Acct-Session-Id = "00081C60"
Calling-Station-Id = "685163356"
Called-Station-Id = "520821"
h323-setup-time = "h323-setup-time=21:19:49.859 UA Tue Apr 16 2013"
h323-gw-id = "h323-gw-id=TTAS5350.ternopiltele.com"
h323-conf-id = "h323-conf-id=712CC604 A60111E2 92CB0012 0048F2F6"
h323-call-origin = "h323-call-origin=answer"
h323-call-type = "h323-call-type=Telephony"
Cisco-AVPair = "h323-incoming-conf-id=712CC604 A60111E2 92CB0012 0048F2F6"
Cisco-AVPair = "subscriber=RegularLine"
Cisco-AVPair = "gw-rxd-cdn=ton:0,npi:0,#:520821"
Cisco-AVPair = "calling-party-category=9"
Cisco-AVPair = "transmission-medium-req=0"
Cisco-AVPair = "feature-vsa=fn:TWC,ft:04/16/2013 21:19:49.859,cgn:685163356,cdn:520821,frs:0,fid:208513,fcid:712CC604A60111E292CB001248F2F6,legID:37003"
User-Name = "685163356"
Cisco-AVPair = "connect-progress=Call Up"
Acct-Status-Type = Start
NAS-Port-Type = Async
NAS-Port = 0
NAS-Port-Id = "ISDN 3/1:D:1"
Service-Type = Login-User
NAS-IP-Address = 192.168.180.9
Acct-Delay-Time = 0
+- entering group preacct {...}
++[preprocess] returns ok
[acct_unique] Hashing 'NAS-Port = 0,Client-IP-Address = 192.168.180.9,NAS-IP-Address = 192.168.180.9,Acct-Session-Id = "00081C60",User-Name = "685163356"'
[acct_unique] Acct-Unique-Session-ID = "72f2a21f82da35f7".
++[acct_unique] returns ok
++[acct_unique] returns noop
[suffix] No '@' in User-Name = "685163356", looking up realm NULL
[suffix] No such realm "NULL"
++[suffix] returns noop
++[files] returns noop
+- entering group accounting {...}
[detail] expand: /var/log/freeradius/radacct/%{Client-IP-Address}/detail-%Y%m%d -> /var/log/freeradius/radacct/192.168.180.9/detail-20130416
[detail] /var/log/freeradius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /var/log/freeradius/radacct/192.168.180.9/detail-20130416
[detail] expand: %t -> Tue Apr 16 22:19:49 2013
++[detail] returns ok
++[unix] returns ok
[radutmp] expand: /var/log/freeradius/radutmp -> /var/log/freeradius/radutmp
[radutmp] expand: %{User-Name} -> 685163356
++[radutmp] returns ok
[attr_filter.accounting_response] expand: %{User-Name} -> 685163356
attr_filter: Matched entry DEFAULT at line 12
++[attr_filter.accounting_response] returns updated
Sending Accounting-Response of id 172 to 192.168.180.9 port 1646
Finished request 0.
Cleaning up request 0 ID 172 with timestamp +18
Going to the next request
Ready to process requests.
rad_recv: Accounting-Request packet from host 192.168.180.9 port 1646, id=173, length=704
Acct-Session-Id = "00081C61"
Calling-Station-Id = "685163356"
Called-Station-Id = "520821"
Cisco-AVPair = "call-id=71310BB4-A60111E2-B388EE85-4F603D40@192.168.180.9"
h323-setup-time = "h323-setup-time=21:19:49.879 UA Tue Apr 16 2013"
h323-gw-id = "h323-gw-id=TTAS5350.ternopiltele.com"
h323-conf-id = "h323-conf-id=712CC604 A60111E2 92CB0012 0048F2F6"
h323-call-origin = "h323-call-origin=originate"
h323-call-type = "h323-call-type=VoIP"
Cisco-AVPair = "h323-incoming-conf-id=712CC604 A60111E2 92CB0012 0048F2F6"
Cisco-AVPair = "subscriber=RegularLine"
Cisco-AVPair = "session-protocol=sipv2"
Cisco-AVPair = "gw-rxd-cdn=ton:0,npi:0,#:520821"
Cisco-AVPair = "feature-vsa=fn:TWC,ft:04/16/2013 21:19:49.867,cgn:685163356,cdn:520821,frs:0,fid:208514,fcid:712CC604A60111E292CB001248F2F6,legID:37004"
User-Name = "685163356"
Cisco-AVPair = "connect-progress=Call Up"
Acct-Status-Type = Start
Service-Type = Login-User
NAS-IP-Address = 192.168.180.9
Acct-Delay-Time = 0
+- entering group preacct {...}
++[preprocess] returns ok
[acct_unique] WARNING: Attribute NAS-Port was not found in request, unique ID MAY be inconsistent
[acct_unique] Hashing ',Client-IP-Address = 192.168.180.9,NAS-IP-Address = 192.168.180.9,Acct-Session-Id = "00081C61",User-Name = "685163356"'
[acct_unique] Acct-Unique-Session-ID = "6143132ba01e5645".
++[acct_unique] returns ok
++[acct_unique] returns noop
[suffix] No '@' in User-Name = "685163356", looking up realm NULL
[suffix] No such realm "NULL"
++[suffix] returns noop
++[files] returns noop
+- entering group accounting {...}
[detail] expand: /var/log/freeradius/radacct/%{Client-IP-Address}/detail-%Y%m%d -> /var/log/freeradius/radacct/192.168.180.9/detail-20130416
[detail] /var/log/freeradius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /var/log/freeradius/radacct/192.168.180.9/detail-20130416
[detail] expand: %t -> Tue Apr 16 22:19:49 2013
++[detail] returns ok
++[unix] returns noop
[radutmp] expand: /var/log/freeradius/radutmp -> /var/log/freeradius/radutmp
[radutmp] expand: %{User-Name} -> 685163356
rlm_radutmp: No NAS-Port seen. Cannot do anything.
rlm_radumtp: WARNING: checkrad will probably not work!
++[radutmp] returns noop
[attr_filter.accounting_response] expand: %{User-Name} -> 685163356
attr_filter: Matched entry DEFAULT at line 12
++[attr_filter.accounting_response] returns updated
Sending Accounting-Response of id 173 to 192.168.180.9 port 1646
Finished request 1.
Cleaning up request 1 ID 173 with timestamp +18
Going to the next request
Ready to process requests.





+- - это что означает, что не впоряде что-то иль так и должно быть?
Код: Выделить всё
  rlm_radutmp: No NAS-Port seen.  Cannot do anything.
  rlm_radumtp: WARNING: checkrad will probably not work!

это критическая ошибка или с ней должно рабоатть?
TrEK
новичок
 
Сообщения: 44
Зарегистрирован: 02 мар 2012, 13:35

Re: as5350 + radius c БД

Сообщение TrEK » 19 апр 2013, 01:42

поможете с этим проклятым accounting_start_query?
TrEK
новичок
 
Сообщения: 44
Зарегистрирован: 02 мар 2012, 13:35

Re: as5350 + radius c БД

Сообщение lehisnoe » 20 апр 2013, 16:25

TrEK писал(а):поможете с этим проклятым accounting_start_query?
Что именно у тебя с ним не получается?
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: as5350 + radius c БД

Сообщение TrEK » 21 апр 2013, 22:19

Я не знаю какие запросы вставить надо для того, чтоб БД запонилась.
TrEK
новичок
 
Сообщения: 44
Зарегистрирован: 02 мар 2012, 13:35

Re: as5350 + radius c БД

Сообщение lehisnoe » 23 апр 2013, 08:34

А что ты сделал для того, чтобы узнать это?
P.S. Как сказал root в соседнем топике, на этом форуме тебе могут подсказать направление для дальнейшего самостоятельного движения, но это не значит, что тут за тебя сделают твою работу.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: as5350 + radius c БД

Сообщение TrEK » 23 апр 2013, 11:58

Это из серии картинок про поросенка Петра.

На сколько я понял, должна быть секция
accounting_start_query и accounting_stop_query
только вот зачем секция:
accounting_start_query_alt
и
accounting_stop_query_alt

Ну и я так понимаю кроме стоп и старт надо еще и accounting_update_query?



ПОпробовал внести изменения в блок записи, но не правильно .. так как фрирадиус не запускается.
Код: Выделить всё
accounting_start_query = "INSERT INTO ${acct_table2} \
(`AcctStopTime`,`AcctSessionTime`,`AcctInputOctets`,`AcctOutputOctets`,`AcctTerminateCause`,`AcctStopDelay`,`ConnectInfo_stop`,`remote-address`,`hopcount`,`hop1`,`hop2`,)\
    VALUES \
('%S','%{Acct-Session-Time}','%{Acct-Input-Octets}','%{Acct-Output-Octets}','%{h323-disconnect-cause}','%{Acct-Delay-Time}','%{Connect-Info}','%{h323-remote-address}','%{iphop[0]}','%{iphop[1]}','%{iphop[2]}')
WHERE AcctSessionId = '%{Acct-Session-Id}' \
AND UserName = '%{SQL-User-Name}' \
AND NASIPAddress = '%{NAS-IP-Address}'"
TrEK
новичок
 
Сообщения: 44
Зарегистрирован: 02 мар 2012, 13:35

Пред.След.

Вернуться в Настройка VoIP железа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8