当前位置: 首页 > 工具软件 > JRadius > 使用案例 >

freeRadius2.2.3+jradius1.1.4配置手记

苏雅珺
2023-12-01

每个版本的不同组合都有不同的坑,折腾了两三天,总算把最新版freeRadius2.2.3+jradius1.1.4配置成功。

虽然jradius1.0.0和freeradius整合很容易配置,但是它本身是一个beta版,已知的bug太多。高版本虽然有也存在bug,但至少修改了之前低版本已知的bug。所以还是以高版(1.1.4)为基础进行折腾。freeRadius的最新稳定版是2.2.3, 基于相同的原因当然相信高版本的bug要少。


一. 编译freeRadius2.2.3

svn co http://dev.coova.org/svn/cjradius/trunk/freeradius/rlm_jradius

wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.2.3.tar.gz

tar zxvf freeradius-server-2.2.3.tar.gz

cd freeradius-server-2.2.3

echo rlm_jradius >> src/modules/stable

cp ../rlm_jradius/*.c src/modules/rlm_jradius/.

注意只能copy这一个文件,jradius的svn的rlm_jradius目录中只有.c文件是正确的,Makefile错误。而freeradius目录中src/modules/rlm_jradius/下.c文件是错误的,其它文件正确。

./configure --prefix=your_path

make;make install

${your_path}/sbin/radiusd  -X


下面的是选做的项目,我是为了以admin用户启动:

chown root:admin ${your_path}/sbin/radiusd

chmod +s ${your_path}/sbin/radiusd

cp -r ${your_path}/etc/raddb ${deploy_home}

chown admin:admin ${deploy_home}/raddb

以后启动我会以admin身份启动 ${your_path}/sbin/radiusd -d ${deploy_home}/raddb


修改radius.conf,将其中的

modules {
        $INCLUDE ${confdir}/modules/
        $INCLUDE eap.conf
}

改为:

modules {
        jradius {
                name             = "yourname"           # Name of the JRadius Application
                primary         = "xxxxxx"
                #primary          = "127.0.0.1"         # Primary JRadius Server
                #secondary        = "192.168.1.2:1815"  # Secondary JRadius Server (port 1815)
                #tertiary         = "192.168.1.2:1816"  # Tertiary JRadius Server
                timeout          = 1                   # JRadius Server Connect Timeout (default 5)
                onfail           = NOOP                # What to do if no JRadius
                keepalive        = yes                 # Keep connections to JRadius pooled
                connections      = 8                   # Number of pooled JRadius connections
                allow_codechange = yes                 # Allow the changing the RADIUS code/type
                allow_idchange   = yes                 # Allow the change of the RADIUS pkt id
        }

        $INCLUDE ${confdir}/modules/
        $INCLUDE eap.conf
}

如果以admin启动在上面加上

group = admin

user = admin


修改sites-enabled/default,将其中的

authorize{

............

}所以内容删除修改为

authorize {
        jradius
}

ok.可以直接启动了。


二.配置jradius 1.1.4

默认配置是不能工作的,直接修改jradius-config.xml,和网上介绍的1.0.0不同,必须启用session管理模块,是终结果是:

<?xml version="1.0" encoding="UTF-8"?>
<jradius-config debug="true">
        <debug>true</debug>
        <timeout>0</timeout>

        <dictionary name="jradius-dictionary">
                <description>RADIUS Dictionary</description>
                <class>bean:attributeDictionary</class>
        </dictionary>


        <packet-handlers>
                <packet-handler name="LocalUsers">
                        <description>Generic FreeRADIUS Local Users Handler</description>
                        <class>net.jradius.example.LocalUsersHandler</class>
                        <users>
                                <user username="test" password="test">
                                        Reply-Message = Hello test user!
                                        Session-Timeout = 3600
                                        Idle-Timeout = 300
                                        User-Name = any
                                </user>
                        </users>
                </packet-handler>
        </packet-handlers>
        <listeners>

                <listener name="FreeRadiusListener">
                        <description>FreeRADIUS rlm_jradius module listener (TCP)
                        </description>

                        <class>bean:radiusListener</class>

                        <processor-class>bean:radiusProcessor</processor-class>
                        <processor-threads>32</processor-threads>
                        <!-- 定义太多,一旦重连需要一个一个重试,太少处理能力不足,所以要根据需要确定 -->

                        <packet-handler type="authorize" handler="LocalUsers" />
                        <!-- <packet-handler type="post_auth" handler="LocalUsers" /> <event-handler
                                handler="event-handler" /> -->
                        <property>
                                <name>port</name>
                                <value>1814</value>
                        </property>
                        <property>
                                <name>backlog</name>
                                <value>1024</value>
                        </property>
                        <property name="keepAlive" value="true" />
                </listener>
        </listeners>
        <session-manager class="bean:sessionManager" key-provider="bean:sessionKeyProvider"
                session-factory="bean:sessionFactory" />
</jradius-config>

修改一下log4j.properties把ERROR改成INFO或debug,否则无声工作有点不放心,等以后稳定了再修改回ERROR.



注意点:

在连接用户身份不能验证时,freeradius并不做任何响应,测试时没有任何反映,所以你很难判断服务是否正常,所以除了第一次以radiusd -X初始化以后,后期调试期间仍然加-X选择,默认的client.conf中协商码是testing123,如果你不以-X方式启动,你试一下testing124看看就没有任何响应。但以-X方式启动服务端就可以打印是什么原因。


jradius1.1.4的src有很多问题,建议直接下载release包。但是我要做工程化需要把安装目录的运行目录分开,在源码上需要扩展,在编译时需要排除applet模块,因为现在你不可能下载到它的依赖包了,其它模块有的要手工下载jar包放在本地mvn库中,有的还需要vnp翻墙才能编译,总之,自求多福吧。


以上配置刚刚能run起来,下一步是精简。

 类似资料: