FreeRadiusをインストール

SolarisにFreeRadiusをインストール。バックエンドにLDAPを控えさせて、Radiusで認証できるか実験を予定しています。とりあえずはインストールを。

ソースダウンロード

ソースはFreeRadius.orgのページからダウンロード可能です。最新番は1.1.7です。

コンパイル、リンク

展開して、configure,make,make install。ちょっと気を利かせてsslを有効にしようとおもって、こんなconfigureをしてみると見事にエラーに。

$ ./configure --with-openssl=/usr/local/ssl 
$ /usr/local/bin/make
*** Warning: Linking the shared library rlm_perl.la against the
*** static library /usr/local/lib/perl5/5.8.5/sun4-solaris/auto/DynaLoader/DynaL
oader.a is not portable!
gcc -shared -Wl,-h -Wl,rlm_perl-1.1.7.so -o .libs/rlm_perl-1.1.7.so  .libs/rlm_p
erl.o  -R/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/lib/.libs -R/usr/l
ocal/lib /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/lib/.libs/libradiu
s.so -L/usr/local/lib -L/opt/gnu/lib /usr/local/lib/perl5/5.8.5/sun4-solaris/aut
o/DynaLoader/DynaLoader.a -L/usr/local/lib/perl5/5.8.5/sun4-solaris/CORE -lperl
-ldl -lm -lc -lnsl -lresolv -lsocket -lposix4 -lpthread -lc
Text relocation remains                         referenced
    against symbol                  offset      in file
<unknown>                           0x25d0      /usr/local/lib/perl5/5.8.5/sun4-
solaris/CORE/libperl.a(perl.o)
__floatdidf                         0x8f90      /usr/local/lib/perl5/5.8.5/sun4-solaris/CORE/libperl.a(pp_sys.o)
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status
make[6]: *** [rlm_perl.la] Error 1
make[6]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_perl'
make[5]: *** [common] Error 2
make[5]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules'
make[3]: *** [common] Error 2
make[3]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src'
make[1]: *** [common] Error 2
make[1]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7'
make: *** [all] Error 2

うーん、デフォルトがsharedなのかな。ちょっと手を変えてこういうconfigureをしてみる。

$ ./configure --with-openssl=/usr/local/ssl --disable-shared
(中略)
gcc -g -O2 -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -Wall -D_GNU_SOURCE -DNDEBUG -I/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/include -I/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_sql -c rlm_sqlippool.c -o rlm_sqlippool.o
In file included from rlm_sqlippool.c:37:
/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/include/modpriv.h:7:18: error: ltdl.h: No such file or directory
In file included from rlm_sqlippool.c:37:
/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/include/modpriv.h:16: error: expected specifier-qualifier-list before 'lt_dlhandle'
In file included from rlm_sqlippool.c:39:
/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_sql/rlm_sql.h:15:18: error: ltdl.h: No such file or directory
In file included from rlm_sqlippool.c:39:
/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_sql/rlm_sql.h:68: error: expected specifier-qualifier-list before 'lt_dlhandle'
rlm_sqlippool.c: In function 'sqlippool_command':
rlm_sqlippool.c:311: error: 'SQL_INST' has no member named 'module'
rlm_sqlippool.c: In function 'sqlippool_query1':
rlm_sqlippool.c:358: error: 'SQL_INST' has no member named 'module'
rlm_sqlippool.c: In function 'sqlippool_postauth':
rlm_sqlippool.c:539: warning: pointer targets in passing argument 2 of 'strNcpy' differ in signedness
rlm_sqlippool.c:526: warning: unused variable 'self'
make[6]: *** [rlm_sqlippool.lo] Error 1
make[6]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_sqlippool'
make[5]: *** [common] Error 2
make[5]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules'
make[3]: *** [common] Error 2
make[3]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src'
make[1]: *** [common] Error 2
make[1]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7'
make: *** [all] Error 2

むー、妙だ。ltdl.hがないといっている。しかし、開発環境以下にちゃんとあるぞ。

$ find . -name ltdl.h 2> /dev/null
./libltdl/ltdl.h

しかたない。CFLAGSを設定。

