我可以使用 libfreeradius 来制作自己的 radius 服务器吗?

Can I use libfreeradius to make own radius server?

我想要服务器,它可以处理两个客户端,一个 IP 背后有 不同的秘密。 Freeradius 无法阻止我。它为动态客户端使用静态 ip-secret 绑定。

无法在 Freeradius 2 和 3 中挂接自己的模块。

如何使用 freeradius 库来解析原始 udp 数据包并更改 Message-Authenticator?解析器函数在哪里?

我想像服务器一样制作代理通行证..

客户端请求 secret1,我的代理身份验证数据包使用 secret1,将数据复制到新数据包并使用 localhost constant secret2 加密并将其发送到 freeradius。 Freeradius 回复将被重新编码并发送回客户端。

现在正在尝试 link 到 libradius-radius...

FreeRADIUS 4 将支持 IP/Port 元组与秘密的动态绑定,这有效地解决了您的问题。如果您想自己构建一些东西,那么您可以使用 libfreeradius,但老实说,它是供 FreeRADIUS 和 radiusd 二进制文件附带的实用程序内部使用的,API(更不用说 ABI)非常不稳定并且通常在次要版本之间发生变化,因此您可能会发现您需要花费大量时间来维护您提出的任何内容。

如果您打算这样做,您可能会发现使用 FreeRADIUS 4 HEAD 更容易,因为协议解析器被分成单独的独立库,这些库很容易在主服务器之外进行初始化。

您需要调用的主要函数是fr_radius_init初始化协议库,然后fr_radius_encode编码数据包和fr_radius_decode解码数据包。

您需要提出自己的 IO 函数,尽管 src/lib/util/socket.c 中有一些函数提供了基本的抽象。