Proxying multiple times to virtual and external servers
Bob Franklin
rcf34 at cam.ac.uk
Thu May 24 18:04:45 CEST 2012
On Thu, 24 May 2012, Graeme Hamilton wrote:
> Ideally, I'd like a generic default virtual server which would process
> all authentications initially, but which would act upon the suffix (e.g.
> ':eduroam') appended to the Called-Station-Id by our wireless
> controllers to proxy the request off to another virtual server dedicated
> to that particular function, where further actions specific to that
> purpose can be carried out. Reading the comments in proxy.conf suggests
> that it's possible to proxy requests containing a particular realm off
> to another virtual server, but that such requests cannot subsequently be
> proxied again. This would break Eduroam, since visitors to our campus
> need to have their requests proxied off to the national proxy servers
> once we've processed them.
I thought it was only that you couldn't nest virtual servers more than
two deep -- I'm not sure if you can proxy from a virtual server to a
different external server. I would guess you can.
However, handling EAP involves proxying from the outer server (virtual or
otherwise) to the inner virtual server, so you can't stack the layers
there.
Since we have clients of our RADIUS server (for eduroam) which are in
colleges and departments and then our own wireless system, I had the idea
of handling our wireless system as a virtual server, then proxying to a
generic virtual server* to handle eduroam (local or proxied). Everyone
else would point at the generic server, but our wireless system would use
the virtual server which puts the extra policies on for that (and logging,
etc.).
However, you can't proxy from the wireless virtual server -> generic
server -> inner-tunnel virtual server as that's two deep.
I ended up having the 'default' server handling the generic RADIUS/eduroam
proxying (including to the inner-tunnel virtual server) and then a
separate virtual server for our wireless system. That proxied directly to
the inner-tunnel one for our local eduroam home service.
I moved most of the logic in 'authorize {}', 'accounting {}' and so on
into 'policy.conf', where you can call them a bit like subroutines. That
means I'm only changing that in one place. The specific parts can then go
into the appropriate 'sites-available' entries directly.
[I also used to have to handle both Cisco and Aruba APs, so had some logic
to pick the ESSID out of the different requests and set a local dictionary
attribute 'UCam-Essid-Name', so I could separate that part out.]
- Bob
* I don't believe you can proxy to the 'default' server from a virtual
server, so I essentially disabled the default server and reconfigured one
of the virtual ones to listen on the default ports, during testing;
however, I've not stuck with this implementation, so I undid it again!
--
Bob Franklin <rcf34 at cam.ac.uk> +44 1223 748479
Network Division, University of Cambridge Computing Service
More information about the Freeradius-Users
mailing list