Dhcp
freeradius:從使用者過濾的特定池中分配 IP
我是新來的。
我有一個帶有 sqlippool 和 LDAP 身份驗證的 freeradius 3(使用“來賓”文件配置使用者),一切正常。我有 2 個 sqlippool:
-main_pool
-guest_pool
我想做以下事情:
如果使用者是“訪客”,則從 guest_pool 提供 IP,否則從 main_pool 提供。我的想法是讓客人和其他使用者在不同的 VLAN 中。
¿我如何告訴半徑 dhcp“如果使用者是來自 guest_pool 的來賓報價?
對不起我的英語不好。
謝謝。
我解決了!
感謝 Arran Cudbard-Bell 提供的線索!
首先,創建了一個名為“userhardaddr”的表,其中使用者名和 mac(PK) 都是 varchar。
在 (radius conf dir)/sites-enabled/defaul (post-auth 部分) 我做了一個“REPLACE”查詢:
post-auth { ... update reply { Tmp-String-0 := "%{sql:REPALCE INTO userhardaddr(username,mac) VALUES(%{User-Name},%{Calling-Station-Id})}" ... } }
如果存在,這將替換錶中已連接 MAC 的使用者。如果不存在,REPLACE 會像在 INSERT 中一樣創建行。
然後,在 sites-enabled/dhcp(發現和請求部分)中:
dhcp DHPC-Discover { update request { ... User-Name = "%{sql:SELECT username FROM userhardaddr where mac = REPLACE ('%{DHCP-Client-Hardware-Address}',':','-')}" ... } ... if(&User-Name=='guest') { &Pool-Name = "guest_pool" } else { &Pool-Name = "main_pool" } ... } ... dhcp DHPC-Request { (same in discover) }
有了這個,我根據mac地址從數據庫中獲取使用者名。
在 IF 語句中,我將查詢返回的值與“guest”進行比較,並分配相應的 IP 池。
再次感謝。
問候。