Hi,
I want to use SER to Rasius authenticate, radius accounting.
I read too many documents but not able to get a good configuration.
My scenerio is simple.
- Register SIP clients via Radius Auth. - Route the call with respect to prefix (is it possible to get from radius?) or some other methos instead of direct CFG config. - radius accounting (start/stop)
have a working cfg file ?
My CFG file is here.
Note that: SER crashes when I make a call.
0(11895) get_hdr_field: cseq <CSeq>: <1> <INVITE> 0(11895) header field type 16, name=<CSeq>, body=<1 INVITE> 0(11895) parse_headers: flags=4 0(11895) DEBUG: t_reply_matching: hash 6732 label 192727755 branch 0 0(11895) DEBUG: t_reply_matching: reply matched (T=0x402ed130)! 0(11895) DBG: callback type 1, id 5 entered 2(11900) ERROR: fifo_server fgets failed: Illegal seek 2(11900) ERROR: fifo_server fgets failed: Illegal seek 2(11900) ERROR: fifo_server fgets failed: Illegal seek 2(11900) ERROR: fifo_server fgets failed: Illegal seek 1(11898) INFO: signal 15 received
CFG file is: =============
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/opt/interSER/lib/modules/mysql.so"
loadmodule "/opt/interSER/lib/modules/sl.so" loadmodule "/opt/interSER/lib/modules/tm.so" loadmodule "/opt/interSER/lib/modules/rr.so" loadmodule "/opt/interSER/lib/modules/maxfwd.so" loadmodule "/opt/interSER/lib/modules/usrloc.so" loadmodule "/opt/interSER/lib/modules/registrar.so" #loadmodule "/opt/interSER/lib/modules/group_radius.so" #loadmodule "/opt/interSER/lib/modules/group.so" # Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/opt/interSER/lib/modules/auth.so" loadmodule "/opt/interSER/lib/modules/auth_db.so" loadmodule "/opt/interSER/lib/modules/auth_radius.so" loadmodule "/opt/interSER/lib/modules/acc.so" #loadmodule "/opt/interSER/lib/modules/uri.so" # ----------------- setting module-specific parameters ---------------
# -- usrloc params -- #modparam("usrloc", "db_mode", 0) # Uncomment this if you want to use SQL database # for persistent storage and comment the previous line modparam("usrloc", "db_mode", 2) # -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password") # -- rr params -- # add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1) modparam("auth_radius","radius_config","/opt/rad_client/etc/radiusclient/radiusclient.conf") modparam("auth_radius","service_type",15) modparam("acc", "log_level", 1) modparam("acc", "radius_config","/opt/rad_client/etc/radiusclient/radiusclient.conf") modparam("acc", "service_type", 15) modparam("acc", "radius_flag", 1) modparam("acc", "radius_missed_flag", 3)
# ------------------------- request routing logic -------------------
# main routing logic
route{
setflag(1); # Some LOG commands here
# initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); break; }; if ( msg:len > max_len ) { sl_send_reply("513", "Message too big"); break; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol record_route(); # loose-route processing if (loose_route()) { t_relay(); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication if (!radius_www_authorize("")) { www_challenge("", "1"); break; }; save("location"); break; };
# Some other LOG commands here # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}