$ CFLAGS=-I/export/home2/hogehoge/freeradius/freeradius-1.1.7/libltdl/
$ ./configure --disable-shared --with-openssl-includes=/usr/local/ssl/include --with-openssl-libraries=/usr/local/ssl/lib
$ /usr/local/bin/make
(中略)
gcc .libs/radiusdS.o -pie -static -o radiusd acct.o auth.o client.o conffile.o exec.o files.o log.o mainconfig.o modules.o modcall.o nas.o proxy.o radiusd.o radius_snmp.o request_list.o session.o smux.o threads.o util.o valuepair.o version.o timestr.o xlat.o  ../modules/rlm_acct_unique/.libs/rlm_acct_unique.a ../modules/rlm_always/.libs/rlm_always.a ../modules/rlm_attr_filter/.libs/rlm_attr_filter.a ../modules/rlm_attr_rewrite/.libs/rlm_attr_rewrite.a ../modules/rlm_chap/.libs/rlm_chap.a ../modules/rlm_dbm/.libs/rlm_dbm.a ../modules/rlm_detail/.libs/rlm_detail.a ../modules/rlm_digest/.libs/rlm_digest.a ../modules/rlm_eap/.libs/rlm_eap.a ../modules/rlm_exec/.libs/rlm_exec.a ../modules/rlm_expr/.libs/rlm_expr.a ../modules/rlm_fastusers/.libs/rlm_fastusers.a ../modules/rlm_files/.libs/rlm_files.a ../modules/rlm_ldap/.libs/rlm_ldap.a /usr/local/lib/libldap_r.so /usr/local/lib/liblber.so -lgen /usr/local/lib/libsasl2.so ../modules/rlm_mschap/.libs/rlm_mschap.a ../modules/rlm_ns_mta_md5/.libs/rlm_ns_mta_md5.a ../modules/rlm_otp/.libs/rlm_otp.a -L/usr/local/ssl/lib ../modules/rlm_pam/.libs/rlm_pam.a -lpam ../modules/rlm_pap/.libs/rlm_pap.a ../modules/rlm_passwd/.libs/rlm_passwd.a ../modules/rlm_perl/.libs/rlm_perl.a -L/usr/local/lib -L/opt/gnu/lib -L/usr/local/lib/perl5/5.8.5/sun4-solaris/CORE -lperl -lm -lc ../modules/rlm_preprocess/.libs/rlm_preprocess.a ../modules/rlm_radutmp/.libs/rlm_radutmp.a ../modules/rlm_realm/.libs/rlm_realm.a ../modules/rlm_sql/.libs/rlm_sql.a ../modules/rlm_sql_log/.libs/rlm_sql_log.a ../modules/rlm_sqlcounter/.libs/rlm_sqlcounter.a ../modules/rlm_sqlippool/.libs/rlm_sqlippool.a ../modules/rlm_unix/.libs/rlm_unix.a ../modules/rlm_checkval/.libs/rlm_checkval.a ../modules/rlm_eap/types/rlm_eap_md5/.libs/rlm_eap_md5.a ../modules/rlm_eap/types/rlm_eap_leap/.libs/rlm_eap_leap.a ../modules/rlm_eap/types/rlm_eap_tls/.libs/rlm_eap_tls.a ../modules/rlm_eap/types/rlm_eap_ttls/.libs/rlm_eap_ttls.a ../modules/rlm_eap/types/rlm_eap_sim/.libs/rlm_eap_sim.a ../modules/rlm_eap/types/rlm_eap_peap/.libs/rlm_eap_peap.a /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/modules/rlm_eap/libeap/.libs/libeap.a ../modules/rlm_eap/types/rlm_eap_mschapv2/.libs/rlm_eap_mschapv2.a ../modules/rlm_eap/types/rlm_eap_gtc/.libs/rlm_eap_gtc.a ../modules/rlm_sql/drivers/rlm_sql_postgresql/.libs/rlm_sql_postgresql.a -L/usr/lib -lpq ../modules/rlm_eap/libeap/.libs/libeap.a /export/home2/hogehoge/freeradius/freeradius-1.1.7/src/lib/.libs/libradius.a ../lib/.libs/libradius.a -lcrypt /export/home2/hogehoge/freeradius/freeradius-1.1.7/libltdl/.libs/libltdl.a -ldl -lnsl -lresolv -lsocket -lposix4 -lpthread -lssl -lcrypto -R/usr/local/lib -R/usr/local/lib
ld: fatal: input of shared object `/usr/local/lib/libldap_r.so' in static mode
ld: fatal: input of shared object `/usr/local/lib/liblber.so' in static mode
ld: fatal: input of shared object `/usr/local/lib/libsasl2.so' in static mode
ld: fatal: library -lpam: not found
ld: fatal: library -ldl: not found
ld: fatal: library -lresolv: not found
ld: fatal: library -lposix4: not found
ld: fatal: library -lpthread: not found
ld: fatal: File processing errors. No output written to radiusd
collect2: ld returned 1 exit status
rm -f .libs/radiusdS.o
make[4]: *** [radiusd] Error 1
make[4]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src/main'
make[3]: *** [common] Error 2
make[3]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7/src'
make[1]: *** [common] Error 2
make[1]: Leaving directory `/export/home2/hogehoge/freeradius/freeradius-1.1.7'
make: *** [all] Error 2

libdl.soとか、libresolv.soなんかは/usr/libにあるんだけどなぁ。ここからさきは明日にしよう。