Hello freeradius-users,
I have a problem with rlm_ippool - it's not deallocating ip's from
pool, and i think i'm somewhat close to its solution, but i want to
do all things right, that's why i'm here again.
FreeBSD 4.8R-p14, freeradius-0.9.3 with cvs version of rlm_ippool
(* Version: $Id: rlm_ippool.c,v 1.20.2.2 2003/10/09 01:05:17 phampson Exp $)
When radiusd receives request from NAS, like this
Calling-Station-Id = "0:50:ba:c1:3:38"
Called-Station-Id = "pppoe"
Service-Type = Framed-User
User-Name = "lan"
Framed-Protocol = PPP
MS-CHAP-Challenge = xxxxxxxxxxxxxxxxxxxxxx
MS-CHAP2-Response = xxxxxxxxxxxxxxxxxxxxxx
NAS-Identifier = "zeus.startatom.ru"
NAS-Port-Type = Ethernet
NAS-Port = 1984
rlm_ippool allocates ip address and writes this entry in his db
under two keys, NAS address and NAS port:
rlm_ippool: Searching for an entry for nas/port: zeus.startatom.ru/1984
rlm_ippool: Allocating ip to nas/port: zeus.startatom.ru/1984
rlm_ippool: num: 1
rlm_ippool: Allocated ip 192.168.253.207 to client on nas zeus.startatom.ru,port 1984
modcall[post-auth]: module "legal_pool" returns ok for request 0
Then, when this client disconnects, rlm_ippool somehow turning
NAS-Identifier to direct ip address instead of FQDN. This is Stop
request:
rad_recv: Accounting-Request packet from host 62.33.65.2:2107, id=71, length=162
Calling-Station-Id = "0:50:ba:c1:3:38"
Called-Station-Id = "pppoe"
Service-Type = Framed-User
User-Name = "lan"
Framed-Protocol = PPP
Framed-IP-Address = 192.168.253.207
Framed-IP-Netmask = 0.0.0.0
NAS-Identifier = "zeus.startatom.ru"
NAS-Port-Type = Ethernet
NAS-Port = 1984
Acct-Status-Type = Stop
Acct-Session-Id = "s-1474470826"
Acct-Multi-Session-Id = ""
Acct-Delay-Time = 0
Acct-Input-Octets = 656
Acct-Input-Packets = 2
Acct-Output-Octets = 0
Acct-Output-Packets = 0
Acct-Session-Time = 13
See? NAS-Identifier is the same FQDN, but rlm_ippool thinks
differently:
rlm_ippool: Searching for an entry for nas/port: 62.33.65.2/1984
rlm_ippool: Entry not found
modcall[accounting]: module "legal_pool" returns ok for request 2
And as a result when client disconnects, his address doesn't
deallocates from pool, and after some time radiusd is run out of
addresses, and clients cannot connect.
I solved this problem by adding simple attr_rewrite entry to
post-auth block (before ippool entry):
attr_rewrite NAS {
attribute = NAS-Identifier
searchin = packet
searchfor = "zeus.startatom.ru"
replacewith = "62.33.65.2"
new_attribute = no
}
So, it's always direct ip written to db, and when rlm_ippool check
entry on Stop request, it successefully deallocates ip address from
pool. I think, this workaround will work for me, but are there
another way to make rlm_ippool work without that?
--
Best regards,
Alexander mailto:[EMAIL PROTECTED]
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html