Proxy RADIUS packets
This virtual server replaces the old pre-proxy and post-proxy
sections that were in v3.
It can be called from another virtual server via the call keyword:
subrequest {
request := parent.request
call proxy {
}
}
For server pools with load-balancing, fail-over, etc., you can just
use the load-balance and redundant keywords. Those sections should
then include multiple radius modules, one for each home server. See
mods-available/home_server_pool
for an example of how to convert a v3 home_server and
home_server_pool configuration to v4.
See also the proxy upgrade documentation for more examples of upgrading from v3 to v4: proxy
server proxy {
namespace = radius
Authentication
Process Access-Request packets and responses.
Receive the Access-Request from the parent
This section replaces pre-proxy. It receives an Access-Request from
the parent, and uses the radius module to proxy it.
Note that there is no send Access-Request section. If you add one,
the server will give an error, and will refuse to start.
recv Access-Request {
Rewrite the Access-Request before it gets sent to the home server
Auth-Type := ::proxy
}
authenticate proxy {
This is where you decide which home server the packet is proxied to.
See
mods-available/home_server_pool
for an example of the pool1 module configuration.
# pool1 }
Accounting
Receive the Accounting-Request from the parent
recv Accounting-Request {
As the last thing in the section, proxy it.
Unlike
Access-Request
packets, there is no Acct-Type = proxy. There are sections like
accounting start {…}, but those sections are called based on the
Acct-Status-Type
attribute in the request.
As a result, the pool1 virtual module has to be listed in this
section.
# pool1 }
Finalize the response
finally {
Remove all
Proxy-State
attributes from the response.
The
Proxy-State
attributes we get from the home server are specific to the link
between the proxy and the home server. They must not be sent back to
the client.
reply -= Proxy-State[*]
Over-write all of the parents response attributes with our response.
parent.reply := reply } }