Настраиваем Freeradius 2 и rlm_perl на linux Debian
Server Wars Сентябрь 12th, 2011Каждый раз при использовании Freeradius в связке с rpl_perl на своем любимом Debian-чике натыкаюсь на одни и те же грабли. Стоит только включить поддержку перл, как сразу получаем ошибку. Freeradius с поддержкой perl никак не хочет запускаться.
Все пропало! Ничего не работает! Опять! Опять разбираться, гуглить, терять время. А время, как известно — это деньги. Чтож, не буду вдаваться в подробности и рассказывать почему возникает эта ошибка, но расскажу как быстро ее исправить. Метод не единственный, но абсолютно рабочий, и требует минимум временных затрат.
Итак, что мы имеем. Систему linux Debian с установленным Freeradius сервером. Однака поддержка perl не работает, вы выдает следующую ошибку:
radius:/etc/freeradius# /etc/init.d/freeradius start
Starting FreeRADIUS daemon: freeradius Can't load '/usr/lib/perl/5.10/auto/Data/Dumper/Dumper.so' for module Data::Dumper: /usr/lib/perl/5.10/auto/Data/Dumper/Dumper.so: undefined symbol: Perl_sv_cmp at /usr/lib/perl/5.10/XSLoader.pm line 70.
at /usr/lib/perl/5.10/Data/Dumper.pm line 36
Compilation failed in require at /etc/freeradius/example.pl line 30.
BEGIN failed--compilation aborted at /etc/freeradius/example.pl line 30.
Чтож, запустить freeradius достаточно просто. Попробуйте выполнить такой вызов:
LD_PRELOAD=/usr/lib/libperl.so freeradius -X
Если все заработало, то осталось изменить стартовые скрипты, и задача решена.
Если же сервер не запустился, почитайте последние строки вывода, и исправьте ошибки.
Для нормальной загрузки freeradius сервера нам потребуется поправить всего 1 файл:
/etc/init.d/freeradius
откройте его и найдите строки:
case "$1" in
start)
log_daemon_msg "Starting $DESCR" "$PROG"
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $PROGRAM -- $FREERADIUS_OPTIONS || ret=$?
log_end_msg $ret
exit $ret
;;
А теперь замените строку:
start-stop-daemon —start —quiet —pidfile $PIDFILE —exec $PROGRAM — $FREERADIUS_OPTIONS || ret=$?
на
LD_PRELOAD=/usr/lib/libperl.so start-stop-daemon —start —quiet —pidfile $PIDFILE —exec $PROGRAM — $FREERADIUS_OPTIONS || ret=$?
должно получиться следующее:
case "$1" in
start)
log_daemon_msg "Starting $DESCR" "$PROG"
LD_PRELOAD=/usr/lib/libperl.so start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $PROGRAM -- $FREERADIUS_OPTIONS || ret=$?
log_end_msg $ret
exit $ret
;;
Чтож, сохраняем изменения, и радуемся.

Последние коментарии