Порядок действий

  1. Подготовка конфигурации
  2. Подготовка инициализационного скрипта
  3. Настройка logrotate
  4. Настройка автоматического запуска
  5. Запуск

Примечание: в данном руководстве <name> — имя создаваемого экземпляра (например test).

Подготовка конфигурации

За основу можно взять конфигурацию имеющегося экземпляра сервера FreeRADIUS. Также нужно создать директорию для логов нового экземпляра.

cp -pr /etc/freeradius /etc/freeradius-<name>
mkdir /var/log/freeradius-<name>
chown freerad:freerad /var/log/freeradius-<name>

Здесь /etc/freeradius — это директория с конфигурацией действующего экземпляра.

Конфигурационные файлы необходимо отредактировать, добавив имя экземпляра к параметрам logdir, raddbdir и name. Также нужно указать порты для авторицации и аккаунтинга в параметрах port секций listen.

...

logdir = /var/log/freeradius-<name>
raddbdir = /etc/freeradius-<name>

...

name = freeradius-<name>

...

pidfile = ${run_dir}/${name}.pid

...

listen {
...
    type = auth
...
	port = <free_port_number>
...
}

...

listen {
...
    type = acct
...
	port = <free_port_number + 1>
...
}

...

Для inner-tunnel (если используется) также нужно указать новый порт:

...

listen {
       ipaddr = 127.0.0.1
       port = <free_port_number + 2>
       type = auth
}

...

Подготовка инициализационного скрипта

За основу берётся инициализационный скрипт имеющегося экземпляра сервера FreeRADIUS:

cp -p /etc/init.d/freeradius /etc/init.d/freeradius-<name>

В скрипт следует внести следующие коррективы:

...

# Provides:          freeradius-<name>

...

PIDFILE="/var/run/freeradius-<name>/freeradius-<name>.pid"

...

PARAMS="-d /etc/freeradius-<name>"

...

test_freeradius_config() {
  ...
  out=`$PROGRAM -Cxl stdout $FREERADIUS_OPTIONS $PARAMS`; ret=$?

...

# /var/run may be a tmpfs
if [ ! -d /var/run/freeradius-<name> ]; then
  mkdir -p /var/run/freeradius-<name>
  chown freerad:freerad /var/run/freeradius-<name>
fi

... 

case "$1" in
        start)
                log_daemon_msg "Starting $DESCR" "$PROG"
        		export LC_ALL=en_US.UTF-8
                start_daemon -p "$PIDFILE" "$PROGRAM" $FREERADIUS_OPTIONS $PARAMS || ret=$?

...

        debug)
                $PROGRAM -X $FREERADIUS_OPTIONS $PARAMS

...

Настройка logrotate

В конфигурацию для freeradius следует добавить для нового экземпляра секцию следующего вида:

/var/log/freeradius-<name>/*.log {
        weekly
        rotate 52
        compress
        delaycompress
        notifempty
        missingok
        postrotate
                /etc/init.d/freeradius-<name> reload > /dev/null
        endscript
}

Настройка автоматического запуска

update-rc.d freeradius-<name> defaults

Запуск

/etc/init.d/freeradius-<name> start