GNU Radius Reference Manual


Next: , Up: (dir)

The radius daemon

Radius Attributes

Reporting Bugs and getting information

Obtaining GNU Radius

What Next?

Appendices

Indices

Here are some other nodes which are really inferiors of the ones already listed, mentioned here so you can get to them in one step:

--- The Detailed Node Listing ---

Radius Configuration

Client configuration


Next: , Previous: Top, Up: Top

Introduction to Radius

GNU Radius is a software package that provides authentication and accounting services. The acronym radius stands for Remote Authentication Dial In User Service and (in that form) usually denotes the underlying protocol name.

Historically, radius servers were used as a means to authenticate the user coming from a dial-in connection, but GNU Radius is much more than an authentication system: it is an advanced, customizable, and extensible system for controlling access to the network.

GNU Radius has several built-in authentication and accounting methods. When these methods are not enough, it allows the administrator to implement any new method she deems convenient.

The GNU Radius package includes the server program, radiusd, which responds to authentication and accounting requests, and a set of accompanying programs designed to monitor the activity of the server and analyze the information it provides.


Up: Intro

Overview

To illustrate what GNU Radius does, let's consider an imaginary internet service provider. Our provider has two network access servers (nases for short)—i.e., two pieces of equipment which directly accept users' connections—and a core router that connects the ISP's internal network with the Internet backbone.

When a user connects to a nas, the server must verify that the user is actually registered and that the credentials she has supplied are correct. This first step is called authentication.

Upon authenticating the user, the nas must determine which services the user is permitted to use and to what extent the user may use them. This second step is called authorization.

When the first two stages have been successfully completed, the nas takes the third step and establishes the connection between the user and the main server. This connection is called a user session. For the purposes of accounting, the nas remembers the exact time of the start of the session. When the session is terminated, the duration of the session and the number of bytes transferred are recorded as well.

All three tasks can be accomplished by the use of user and accounting databases on each terminal server. However, this is not convenient, and it is error-prone in that the maintenance of separate databases for the same users is not a trivial task. What is worse, as the number of terminal servers grows, this maintenance problem becomes more difficult.

How Does radius Perform These Tasks?

radius allows an administrator to keep authentication and accounting data in a single place, no matter how many network access servers are actually present. Using radius, nases instead communicate with this central server to perform authentication and accounting, thus easing the burden on the system administrator.

Let's return to our imaginary ISP. Suppose it runs a radius daemon on its central server. Each nas runs client software to communicate with the radius server by sending radius packets.

An average user session life cycle looks as follows.

A user connects to the nearest nas and supplies his login and password. The nas forms an authentication request and sends it to the radius server.

The radius server verifies the user's credentials and finds them sufficient. It then retrieves the user's authorization information from its database, packages it into an acknowledgement packet, and then sends it back to the nas

The nas receives the acknowledgement packet and starts the user session. The information brought with the packet tells the nas to establish a connection between the core router and the user, and to assign the user a certain IP address. Having established the session, the nas informs the radius server by sending it an accounting start packet. The server acknowledges the receipt of the accounting packet.

Now suppose that after some time the user decides to break the connection. The nas notices this and terminates the user's session. The nas then sends an accounting stop packet to the radius server to mark this event. Again, the server acknowledges the receipt of the packet.

radius Attributes

Attributes are means of passing the information between the nas and the server. Basically, an attribute is an integer number that identifies some piece of information. A set of properties are associated with each attribute, specifying the way to interpret the attribute. The most important property is the data type, which declares the type of data that the attribute identifies (character string, integer number, IP address, or raw binary data).

The information to be transmitted with the request is packaged in a set of attribute-value pairs (or a/v pairs for short). Such pairs consist of attribute numbers and the associated data.

radius Packets

There exist two basic kinds of radius packets: authentication and accounting packets. Each of them is subdivided into requests and replies.

Authentication requests are sent from the nas to the radius server and contain the information necessary to check the identity of the user. The minimum set of data in such packets consists of the user login name, user password, and nas IP or identifier.

Authentication replies are sent by the radius server and contain the reply code and a set of additional attributes. According to their reply code the authentication replies are subdivided into authentication acknowledgements, authentication rejections, and authentication challenges.

An authentication acknowledgement packet is sent to the nas if the credentials supplied with the authentication request were correct. This kind of packet tells the nas to establish a normal user session. The additional attributes in such packets carry the authorization data, i.e., they determine which kind of service the user is to be provided.

An authentication rejection is sent to the nas if the authentication has failed. This packet forbids the nas to provide any service to the user. The additional attributes may carry descriptive text to be displayed as an explanation to the user for the failure of his request.

Finally, an authentication challenge packet is sent to the nas if the supplied credentials did not suffice to establish the authenticity of the user. This means that the dialog between the nas and the radius server continues. As the radius server asks for additional authentication credentials, the nas acts as a liaison, passing server requests to the user and sending user replies back to the server. Such a dialog ends when the radius server sends either an acknowledgement packet or a rejection packet.

An accounting request is sent to the server when the nas wishes to report some event in the user session: the start of the session, session termination, etc. The attributes carry the actual information about the event.

For each accounting request that has been received and successfully processed, the radius server sends back an accounting acknowledgement. This packet carries no attributes, but simply informs the nas that the information it had sent was received.

Occasionally, a radius server may fail to receive incoming requests or may fail to process them due to high server load. In order to prevent such requests from being lost, the nas retransmits the request if no response from the server is received within a predefined interval of time (a timeout interval). Usually the nas is configured in such a way that it continues retransmitting failed requests until either it receives a reply from the server or a predefined number of retries are exhausted, whichever occurs first. Furthermore, a nas may be configured to communicate with a set of backup radius servers. In this case it applies the described process to each server from the set, until one of them responds or the set is exhausted.


Next: , Previous: Intro, Up: Top

1 Naming Conventions

This chapter describes file naming conventions used throughout this document.

Programs from the GNU Radius package use the following directories to store various configuration and log files:

Configuration or database directory
A directory where all configuration files are stored.
Log directory
A directory where radiusd stores its log files.
Accounting directory
A directory where radiusd stores accounting detail files (see Detailed Request Accounting).
Data directory
A directory where shared data files are stored, such as Rewrite or Scheme source files.

The default locations of these directories are determined at compile time. Usually these are:

Directory Short name Default location


Configuration directory raddb /usr/local/etc/raddb


Log directory radlog /var/log


Accounting directory radacct /var/log/radacct


Data directory datadir /usr/local/share/radius/1.5

These locations may differ depending on your local site configuration.

Throughout this document we will refer to these directories by their short names. For example, when we say:

     ... this information is contained in file raddb/sqlserver

