Hi,
I’ve already posted this to the user’s
mailing list, but I think that here is a best place for this.
I’ve noticed that rlm_ippool is nearly always
reassigning an IP address that has just been releasing for a new connexion. This
causes some TCP connexion problems because of the TIME_WAIT state.
Scenario:
1/ one device connects using source port 1024 (ppp)
and gets an IP address from freeradius
2/ this device disconnects, the ip is freed from the
pool
3/ another devices connects using source port 1024
and gets the same ip address as before
4/ the connexion is impossible to the server because
the connexion of last device is still in TIME_WAIT state
How can I make sure an IP address is not assigned
before some time period (240 seconds, time period of the TIME_WAIT state) after
being released?
I got one answer :
>Interesting.
>The IPs are allocated
by a GDBM walk of the database, and use of the first free or expired IP. This
will always tend to be the same one hence the repeat >allocations.
>It would in theory be
possible to save the key from the last walk, and next time we allocate an IP
start from that key and wrap back around, which would >allocate IPs in a
more round-robin fashion.
I would appreciate if
someone can help doing the hack or give me some hints to modify rlm_ippool.c to
add some retention time parameter to make sure an ip is not reassigned
instantly after being freed or to make things work more in a random or round
robin way.
Thanks in advance.
Regards,
Sebastien.