Dhcp

freeradius:從使用者過濾的特定池中分配 IP

  • January 18, 2019

我是新來的。

我有一個帶有 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 池。

再次感謝。

問候。

引用自:https://serverfault.com/questions/948986