프리BSD 11.3. freeradius를 시작할 수 없습니다.

프리BSD 11.3. freeradius를 시작할 수 없습니다.

FreeBSD 11.3에서 freeradius를 시작하려고 합니다.

FreeRADIUS Version 3.0.19
    Copyright (C) 1999-2019 The FreeRADIUS server project and contributors
    There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
    PARTICULAR PURPOSE
    You may redistribute copies of FreeRADIUS under the terms of the
    GNU General Public License
    For more information about these matters, see the file named COPYRIGHT
    Starting - reading configuration files ...
    including dictionary file /usr/local/share/freeradius/dictionary
    including dictionary file /usr/local/share/freeradius/dictionary.dhcp
    including dictionary file /usr/local/share/freeradius/dictionary.vqp
    including dictionary file /usr/local/etc/raddb/dictionary
    including configuration file /usr/local/etc/raddb/radiusd.conf
    including files in directory /usr/local/etc/raddb/mods-enabled/
    including configuration file /usr/local/etc/raddb/sql.conf
    including configuration file /usr/local/etc/raddb/mods-config/sql/main/mysql/queries.conf
    including files in directory /usr/local/etc/raddb/policy.d/
    including files in directory /usr/local/etc/raddb/sites-enabled/
    including configuration file /usr/local/etc/raddb/sites-enabled/default
    including configuration file /usr/local/etc/raddb/sites-enabled/inner-tunnel
    including configuration file /usr/local/etc/raddb/sites-enabled/control-socket
    main {
     security {
            allow_core_dumps = no
     }
            name = "radiusd"
            prefix = "/usr/local"
            localstatedir = "/var"
            logdir = "/var/log"
            run_dir = "/var/run/radiusd"
    }
    main {
            name = "radiusd"
            prefix = "/usr/local"
            localstatedir = "/var"
            sbindir = "/usr/local/sbin"
            logdir = "/var/log"
            run_dir = "/var/run/radiusd"
            libdir = "/usr/local/lib/freeradius-3.0.19"
            radacctdir = "/var/log/radacct"
            hostname_lookups = no
            max_request_time = 30
            cleanup_delay = 5
            max_requests = 16384
            pidfile = "/var/run/radiusd/radiusd.pid"
            checkrad = "/usr/local/sbin/checkrad"
            debug_level = 0
            proxy_requests = yes
     log {
            stripped_names = no
            auth = yes
            auth_badpass = no
            auth_goodpass = no
            colourise = yes
            msg_denied = "You are already logged in - access denied"
     }
     resources {
     }
     security {
            max_attributes = 200
            reject_delay = 1.000000
            status_server = yes
     }
    }
    radiusd: #### Loading Realms and Home Servers ####
    radiusd: #### Loading Clients ####
    Debugger not attached
     # Creating Auth-Type = mschap
     # Creating Auth-Type = digest
     # Creating Auth-Type = eap
     # Creating Auth-Type = PAP
     # Creating Auth-Type = CHAP
     # Creating Auth-Type = MS-CHAP
    radiusd: #### Instantiating modules ####
     modules {
      # Loaded module rlm_sql
      # Loading module "sql" from file /usr/local/etc/raddb/sql.conf
      sql {
            driver = "rlm_sql_mysql"
            server = "localhost"
            port = 3306
            login = "root"
            password = <<< secret >>>
            radius_db = "stg"
            read_groups = yes
            read_profiles = yes
            read_clients = yes
            delete_stale_sessions = yes
            sql_user_name = "%{User-Name}"
            default_user_profile = ""
            client_query = "SELECT (@cnt := @cnt + 1) AS `id`, `nasname`, `shortname`, `type`, `secret`, `server`   FROM `mlg_clients`                                                                                                          CROSS JOIN (SELECT @cnt := 0) AS `dummy`         ORDER BY `id`"
            authorize_check_query = "SELECT id, username, attribute, value, op FROM mlg_check WHERE username = '%{SQL-User-Name}' ORDER BY id"
            authorize_reply_query = "SELECT id, username, attribute, value, op FROM mlg_reply WHERE username = '%{SQL-User-Name}' ORDER BY id"
            authorize_group_check_query = "SELECT id, groupname, attribute, Value, op FROM mlg_groupcheck WHERE groupname = '%{SQL-Group}' ORDER BY id"
            authorize_group_reply_query = "SELECT id, username, attribute, value, op FROM mlg_groupreply WHERE `username` = '%{SQL-User-Name}' ORDER BY id"
            group_membership_query = "SELECT username FROM mlg_groupreply WHERE username = '%{SQL-User-Name}' "
            simul_verify_query = "SELECT radacctid, acctsessionid, username, nasipaddress, nasportid, framedipaddress, callingstationid, framedprotocol FROM mlg_acct WHERE username = '%{SQL-User-Name}' AND acctstoptime IS NULL"
            safe_characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /"
            auto_escape = no
       accounting {
            reference = "%{tolower:type.%{Acct-Status-Type}.query}"
        type {
         accounting-on {
            query = "UPDATE mlg_acct SET acctstoptime = FROM_UNIXTIME(%{integer:Event-Timestamp}), acctsessiontime  = '%{integer:Event-Timestamp}' - UNIX_TIMESTAMP(acctstarttime), acctterminatecause = '%{%{Acct-Terminate-Cause}:-NAS-Reboot}' WHERE acctstoptime IS NULL AND nasipaddress   = '%{NAS-IP-Address}' AND acctstarttime <= FROM_UNIXTIME(%{integer:Event-Timestamp})"
         }
         accounting-off {
            query = "UPDATE mlg_acct SET acctstoptime = FROM_UNIXTIME(%{integer:Event-Timestamp}), acctsessiontime  = '%{integer:Event-Timestamp}' - UNIX_TIMESTAMP(acctstarttime), acctterminatecause = '%{%{Acct-Terminate-Cause}:-NAS-Reboot}' WHERE acctstoptime IS NULL AND nasipaddress   = '%{NAS-IP-Address}' AND acctstarttime <= FROM_UNIXTIME(%{integer:Event-Timestamp})"
         }
         start {
            query = "INSERT INTO mlg_acct (acctsessionid,           acctuniqueid,           username, realm,                                                                                                                                    nasipaddress,            nasportid, nasporttype,         acctstarttime,          acctupdatetime, acctstoptime,          acctsessiontime,                                                                                                     acctauthentic, connectinfo_start,        connectinfo_stop,       acctinputoctets, acctoutputoctets,      calledstationid,                                                                                                                    callingstationid, acctterminatecause,    servicetype,            framedprotocol, framedipaddress) VALUES ('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{%{NAS-Port-ID}:-%{NAS-Port}}', '%{NAS-Port-Type}', FROM_UNIXTIME(%{integer:Event-Timestamp}), FROM_UNIXTIME(%{integer:Event-Timestamp}), NULL, '0', '%{Acct-Authentic}', '%{Connect-Info}', '', '0', '0', '%{Called-Station-Id}', '%{Calling-Station-Id}', '', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}')"
         }
         interim-update {
            query = "UPDATE mlg_acct SET acctupdatetime  = (@acctupdatetime_old:=acctupdatetime), acctupdatetime  = FROM_UNIXTIME(%{integer:Event-Timestamp}), acctinterval    = %{integer:Event-Timestamp} - UNIX_TIMESTAMP(@acctupdatetime_old), framedipaddress = '%{Framed-IP-Address}', acctsessiontime = %{%{Acct-Session-Time}:-NULL}, acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}' WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
         }
         stop {
            query = "UPDATE mlg_acct SET acctstoptime       = FROM_UNIXTIME(%{integer:Event-Timestamp}), acctsessiontime   = %{%{Acct-Session-Time}:-NULL}, acctinputoctets                                                                     = '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}', acctterminatecause = '%{Acct-Terminate-Cause}', connectinfo_stop = '%{Connect-Info}' WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
         }
        }
       }
       post-auth {
            reference = ".query"
            query = "INSERT INTO mlg_postauth (username, pass, reply, authdate) VALUES ( '%{SQL-User-Name}', '%{%{User-Password}:-%{Chap-Password}}', '%{reply:Packet-Type}', '%S')"
       }
      }
    rlm_sql (sql): Driver rlm_sql_mysql (module rlm_sql_mysql) loaded and linked
    Creating attribute SQL-Group
      instantiate {
      }
    /usr/local/etc/raddb/mods-config/sql/main/mysql/queries.conf[197]: Failed parsing expanded string:
    /usr/local/etc/raddb/mods-config/sql/main/mysql/queries.conf[197]: %{tolower:type.%{Acct-Status-Type}.query}
    /usr/local/etc/raddb/mods-config/sql/main/mysql/queries.conf[197]:   ^ Unknown module

오랫동안 부팅 문제를 해결하려고 노력했지만 여전히 부팅하고 싶지 않습니다. 상황을 이해하려면 debag를 사용하십시오. MySQL 5.6을 사용하는 것은 동일한 서버에 있습니다.

실행하려면 어떻게 해야 하며 오류를 해결하려면 어떻게 해야 합니까?

답변1

저는 Freeradius를 사용해 본 적이 없으며 BSD 전문가도 아닙니다. 이 답변은 출력에 보고된 오류를 기반으로 명백한 내용을 간단히 설명합니다.

출력 끝에 오류가 나열됩니다.

    ...queries.conf[197]: Failed parsing expanded string:
    ...queries.conf[197]: %{tolower:type.%{Acct-Status-Type}.query}
    ...queries.conf[197]:   ^ Unknown module

Google에서 빠른 검색tolower이는 "rlm_expr" 모듈의 일부인 것이 좋습니다 (이 페이지에 언급된).

  • rlm_expr이 설치되어 있는지 확인하십시오. raddb/mods-available/시스템에서 위치를 찾아서 포함되어 있는지 확인하십시오 expr. 이봐
  • 구성이 rlm_expr을 로드 중인지 확인하세요. 모듈이 에서 로드된 것으로 보입니다 raddb/mods-enabled/. 따라서 위치를 찾아 mods-avaiable에 raddb/mods-enabled/링크를 생성하세요 .expr
    ln -s ../mods-available/expr raddb/mods-enabled
    

다시 한번 말씀드리지만 저는 BSD 전문가가 아니며 이 답변은 질문에 제공된 정보를 기반으로 올바른 방향을 알려드리기 위한 것입니다.

관련 정보