首页 > 解决方案 > FreeRadius:无法从断开请求中删除不需要的属性

问题描述

我正在努力从其余模块失败后发出的断开连接消息中删除一些不需要的属性。

更具体地说,在计费模式下,当我收到计费请求时,我会返回计费响应或断开连接请求,具体取决于 REST 交互中返回的 HTTP 状态。这两种情况都正常工作,唯一的问题是断开连接消息还包含这些 nag NAS 的属性(它们导致它返回 NAK):

NAS-Port
Teardown-Indicator (as 3GPP VSA)

这些属性在请求中不存在。如果是,我可以轻松删除它们,这也会影响生成的断开连接。但显然,这些属性是在我无法控制的某个时候添加的。“ update disconnect {...} ”没有效果,因为我猜它只与收到的消息有关(从文档中不清楚)。

我知道不连接属于不同的连接,因此不能通过篡改“回复”或 freeradius 为我提供的任何变量来关联和处理它。尽管如此,我仍然非常需要以某种方式解决这个问题,因为我无法控制 NAS 本身。

配置细节:

模组休息:

accounting {
   uri = "http://x.x.x.x:yyyy/..."
   method = 'post'
   body = 'json'
   tls = ${..tls}
}

网站默认:

accounting {
    rest

    # this has no effect (same if placed inside rest {...}):
    update disconnect {
        NAS-Port !* ANY
        Teardown-Indicator !* ANY
    }
}

radius -X 写了这些:

(0) rest: Sending HTTP POST to "http://x.x.x.x:yyyy/..."
(0) rest: Encoding attribute "User-Name"
(0) rest: Encoding attribute "Framed-IP-Address"
(0) rest: Encoding attribute "Acct-Status-Type"
(0) rest: Encoding attribute "Acct-Session-Id"
(0) rest: Processing response header
(0) rest:   Status : 503 (Service Unavailable)
(0) rest: ERROR: Server returned no data
rlm_rest (rest): Released connection (0)
Need 5 more connections to reach 10 spares
rlm_rest (rest): Opening additional connection (5), 1 of 27 pending slots used
rlm_rest (rest): Skipping pre-connect, connect_uri not specified
(0)     [rest] = fail
(0)   } # accounting = fail
(0) WARNING: Unknown destination 127.0.0.1:3799 for CoA request.
(0) Not sending reply to client.
(0) Finished request

REST 工作正常,对于这种特殊情况,预计 503。我看不出有什么问题(错误和警告并不是一个巨大的惊喜)

我想知道是否有一些解决方法可以说服 freeradius 不要添加这些顽皮的属性,或者让我有机会将它们删除?

标签: freeradius

解决方案


最终我澄清了断开连接的工作方式。Freeradius 本身并没有添加任何属性;都是可配置的。在我的情况下,断开连接是由另一个我无法访问并忽略它的存在的“魔法”元素产生的。所有“更新”或“过滤器”配置都应该正常工作,但在我的情况下,我还需要设置 origin-coa 和 home_server 位,而我没有。如果我尝试它,我将发布更新以解释它是如何完成的。


推荐阅读