we actually mean /usr/local/etc/raddb/sqlserver.

To get the default directory names that your version of Radius was compiled with, run radiusd --version.

Locations of these directories may be overridden by specifying the appropriate command line options. For example, any program from the GNU Radius package accepts the command line option -d or --directory, which introduces the configuration directory path.


Next: , Previous: Naming Conventions, Up: Top

2 How Radius Operates

The main purpose of GNU Radius is to centralize authentication of users coming from various network stations, pursuant to the radius specification. Its primary usage is for dial-in users, though it can be used for any kind of network connection.


Next: , Up: Operation

2.1 Attributes

Information carried by radius requests is stored as a list of attribute-value pairs. Each pair consists of an attribute number and an attribute value. The attribute number identifies the type of information the pair carries, and the attribute value keeps the actual data.

The value part of an attribute can contain data of one of the following types:

Integer
A 32-bit unsigned integer value.
IP-number
An IPv4 IP-number.
String
A character string up to 253 characters long.

For convenience, the attributes and the values of some frequently used integer attributes are given symbolic names. These names are assigned to attributes and values in the dictionary file (see dictionary file).

Attribute numbers range from 1 to 255. Attributes with numbers greater than 255 are used internally by the server and cannot be sent to the nas.

The vendor-specific attribute number 26 is special, allowing vendors of the nas hardware or software to support their own extended attributes. vendor-specific attribute.

Each attribute has a set of properties associated with it. The properties are:

Usage flags
These flags determine the usage of the attribute in the configuration files huntgroups, hints, and users.
Propagation
When a radius server functions in proxy mode, it uses the propagation flag to determine which attributes from the reply packet should be passed back to the requesting nas (see Proxy Service).
additivity
Some configuration rules may cause the addition of new a/v pairs to the incoming request. Before the addition of a new pair, radiusd scans the request to see if it already contains a pair with the same attribute. If it does, the value of the additivity determines the following additional actions:
None
The old pair is retained in the request; the new pair is not added to it.
Replace
The old pair is retained in the request, but its value is replaced with that of the new pair.
Append
The new pair is appended to the end of the pair list.

Attributes are declared in the raddb/dictionary file. For a detailed description, see ATTRIBUTE. For information about particular attributes, see Attribute List.


Next: , Previous: Attributes, Up: Operation

2.2 radius Requests

The term request refers to both the authentication/accounting request packet from a nas to a radius server and the response packet that the server sends back to the nas.

Each request contains the following fields:

Code
The code field identifies the type of the request.
Identifier
The number in the range 0–255 used to match the request with the reply.
Length
The length of the request packet.
Authenticator
The 16-byte hash value used to authenticate the packet.
Attributes
The list of attribute-value pairs carrying actual information about the request.


Next: , Up: Requests

2.2.1 Authentication Requests

A nas sends authentication requests (packets with code field set to Access-Request) to a radius server when a user is trying to connect to that nas. Such requests convey information used to determine whether a user is allowed access to the nas, and whether any special services are requested for that user.

An Access-Request must contain a User-Name attribute User-Name. This packet should contain a NAS-IP-Address attribute, a NAS-Identifier attribute, or both. It also must contain either a User-Password attribute or a CHAP-Password attribute. These attributes are passed after being encoded using a method based on the RSA Message Digest Algorithm MD5.

The Access-Request should contain a NAS-Port or NAS-Port-Type attribute or both, unless the type of access being requested does not involve a port or the nas does not distinguish among its ports.

Upon receiving an Access-Request packet for a particular user and authenticating that user, the radius server replies to the nas that has sent the packet with any one of the following packets:

GNU Radius replies with an Access-Accept packet when it has successfully authenticated the user. Such a reply packet provides the configuration information necessary to begin delivery of service to the user.

GNU Radius replies with an Access-Reject packet when it is unable to authenticate the user. Such a packet may contain a descriptive text encapsulated in one or more Reply-Message attributes. The nas may display this text along with its response to the user.

GNU Radius replies with an Access-Challenge packet when it needs to obtain more information from the user in order to determine the user's authenticity or to determine the kind of service to be provided to the user.

An Access-Challenge packet may include one or more Reply-Message attributes, and it may or may not include a single State attribute. No other attributes are permitted in an Access-Challenge packet.

Upon receipt of an Access-Challenge, the Identifier field is matched with a pending Access-Request. Additionally, the Response Authenticator field must contain the correct response for the pending Access-Request. In the event of an invalid packet, GNU Radius discards the offending packet and issues the appropriate log message.

If the nas does not support challenge/response, it treats an Access-Challenge as though it had received an Access-Reject instead. Otherwise, upon receipt of a valid Access-Challenge the nas prompts the user for a response, possibly displaying the text message provided in the Reply-Message attributes of the request. It then sends its original Access-Request with a new request id and request authenticator, along with the User-Password attribute replaced by the encrypted user's response, and including the State attribute from the Access-Challenge, if any.


Previous: Authentication Requests, Up: Requests

2.2.2 Accounting Requests

Accounting-Request packets are sent from a nas to a radius server to allow for accounting of a service provided to a user.

Upon receipt of an Accounting-Request packet, the server attempts to record it (see Accounting), and if it succeeds in doing so, it replies with an Accounting-Response packet. Otherwise, it sends no reply, which then causes the nas to retransmit its request within a preconfigured interval of time. Such retransmits will continue until either the server responds with an Accounting-Response packet or a preconfigured number of retransmits is reached, whichever occurs first.

Any attribute valid in an Access-Request or Access-Accept packet is also valid in an Accounting-Request packet, except the following attributes, which are never present in any Accounting-Request packet:

Either a NAS-IP-Address or a NAS-Identifier must be present in an Accounting-Request packet. It should contain either a NAS-Port or a NAS-Port-Type attribute (or both), unless the service does not involve a port or the nas does not distinguish among its ports.

If the Accounting-Request packet includes a Framed-IP-Address, that attribute must contain the actual IP of the user.

There are five types of accounting packets, differentiated by the value of the Acct-Status-Type attribute. These are:

Session Start Packet
The session start packet is sent after the user has successfully passed the authentication and has started to receive the requested service. It must contain at least following attributes:
Session Stop Packet
The session stop packet is sent after the user has disconnected. It conveys the information about the duration of the session, number of octets transferred, etc. It must contain at least the following attributes:

The last three of them are used to find the corresponding session start packet.

