Freeradius
在復製到主伺服器時更新使用者名
我正在使用 FreeRADIUS 版本 3.0.13,並嘗試將記帳請求復製到使用數據包將 IP 映射到使用者名的第 3 方伺服器。使用者名對他們來說並不重要,它只是可以搜尋的東西。因此,我想在其中粘貼更多資訊,而不僅僅是我們的使用者名(本質上是一個埠和 vlan)。我已經編寫了一個更新查詢,它可以滿足我的需求,但是我只能弄清楚如何在 PROXY 上更新它,而不是在 REPLICATE 上。
如果我在“preacct”部分更新它,它會破壞我在本地進行的實際記帳,因為我的本地記帳數據包具有我更改的使用者名。
preacct { update request { User-Name := "%{User-Name}_%{sql: SELECT b.agreement FROM radcheck a, customer_customer b WHERE a.customer_id = b.id and a.username = '%{User-Name}'}_%{sql: SELECT REPLACE(b.name,' ','_') FROM radcheck a, customer_customer b WHERE a.customer_id = b.id and a.username = '%{User-Name}'}" } update control { #Proxy-To-Realm := r_ca_fa Replicate-To-Realm := r_ca_fa } replicate
如果我在“pre-proxy”部分更新代理請求,它會做我想要的,但似乎我只能在代理而不是複制時才能做到這一點。代理工作正常,除了我的伺服器正在等待永遠不會到來的響應,然後最終宣布伺服器死亡(我在日誌中看到了這一點,不確定是否對服務有任何實際影響)。
不確定還有哪些其他資訊可能與故障排除有關,但我已經為此工作了很長時間,並查看了電路板但似乎無法弄清楚。任何幫助,將不勝感激。
謝謝!
是的,複製模組有點奇怪,它繞過了 RADIUS 的大部分協議狀態機,只是動態創建新數據包,它直接將其寫入輸出套接字。
結果是正常的代理列表都沒有正常工作。
如果要重寫出站數據包中的任何屬性,則需要在目前請求中更改它們。
update { request:Tmp-String-0 := &User-Name request:User-Name := "%{User-Name}_%{sql: SELECT b.agreement FROM radcheck a, customer_customer b WHERE a.customer_id = b.id and a.username = '%{User-Name}'}_%{sql: SELECT REPLACE(b.name,' ','_') FROM radcheck a, customer_customer b WHERE a.customer_id = b.id and a.username = '%{User-Name}'}" control:Replicate-To-Realm := 'r_ca_fa' } replicate update { request:User-Name := &Tmp-String-0 }