FreeRadius : 模块开发(二)

http://wiki.freeradius.org/contributing/Modules3#module-development_defining-configuration-items

这篇文章讲解如何添加一个模块

example模块

通过学习FR自带的模块,然后以此为基础进行修改,应该是上手最快的方法。

FR自带了example模块,位于src/modules/rlm_example,正常情况下不会被编译。编译example模块首先要将模块名字加入到src/modules/stable文件中。别问我怎么知道的 (逃

$ echo rlm_example>src/modules/stable

然后再运行make && make install,可以发现build目录下已经有rlm_example的obj文件了,并安装到了/usr/local/lib中。

模块被编译安装后,还需要在配置文件radiusd.conf中加入一个实例才会被服务器加载。

对于FR3.X版本,在/usr/local/etc/raddb/mods-available目录下创建example文件,文件内容如下:

example {
    integer = 0x10
    boolean = true
    string  = "jinger"
    ipaddr  = "127.0.0.1"
}

上面{}中的参数是模块定义的参数,在服务器调用模块的instantiate函数时,由服务器将上述参数传递给instantiate函数。

然后enable该模块,方法是创建一个软链接到mods-enabled文件夹中。(现在的server都这么搞的,如nignx等等)

$ cd mods-enabled
$ ln -s ../mods-available/example .

然后radiusd -X就可以看到example模块已经被加载了。

  # Loaded module rlm_example
  # Loading module "example" from file /usr/local/etc/raddb/mods-enabled/example
  example {
    integer = 16
    boolean = true
    string = "jinger"
    ipaddr = 127.0.0.1
  }

PS: 在Linux下我是用Qt Creator 来进行调试的,因为它支持vim插件。>_<
此外可以使用wireshark抓包来分析通信流程。过滤条件是udp.port == 1812

测试可以使用radtest:

$ echo "User-Name=hongjin,User-Password=111111,Framed-Protocol=PPP,state=ok" | /usr/local/bin/radclient localhost:1812 auth testing123   

注意:请确保用户名密码、共享密钥的正确性(clients.conf中的secret,默认是testing123)。

在模块的authorize方法中设置AUTH_TYPE

当有一个request到来时,server会调用所有module的authorize方法(查看哪个module可以处理该request),如果某个module可以处理该request,那么需要设置一下AUTH_TYPE,随后该module的authenticate方法才会被调用(验证密码)

以example模块为例子:

在authorize方法添加如下代码:

    if (!pair_make_config("Auth-Type", "EXAMPLE", T_OP_EQ)) { // 设置AUTH_TYPE
        return RLM_MODULE_FAIL;
    }
    return RLM_MODULE_OK;

在site-enable/default中的authenticate{}中添加自定义的Auth-Type

        Auth-Type EXAMPLE{
                example
        }

OK~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值