Keepalive Packet
The keepalive packet is sent by the nas when it obtains some new information about the user's session, e.g. it has determined its IP or has changed the connection speed. The packet must contain at least the following attributes:
Accounting-Off Packet
By sending this packet, the nas requests that radiusd mark all sessions registered from this particular nas as finished. Receiving this packet usually means that the nas is to be shut down, or is about to change its configuration in a way that requires all currently opened sessions to be closed. The packet must contain at least the following attributes:
Accounting-On Packet
By sending this packet, the nas informs radiusd that it is ready to accept the incoming connections. Usually this packet is sent after startup, or after a major reconfiguration of the nas. It must contain at least the following attributes:


Next: , Previous: Requests, Up: Operation

2.3 Matching Rule

A record in the GNU Radius database describing a particular rule for matching an incoming request is called a matching rule. Each such rule defines an action to be taken when the match occurs.

The matching rule consists of three distinct parts:

Label
This is used to identify the rule. The special usernames DEFAULT and BEGIN are reserved. These will be described in detail below.
Left-Hand Side (lhs)
The list of attribute-value pairs used for matching the profile against an incoming request.
Right-Hand Side (rhs)
The list of attribute-value pairs that define the action to be taken if the request matches lhs.

The following GNU Radius configuration files keep data in a matching rule format: hints, huntgroups, and users. Although they keep data in a similar format, the rules that are used to match incoming requests against the contents of these files differ from file to file. The following section describes these rules in detail.


Previous: Matching Rule, Up: Operation

2.4 Processing Requests

Upon receiving a request, radiusd applies to it a number of checks to determine whether the request comes from an authorized source. If these checks succeed, the request is processed and answered. Otherwise, the request is dropped and corresponding error message is issued (see Logging).

The following checks are performed:

Check if the username is supplied.
If the packet lacks the User-Name attribute, it is not processed.
Check if the nas is allowed to speak.
The source IP of the machine that sent the packet is looked up in the clients file (see clients file). If no match is found, the request is rejected.
Compute the encryption key.
Using the data from the packet and the shared key value from the clients file, Radius computes the MD5 encryption key that will be used to decrypt the value of the User-Password attribute.
Process user-name hints.
User-name hints are special rules that modify the request depending on the user's name and her credentials. These rules allow an administrator to divide users into distinct groups, each group having its own authentication and/or accounting methods. The user-name hints are stored in raddb/hints (see hints file).
Process huntgroup rules.
Huntgroup rules allow an administrator to segregate incoming requests depending on the nas and/or port number they came from. These rules are stored in raddb/huntgroups (see huntgroups file).
Determine whether the request must be proxied to another radius server.
The requests pertaining to another realm are immediately forwarded to the remote radius server for further processing. See Proxying, for the description of this process.
Process individual user profiles
This step applies only to authentication requests.


Next: , Up: Request processing

2.4.1 Checking for Duplicate Requests

As described above (see Operation), a nas may decide to retransmit the request under certain circumstances. This behavior ensures that no requests are lost. For example, consider the following scenario:

  1. The nas sends a request to the server.
  2. The server processes it and sends back the reply.
  3. The reply is lost due to a network outage, or the load average of the nas is too high and it drops the response.
  4. The nas retransmits the request.

Thus the radius server will receive and process the same request twice. This probably won't do any harm if the request in question is an authentication one, but for accounting requests it will lead to duplicate accounting. To avoid such an undesirable effect, radiusd keeps a queue of received requests. When an incoming request arrives, radiusd first scans the request queue to see if the request is a duplicate. If so, it drops the request; otherwise, it inserts the request into the queue for processing. After the request is completed, it will still reside in the queue for a preconfigured interval of time (see auth, parameter request-cleanup-delay).

By default, radiusd considers two requests to be equal if the following conditions are met:

  1. Both requests come from the same nas.
  2. They are of the same type.
  3. The request identifier is the same for both requests.
  4. The request authenticator is the same for both requests.

Additionally, radiusd may be configured to take into account the contents of both requests. This may be necessary, since some nases modify the request authenticator or request identifier before retransmitting the request, so the method described above fails to recognize the request as a duplicate. This extended comparison is described in detail in Extended Comparison.


Next: , Previous: Checking Duplicates, Up: Request processing

2.4.2 Proxying

Proxying is a mode of operation where a radius server forwards incoming requests from a nas to another radius server, waits for the latter to reply, and then forwards the reply back to the requesting nas. A common use for such operation mode is to provide roaming between several internet service providers (ISPs). Roaming permits ISPs to share their resources, allowing each party's users to connect to other party's equipment. Thus, users traveling outside the area of one ISP's coverage are still able to access their services through another ISP.


Next: , Up: Proxying
2.4.2.1 Proxy Service

Suppose the ISP ‘Local’ has a roaming arrangement with the ISP ‘Remote’. When the user of ‘Remote’ dials in to the nas of ‘Local’, the nas sends the authentication request to the ‘Localradius server. The server then determines that this is a roaming user, stores a copy of the request in its internal queue, and forwards the request to the ‘Remoteradius server for processing. Thus, the ‘Localradius server acts as a client for the ‘Remoteradius server.

When the ‘Remoteradius server responds, the ‘Localradius server receives the response, and passes it back to the nas. The copy of the request from the server's queue determines which nas originated the request. Before passing the request back to the nas, the server removes information specific to the ‘Remote’ site, such as Framed-IP-Address, Framed-Netmask, etc. Only the attributes marked with a ‘propagation’ flag (see Attributes) are passed back to the nas. After removing site-specific attributes, the ‘Localradius server passes the request through its user profiles (see User Profiles) to insert any local, site-specific information that might be needed. Finally, it passes the reply back to the nas.

Proxied accounting requests are processed in a similar manner, except that no attribute filtering takes place, as accounting responses do not carry any a/v pairs.

This example illustrates only the simplest proxy chain, consisting of two servers; real-life proxy chains may consist of several servers. For example, our ‘Remoteradius server might also act as a proxy, forwarding the request to yet another radius server, and so on.

Note that when the accounting request passes through a chain of forwarding servers, the accounting records are stored on all servers in the chain.


Previous: Proxy Service, Up: Proxying
2.4.2.2 Realms

GNU Radius determines which server a request must be forwarded to by the request's authentication realm. There are three kinds of realms:

  1. A named realm is the part of a user name following the at sign (‘@’). For example, if the user name is ‘jsmith@this.net’, then ‘this.net’ is the realm. The named realms can be cascaded; e.g., a request with user name ‘jsmith@this.net@remote.net’ will first be forwarded to the radius server of the realm ‘remote.net’, which in turn will forward it to ‘this.net’.
  2. A default realm defines the server to which the requests for realms not mentioned explicitly in the configuration are forwarded.
  3. An empty realm defines the server to which the requests without explicitly named realms are forwarded. If the configuration does not define an empty realm, such requests are processed by the server itself.

GNU Radius keeps the information about the realms it serves in the raddb/realms configuration file (see realms file).


Next: , Previous: Proxying, Up: Request processing

2.4.3 Hints

User-name hints are special rules that modify the incoming request depending on the user name and its credentials. Hints are stored as a list of matching rules (see Matching Rule). Upon receiving a request, radiusd scans the hint entries sequentially, comparing each rule's label with the value of the User-Name attribute from the request. If they coincide, then radiusd appends the contents of the rule's rhs to the request's pair list.

The two user names must match exactly in order for a hint to take effect, unless the hint's checklist contains either the Prefix or the Suffix attribute. The special name ‘DEFAULT’ or ‘DEFAULT%d’ (where %d denotes any decimal number), used as a hint's label, matches any user name.

Two special attributes, Prefix and Suffix, may be used in lhs to restrict the match to a specified part of a user name. Both are string attributes. The Prefix instructs radiusd to accept the hint only if the user name begins with the given prefix. Similarly, Suffix instructs radiusd to accept the hint only if the user name ends with the given suffix. A hint may contain both Prefix and Suffix attributes.

In addition to these two attributes, a hint's lhs may contain User-ID and Group attributes.

The following attributes, when used in a hint's rhs have special meaning. They are not appended to the request pair list. Instead, they are removed after completing their function:

Fall-Through
If this attribute is present and is set to Yes, radiusd continues scanning the hints after processing the current entry. This allows radiusd to apply several hints to a single packet.
Rewrite-Function
If this attribute is present, the specified rewrite function is invoked.
Replace-User-Name
The value of this attribute is expanded (see Macro Substitution) and replaces the value of the User-Name attribute from the request.

Hint rules are defined in the raddb/hints file (see hints file).


Next: , Previous: Hints, Up: Request processing

2.4.4 Huntgroups

Huntgroups are special rules that allow an administrator to provide alternate processing of certain incoming requests depending on the nas IP and port number they come from. These rules are stored as a list of matching rules (see Matching Rule).

Upon receiving a request, radiusd scans this list sequentially until it finds an entry such that the conditions set forth in its lhs are matched by the request. If such an entry is found, radiusd verifies that the request meets the conditions described by rhs. If it does not, the request is rejected. In short, a huntgroup requires that any request matching its lhs must match also its rhs.

The label part of the rule is not used in comparisons; instead it is used to label huntgroups. All entries with the same label form a single huntgroup. The special attribute Huntgroup-Name can be used to request a match against a particular huntgroup (see Huntgroup-Name).

Huntgroup rules are defined in the raddb/huntgroups file (see huntgroups file).


Previous: Huntgroups, Up: Request processing

2.4.5 User Profiles

User profiles are per-user matching rules (see Matching Rule). All incoming authentication requests are compared with the user profiles after they have passed both hints and huntgroups. radiusd selects the user profiles whose label matches the value of the User-Name attribute from the incoming request.

The selected profiles form the list of authentication rules for the request. In order for a profile to be selected, its label must either coincide literally with the User-Name value, or be one of the special labels, DEFAULT or BEGIN.

Rules in an authentication list are ordered as follows: first go all the profiles with the BEGIN label, followed by the profiles whose labels match the User-Name literally, followed finally by the rules labeled with the DEFAULT. 1

Within each of the three sublists, the rules preserve the order in which they appear in the raddb/users file. Once the list is constructed, it is scanned sequentially until the rule is found whose lhs matches the incoming request. If no such rule is found, the authentication fails. Otherwise, the contents of its rhs are appended to the reply list being constructed. If the rhs of the matched rule contains the attribute Fall-Through with the value Yes, the matching continues. When the list is exhausted, the authentication result is sent back to the nas along with the a/v pairs collected in the reply list.

User profiles are defined in the raddb/users file (see users file).


Next: , Previous: Operation, Up: Top

3 How to Start the Daemon.

When started radiusd uses the configuration values from the following sources (in order of increasing precedence):

Whenever a command line options has its equivalent in config file the use of this equivalent should be preferred (see config file).

The following command line options are accepted:

-A
--log-auth-detail
Enable detailed authentication logging. When this option is specified each authentication request is logged to the file radacct/NASNAME/detail.auth, where NASNAME is replaced by the short name of the nas from raddb/naslist Naming Conventions.

Config file equivalent: auth { detail yes; };.

-a DIR
--acct-directory DIR
Specify accounting directory.

Config file equivalent: option { acct-dir DIR; };.

-b
--dbm
Enable DBM support.

Config file equivalent: usedbm yes;.

-d DIR
--config-directory DIR
--directory D
Specify alternate configuration directory. Default is /usr/local/etc/raddb.
-f
--foreground
Stay in foreground. We recommend to use it for debugging purposes only.
-i IP
--ip-address
Specifies the ip address radiusd will listen on. If this option is not specified, the program will listen on all IP addresses, assigned to the machine it runs on.

Config file equivalent: option { source-ip IP; };.

Note that listen statement in raddb/config provides a better control over ip addresses to listen on (see auth, and see acct).

-L
--license
Display GNU General Public License and exit.
-l DIR
--logging-directory DIR
Specify alternate logging directory.

Config file equivalent: option { log-dir DIR; };.

-mb
--mode b
“Builddbm” mode. Builds a DBM version of a plaintext users database. Builddbm.
-mc
--mode c
Check configuration files and exit. All errors are reported via usual log channels.
-mt
--mode t
Test mode. In this mode radiusd starts an interactive interpreter which allows to test various aspects of its configuration.
-N
--auth-only
Process only authentication requests.
-n
--do-not-resolve
Do not resolve IP addresses for diagnostic output. This can reduce the amount of network traffic and speed up the server.

Config file equivalent: option { resolve no };.

-p PORTNO
--port PORTNO
Listen the udp port PORTNO. The accounting port is computed as PORTNO + 1.
-P DIR
--pid-file-dir DIR
Specifies the alternate path for the pidfile.
-S
--log-stripped-names
Log usernames stripped off any prefixes/suffixes.

Config file equivalent: auth { strip-names yes };.

-s
--single-process
Run in single process mode. This is for debugging purposes only. We strongly recommend against using this option. Use it only when absolutely necessary.
-v
--version
Display program version and compilation options.
-x DEBUG_LEVEL
--debug DEBUG_LEVEL
Set debugging level. DEBUG_LEVEL is a comma-separated list of assignments in the forms
          MODULE
          MODULE = LEVEL

where MODULE is the module name or any non-ambiguous assignment thereof, LEVEL is the debugging level in the range 0-100. Debugging

Config file equivalent:

          logging {
                  category debug {
                          level DEBUG_LEVEL;
                  };
          };

-y
--log-auth
Log authentications. With this option enabled, Radius will log any authentication attempt into its log file Logging.

Config file equivalent: logging { category auth { detail yes; }; }; .

-z
--log-auth-pass
Log passwords along with authentication information. Do not use this option. It is very insecure, since all users' passwords will be echoed in the logfile. This option is provided only for debugging purposes.

Config file equivalent:

          logging {
                  category auth {
                          print-pass yes;
                  };
          };

See config file.


Next: , Previous: Invocation, Up: Top

4 Radius Configuration Files

At startup, GNU Radius obtains the information vital for its functioning from a number of configuration files. These are normally found in /usr/local/etc/raddb directory, which is defined at configuration time, although their location can be specified at runtime. In the discussion below we will refer to this directory by raddb. See Naming Conventions.

Each configuration file is responsible for a certain part of the GNU Radius functionality. The following table lists all configuration files along with a brief description of their purposes.

config
Determines the runtime defaults for radiusd, such as the IP address and ports to listen on, the sizes of the request queues, configuration of the SNMP subsystem, fine-tuning of the extension languages, etc.
clients
Lists the shared secret belonging to each nas. It is crucial for the normal request processing that each nas have an entry in this file. The requests from nases that are not listed in clients will be ignored, as well as those from the nases that have a wrong value for the shared secret configured in this file.
naslist
Defines the types for the known nases. Its information is used mainly when performing multiple login checking (see Multiple Login Checking).
nastypes
Declares the known nas types. The symbolic type names, declared in this file can be used in naslist.
dictionary
Defines the symbolic names for radius attributes and attribute values. Only the names declared in this file may be used in the files users, hints and huntgroups.
huntgroups
Contains special rules that process the incoming requests basing on the nas IP and port number they come from. These can also be used as a kind of access control list.
hints
Defines the matching rules that modify the incoming request depending on the user name and its credentials.
users
Contains the individual users' profiles.
realms
Defines the Radius realms and the servers that are responsible for them.
access.deny
A list of usernames that should not be allowed access via Radius.
sqlserver
Contains the configuration for the sql system. This includes the type of sql interface used, the IP and port number of the server and the definition of the sql requests used by radiusd.
rewrite
Contains the source code of functions in Rewrite extension language.
menus
A subdirectory containing the authentication menus.

The rest of this chapter describes each of these files in detail.


Next: , Up: Configuration Files

4.1 Run-Time Configuration Options — raddb/config

At startup radiusd obtains its configuration values from three places. The basic configuration is kept in the executable module itself. These values are overridden by those obtained from raddb/config file. Finally, the options obtained from the command line override the first two sets of options.

When re-reading of the configuration is initiated either by SIGHUP signal or by SNMP channel any changes in the config file take precedence over command line arguments, since raddb/config is the only way to change configuration of the running program.

This chapter discusses the raddb/config file in detail.

The raddb/config consists of statements and comments. Statements end with a semicolon. Many statements contain a block of sub-statements which also terminate with a semicolon.

Comments can be written in shell, C, or C++ constructs, i.e. any of the following represent a valid comment:

     # A shell comment
     /* A C-style
      * multi-line comment
      */
     // A C++-style comment

These are the basic statements:


Next: , Up: config file

4.1.1 option block

Syntax:

     option {
             source-ip number ;
             max-requests number ;
             radiusd-user string ;
             exec-program-user string ;
             username-chars string ;
             log-dir string ;
             acct-dir string ;
             resolve bool ;
             max-processes number ;
             process-idle-timeout number ;
             master-read-timeout number ;
             master-write-timeout number ;
     } ;

Usage

The option block defines the global options to be used by radiusd.

Boolean statements

resolve
Determines whether radius should resolve the IP addresses for diagnostic output. Specifying resolve no speeds up the server and reduces the network traffic.

Numeric statements

source-ip
Sets the source ip address. When this statement is not present, the ip address of the first available network interface on the machine will be used as source.
max-requests
Sets the maximum number of the requests in queue.
max-processes
Sets the maximum number of child processes. The default value is 16. If you plan to raise this value, make sure you have enough file descriptors available, as each child occupies four descriptors for its input/output channels.
process-idle-timeout
Sets the maximum idle time for child processes. A child terminates if it does not receive any requests from the main process within this number of seconds. By default, this parameter is 3600 seconds (one hour).
master-read-timeout
master-write-timeout
These two values set the timeout values for the interprocess input/output operations in the main server process. More specifically, master-read-timeout sets the maximum number of seconds the main process will wait for the answer from the subprocess, and master-write-timeout sets the maximum number of seconds the main process will wait for the subprocess's comunication channel to become ready for input. By default, no timeouts are imposed.

String statements

radiusd-user
Instructs radiusd to drop root privileges and to switch to the real user and group IDs of the given user after becoming daemon. Notice the following implications of this statement:
  1. All configuration files must be readable for this user.
  2. Authentication type System (see System Auth) requires root privileges, so it cannot be used with radiusd-user. Any raddb/users profiles using this authentication type will be discarded.
  3. Authentication type PAM (see PAM Auth) may require root provileges. It is reported to always require root privileges on some systems (notably on Solaris).
  4. exec-program-user statement (see below) is ignored when used with radiusd-user.

exec-program-user
Sets the privileges for the programs executed as a result of Exec-Program and Exec-Program-Wait. The real user and group ids will be retrieved from the /etc/passwd entry for the given user.
username-chars
Determines characters that are valid within a username. The alphanumeric characters are always allowed in a username, it is not necessary to specify them in this statement. By default the following characters are allowed in a username: ‘.-_!@#$%^&\/"’. The username-chars statement overrides this default, thus setting:
          username-chars ":"

will restrict the set of allowed characters to the alphanumeric characters and colon. If you wish to expand the default character set, you will have to explicitly specify it in the username-chars argument, as shown in the example below:

          username-chars ".-_!@#$%^&\\/\":"

(Notice the use of escape character ‘\’).

log-dir
Specifies the logging directory.
acct-dir
Specifies the accounting directory.


Next: , Previous: option, Up: config file

4.1.2 logging block

Syntax:

     logging {
             prefix-hook string ;
             suffix-hook string ;
             category category_spec {
                     channel channel_name ;
                     print-auth bool ;
                     print-pass bool ;
                     print-failed-pass bool ;
                     level debug_level ;
             } ;
             channel channel_name {
                     file string ;
                     syslog facility . priority ;
                     print-pid bool ;
                     print-category bool ;
                     print-cons bool ;
                     print-level bool ;
                     print-priority bool ;
                     print-tid bool;
                     print-milliseconds bool;
                     prefix-hook string ;
                     suffix-hook string ;
             };
     } ;
     

Usage

The logging statement describes the course followed by radiusd's logging information.

The parts of this statement are discussed below.


Next: , Up: logging
4.1.2.1 Logging hooks

Most diagnostic messages displayed by radiusd describe some events that occured while processig a certain incoming request. By default they contain only a short summary of the event. Logging hooks are means of controlling actual amount of information displayed in such messages. They allow you to add to the message being displayed any relevant information from the incoming request that caused the message to appear.

A hook is a special Rewrite function that takes three arguments and returns a string. There are two kinds of logging hooks: prefix and suffix. Return value from the prefix hook function will be displayed before the actual log message, that of the suffix hook function will be displayed after the message.

Furthermore, there may be global and channel-specific hooks. Global hooks apply to all categories, unless overridden by category-specific hooks. Global prefix hook is enabled by prefix-hook statement appearing in the logging block. Global suffix hook is enabled by suffix-hook statement. Both statements take as their argument the name of corresponding Rewrite function.

For detailed information about writing logging hooks, See Logging Hook Functions.


Next: , Previous: hooks, Up: logging
4.1.2.2 category statement

Each line of logging information generated by radiusd has an associated category. The logging statement allows each category of output to be controlled independently of the others. The logging category is defined by category name and a severity. category name determines what part of radiusd daemon is allowed to send its logging information to this channel. It can be any of main, auth, acct, proxy, snmp. priority determines the minimum priority of the messages displayed by this channel. The priorities in ascending order are: debug, info, notice, warn, err, crit, alert, emerg.

The full category specification, denoted by the category_spec in the above section, can take any of the following three forms:

category_name
Print the messages of given category.
priority
Print messages of all categories, abridged by given priority. If the priority is prefixed with ‘=’, only messages with given priority will be displayed. If it is prefixed with ‘!’, the messages with priority other than the specified will be displayed. Otherwise, the messages with priorities equal to or greater than the specified will be displayed.
category_name . priority
Print the messages of given category, abridged by given priority. The priority may be prefixed with either ‘=’ or ‘!’ as described above. The dot (‘.’) separates the priority from the category name, it may be surrounded by any amount of whitespace.

Additional category options valid for auth category are:

print-auth
Log individual authentications.
print-pass
Include passwords for successful authentications. It is very insecure, since all users' passwords will be echoed in the logfile. This option is provided only for debugging purposes.
print-failed-pass
Include passwords for failed authentications.


Next: , Previous: category, Up: logging
4.1.2.3 channel statement

Channels represent methods for recording logging information. Each channel has a unique name, and any categories which specify that name in a channel statement will use that channel.

radiusd can write logging information to files or send it to syslog. The file statement sends the channel's output to the named file (see Naming Conventions). The syslog statement sends the channel's output to syslog with the specified facility and severity.

Channel options modify the data flowing through the channel:

print-pid
Add the process id of the process generating the logging information.
print-cons
Also send the logging information to the system console.
print-category
Add the category name to the logging information.
print-priority
print-level
Add the priority name to the logging information.
print-milliseconds
Print timestamp with milliseconds.
prefix-hook
Declares the name of Rewrite function used as logging prefix hook for that channel (see hooks). This overrides any global prefix hook.
suffix-hook
Declares the name of Rewrite function used as logging suffix hook for that channel (see hooks). This overrides any global suffix hook.


Previous: channel, Up: logging
4.1.2.4 Example of the logging statement

     logging {
             channel default {
                     file "radius.log";
                     print-category yes;
                     print-priority yes;
             };
             channel info {
                     file "radius.info";
                     print-pid yes;
                     print-cons yes;
                     print-priority yes;
             };
             channel notice {
                     syslog auth.notice;
             };
     
             category auth {
                     print-auth yes;
                     print-failed-pass yes;
             };
             category notice {
                     channel notice;
             };
             category info {
                     channel info;
             };
             category debug {
                     channel info;
                     level radiusd=1,files;
             };
     
             category *.!debug {
                     channel default;
             };
     };


Next: , Previous: logging, Up: config file

4.1.3 auth statement

Syntax:

     auth {
             listen ( addr-list | no );
             forward addr-list;
             port number ;
             max-requests number ;
             time-to-live number ;
             request-cleanup-delay number ;
             detail bool ;
             strip-names bool ;
             checkrad-assume-logged bool ;
             password-expire-warning number ;
             compare-atribute-flag character ;
             trace-rules bool ;
             reject-malformed-names bool ;
     } ;

Usage:

The auth statement configures the parameters of the authentication service.

listen statement

This statement determines on which addresses radiusd will listen for incoming authentication requests. Its argument is a comma-separated list of items in the form ip:port-number. ip can be either an IP address in familiar “dotted-quad” notation or a hostname. :port-number part may be omitted, in which case the default authentication port is assumed.

If the listen statement is omitted, radiusd will accept incoming requests from any interface on the machine.

The special value no disables listening for authentication requests.

The following example configures radius to listen for the incoming requests on the default authentication port on the address 10.10.10.1 and on port 1645 on address 10.10.11.2.

     listen 10.10.10.1, 10.10.11.2:1645;

forward statement

This statement enables forwarding of the requests to the given set of servers. Forwarding is an experimental feature of GNU Radius, it differs from proxying in that the requests are sent to the remote server (or servers) and processed locally. The remote server is not expected to reply.

This mode is intended primarily for debugging purposes. It could also be useful in some very complex and unusual configurations.

Numeric statements

port
Sets the number of which udp port to listen on for the authentication requests.
max-requests
Sets the maximum number of authentication requests in the queue. Any surplus requests will be discarded.
time-to-live
Sets the request time-to-live in seconds. The time-to-live is the time to wait for the completion of the request. If the request job isn't completed within this interval of time it is cleared, the corresponding child process killed and the request removed from the queue.
request-cleanup-delay
Sets the request cleanup delay in seconds, i.e. determines how long will the completed authentication request reside in the queue.
password-expire-warning
Sets the time interval for password expiration warning. If user's password expires within given number of seconds, radiusd will send a warning along with authentication-acknowledge response. Default is 0.

Boolean statements

detail
When set to true, radiusd will produce the detailed log of each received packet in the file radacct/nasname/detail.auth. The format of such log files is identical to the format of detailed accounting files (see Detailed Request Accounting).
strip-names
Determines whether radiusd should strip any prefixes/suffixes off the username before logging.
checkrad-assume-logged
See mlc, for the description of this setting. It is accepted in auth for compatibility with previous versions of GNU Radius.
trace-rules
Enables tracing of the configuration rules that were matched during processing of each received authentication request. See Rule Tracing, for detailed information about this mode.
reject-malformed-names
Enables sending access-reject replies for the access-accept requests that contain an invalid value in User-Name attribute. By default such requests are discarded without answering. See the description of username-chars (see username-chars).

Character statement

compare-attribute-flag
The argument to this statement is a character from ‘1’ through ‘9’. This statement modifies the request comparison method for authentication requests. See Extended Comparison, for a detailed description of its usage.


Next: , Previous: auth, Up: config file

4.1.4 acct statement

Syntax:

     acct {
             listen ( addr-list | no );
             forward addr-list ;
             port number ;
             detail bool;
             system bool;
             max-requests number ;
             time-to-live number ;
             request-cleanup-delay number ;
             compare-atribute-flag character ;
             trace-rules bool ;
     } ;

Usage:

The acct statement configures the parameters of the accounting service.

listen statement

This statement determines on which addresses radiusd will listen for incoming accounting requests. Its argument is a comma-separated list of items in the form ip:port-number. ip can be either an IP address in familiar “dotted-quad” notation or a hostname. :port-number part may be omitted, in which case the default accounting port is assumed.

If the listen statement is omitted, radiusd will accept incoming requests from any interface on the machine.

The special value no disables listening for accounting requests.

The following example configures radius to listen for the incoming requests on the default accounting port on the address 10.10.10.1 and on port 1646 on address 10.10.11.2.

     listen 10.10.10.1, 10.10.11.2:1646;

forward statement

This statement enables forwarding of the requests to the given set of servers. Forwarding is an experimental feature of GNU Radius, it differs from proxying in that the requests are sent to the remote server (or servers) and processed locally. The remote server is not expected to reply.

This mode is intended primarily for debugging purposes. It could also be useful in some very complex and unusual configurations.

Numeric statements

port
Sets the number of which port to listen for the authentication requests.
max-requests
Sets the maximum number of accounting requests in the queue. Any surplus requests will be discarded.
time-to-live
Sets the request time-to-live in seconds. The time-to-live is the time to wait for the completion of the request. If the request job isn't completed within this interval of time it is cleared, the corresponding child process killed and the request removed from the queue.
request-cleanup-delay
Sets the request cleanup delay in seconds, i.e. determines how long will the completed account request reside in the queue.

Boolean statements

detail
When set to no, disables detailed accounting (see Detailed Request Accounting).
system
When set to no, disables system accounting (see System Accounting). Notice, that this will disable simultaneous use checking as well, unless you supply an alternative mlc method (currently sql, See Multiple Login Checking, for the detailed discussion of this).
trace-rules
Enables tracing of the configuration rules that were matched during processing of each received accounting request. See Rule Tracing, for detailed information about this mode.

Character statement

compare-attribute-flag
The argument to this statement is a character from ‘1’ through ‘9’. This statement modifies the request comparison method for authentication requests. See Extended Comparison, for a detailed description of its usage.


Next: , Previous: acct, Up: config file

4.1.5 usedbm statement

Syntax:

     usedbm ( yes | no ) ;

Usage

The usedbm statement determines whether the DBM support should be enabled.

no
Do not use DBM support at all.
yes
Use only the DBM database and ignore raddb/users.


Next: , Previous: usedbm, Up: config file

4.1.6 snmp statement

Syntax:

     snmp {
             port portno ;
             listen ( addr-list | no );
             max-requests number ;
             time-to-live number ;
             request-cleanup-delay number ;
             ident string ;
             community name ( rw | ro ) ;
             network name network [ network ... ] ;
             acl {
                     allow network_name community_name ;
                     deny network_name ;
             } ;
             storage {
                     file filename ;
                     perms number ;
                     max-nas-count number ;
                     max-port-count number ;
             } ;
     };

Usage

The snmp statement configures the SNMP service.

listen statement

The listen statement determines on which addresses radiusd will listen for incoming SNMP requests. The argument is a comma-separated list of items in the form ip:port-number. The ip can be either an IP address in familiar “dotted-quad” notation or a hostname. The :port-number part may be omitted, in which case the default SNMP port (161) is used.

If the listen statement is omitted, radiusd will accept incoming requests from any interface on the machine.

The special value no disables listening for SNMP requests.

The following example configures radius to listen for the incoming SNMP requests on the default SNMP port on the address 10.10.10.1 and on port 4500 on address 10.10.11.2.

     listen 10.10.10.1, 10.10.11.2:4500;

Numeric statements

port
Sets the number of which port to listen for the SNMP requests.
max-requests
Sets the maximum number of SNMP requests in the queue. Any surplus requests will be discarded.
time-to-live
Sets the request time-to-live in seconds. The time-to-live is the time to wait for the completion of the request. If the request job isn't completed within this interval of time it is cleared, the corresponding child process killed and the request removed from the queue.
request-cleanup-delay
Sets the request cleanup delay in seconds, i.e. determines how long will the completed SNMP request reside in the queue.

String statements

ident
Sets the SNMP server identification string.

Community and network definitions

community name ( rw | ro )
Defines the community name as read-write (rw) or read-only (ro).
network name network [ network ... ]
Groups several networks or hosts under one logical network name.

Access-Control List definitions

allow network_name community_name
allow hosts from the group network_name access to community community_name.
deny NETWORK_NAME
Deny access to SNMP service from any host in the group network_name.

Storage control

GNU Radius stores the SNMP monitoring data in an area of shared memory mapped to an external file. This allows all subprocesses to share this information and to accumulate the statistics across invocations of the daemon.

The storage statement controls the usage of the storage for the SNMP data.

file
Sets the file name for the SNMP storage file. Unless the filename begins with a ‘/’ it is taken as relative to the current logging directory.
perms
Sets the access permissions for the storage file. Notice, that this statement does not interpret its argument as octal by default, so be sure to prefix it with ‘0’ to use an octal value.
max-nas-count
Sets maximum number of NASes the storage file is able to handle. Default is 512. Raise this number if you see the following message in your log file:

          reached SNMP storage limit for the number of
          monitored NASes: increase max-nas-count

max-port-count
Sets maximum number of ports the storage file is able to handle. Default is 1024. Raise this number if you see the following message in your log file:

          reached SNMP storage limit for the number of
          monitored ports: increase max-port-count


Next: , Previous: snmp, Up: config file

4.1.7 rewrite statement.

(This message will disappear, once this node revised.)

Syntax:

     rewrite {
             stack-size number ;
             load-path string ;
             load string ;
     };

Numeric statements

stack-size
Configures runtime stack size for Rewrite. The number is the size of stack in words. The default value is 4096.

String statements

load-path
Add specified pathname to the list of directories searched for rewrite files.
load
Loads the specified source file on startup. Unless string is an absolute pathname, it will be searched in directories set up by load-path statement.

Loading

The default load path is RADDB:DATADIR/rewrite.


Next: , Previous: rewrite, Up: config file

4.1.8 guile statement

(This message will disappear, once this node revised.)

The guile statement allows to configure server interface with Guile.

Syntax

     guile {
             debug bool ;
             load-path string ;
             load string ;
             load-module string [ string ... ] ;
             eval expression [ expression ... ] ;
             gc-interval number ;
             outfile string ;
     };

Usage

Boolean statements

debug
When set to yes, enables debugging evaluator and backtraces on Guile scripts.

Numeric statements

gc-interval
Configures the forced garbage collections. By default the invocation of the garbage collector is run by the internal Guile mechanism. However, you may force Radius to trigger the garbage collection at fixed time intervals. The gc-interval statement sets such interval in seconds.

For more information about Guile memory management system in general and garbage collections in particular, see Memory Management and Garbage Collection.

String statements

eval
Evaluates its argument as Scheme expression.
load-path
Adds specified pathname to %load-path variable.
load
Loads the specified source file on startup.
load-module
Loads the specified Scheme module on startup. This statement takes an arbitrary number of arguments. The first argument specifies the name of the module to load, the rest of arguments is passed to the module initialization funtion. Module initialization function is a function named ‘module-init’, where module is the module name. Arguments are converted using usual Guile rules, except that the ones starting with a dash (‘-’) are converted to keyword arguments.
outfile
Redirects the standard output and standard error streams of the Guile functions to the given file. Unless the filename starts with ‘/’, it is taken relative to the current logging directory.

See Guile, for a detailed description of Guile extensions interface.


Next: , Previous: guile, Up: config file

4.1.9 message statement

The message statement allows to set up the messages that are returned to the user with authentication-response packets.

Syntax

     message {
             account-closed string ;
             password-expired string ;
             password-expire-warning string ;
             access-denied string ;
             realm-quota string ;
             multiple-login string ;
             second-login string ;
             timespan-violation string ;
     };

All variables in message block take a string argument. In string you can use the usual C backslash notation to represent non-printable characters. The use of %C{} and %R{} sequences is also allowed (see Macro Substitution).

String statements

account-closed
This message will be returned to the user whose account is administratively closed.
password-expired
This message will be returned to the user whose password has expired.
password-expire-warning
This is a warning message that will be returned along with an authentication-acknowledge packet for the user whose password will expire in less than n seconds. The value of n is set by password-expire-warning variable in auth block. See auth. In this string, you can use the %R{Password-Expire-Days} substitution, to represent the actual number of days left to the expiration date. The default is
          Password Will Expire in %R{Password-Expire-Days} Days\r\n

access-denied
This message is returned to the user who supplies an incorrect password or a not-existent user-name as his authentication credentials.
realm-quota
This message is returned when the user is trying to log in using a realm, and number of users that are currently logged in from this realm reaches maximum value. For a description of realms, see Realms.
multiple-login
This message is returned to the user, who has logged in more than allowed number of times. For description of how to set the maximum number of concurrent logins, see Simultaneous-Use.
second-login
This is a special case of multiple-login, which is used when the user's login limit is 1.
timespan-violation
This message is returned to the user who is trying to login outside of allowed time interval. For description of how to limit user's login time, see Login-Time.


Next: , Previous: message, Up: config file

4.1.10 filters statement

The filters statement configures user-defined external filters. See Filters, for the detailed discussion of external filters.

Syntax

     filters {
             filter ident {
                     exec-path path ;
                     error-log filename ;
                     common bool [max-wait];
                     auth {
                             input-format fmt ;
                             wait-reply bool ;
                     };
                     acct {
                             input-format fmt ;
                             wait-reply bool ;
                     };
             };
             ...
     };

Each filter directive defines a new filter. The ident argument declares the name of the filter. This string must be used in Exec-Program-Wait or Acct-Ext-Program attributes to trigger invocation of this filter (see Exec-Program-Wait).

Usage

exec-path path
Absolute path to the filter program.
error-log filename
Redirect error output from the filter program to filename. If the filename does not start with a slash, it is taken relative to the current logging directory (see log-dir).
auth
acct
These compound statements define authentication and accounting parts of this filter. Any one of them may be missing. The two statements allowed within auth and acct blocks are:
input-format fmt
Format of the input line for this filter. Usually this string uses %C{} notations (see Macro Substitution).

You can also use the return value from a rewrite function as input line to the filter. To do so, declare:

                       input-format "=my_func()";

where my_func is the name of the rewrite function to invoke. The function must return string value.

wait-reply bool
If the filter prints a single line of output for each input line, set this to yes. Otherwise, if the filter produces no output, use wait-reply no.


Previous: filters, Up: config file

4.1.11 mlc statement

Syntax

     mlc {
             method (system|sql);
             checkrad-assume-logged bool;
     };

Usage

Mlc statement configures multiple login checking subsystem (see Multiple Login Checking).

method
Sets the method of retrieving information about the currently open sessions. Currently two methods are implemented. Setting method to system will use system accounting database (see System Accounting). This is the default method. Setting it to sql will use sql database.
checkrad-assume-logged
radiusd consults the value of this variable when the nas does not responds to checkrad queries (see Multiple Login Checking). If this variable is set to yes, the daemon will proceed as if the nas returned “yes”, i.e. it will assume the user is logged in. Otherwise radiusd assumes the user is not logged in.


Next: , Previous: config file, Up: Configuration Files

4.2 Dictionary of Attributes — raddb/dictionary

The dictionary file raddb/dictionary defines the symbolic names for radius attributes and their values (see Attributes). The file consists of a series of statements, each statement occupies one line.

In the detailed discussion below we use the following meta-syntactic characters:

number
Denotes a decimal, octal or hexagesimal number. Usual C conventions are honored, i.e. if number starts with ‘0x’ or ‘0X’ it is read as a hex number, if it starts with ‘0’ it is read as an octal number, otherwise it is read as a decimal one.
type
Denotes an attribute type. These are valid attribute types:
string
A string type.
integer
An integer type.
ipaddr
ip address in a dotted-quad form.
date
A date in the format: "MON DD CCYY", where MON is the usual three-character abbreviation, DD is day of month (1-31), CCYY is the year, including the century.


Next: , Up: dictionary file

4.2.1 Comments

Comments are introduced by a pound sign (‘#’). Everything starting from the first occurrence of ‘#’ up to the end of line is ignored.


Next: , Previous: Comment, Up: dictionary file

4.2.2 $INCLUDE Statement

Syntax

     $INCLUDE filename

Usage

The $INCLUDE statement causes the contents of the file filename to be read in and processed. The file is looked up in the Radius database directory, unless its name starts with a slash.


Next: , Previous: