Hello,
I have been unsuccessfully trying to setup OpenSER as a basic server in
my private network. The idea is that clients can register to the virtual
domain "sipserver.apt.local" and from then, INVITES will be sent to the
appropiate address.
I use the following openser.cfg
# ----------- global configuration parameters ------------------------
debug=5 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
children=4
log_facility=LOG_LOCAL7
# Uncomment these lines to enter debugging mode
#fork=no
#log_stderror=yes
#
port=5060
listen=udp:192.168.100.244:5060
listen=udp:sipserver.apt.local:5060
alias="sipserver.apt.local:5060"
sip_warning=yes
# uncomment the following lines for TLS support
#disable_tls = 0
#listen = tls:your_IP:5061
#tls_verify_server = 1
#tls_verify_client = 1
#tls_require_client_certificate = 0
#tls_method = TLSv1
#tls_certificate = "/etc/openser/tls/user/user-cert.pem"
#tls_private_key = "/etc/openser/tls/user/user-privkey.pem"
#tls_ca_list = "/etc/openser/tls/user/user-calist.pem"
# ------------------ module loading ----------------------------------
#set module path
mpath="/usr/lib/openser/modules/"
# Uncomment this if you want to use SQL database
#loadmodule "mysql.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "xlog.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "auth.so"
#loadmodule "auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- mi_fifo params --
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
# -- 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)
#
# If you set "calculate_ha1" parameter to yes (which true in this
config),
# uncomment also the following parameter)
#
#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)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# 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");
exit;
};
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too
big");
exit;
};
# 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
if (!method=="REGISTER")
record_route();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
# if you have some interdomain
connections via TLS
#if(uri=~"(a)tls_domain1.net") {
#
t_relay("tls:domain1.net");
# exit;
#} else if(uri=~"(a)tls_domain2.net") {
#
t_relay("tls:domain2.net");
# exit;
#}
route(1);
};
# 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
(!www_authorize("openser.org", "subscriber")) {
#
www_challenge("openser.org", "0");
# exit;
#};
xlog("L_INFO","[ACHTUNG]
saved $ru");
save("location");
exit;
};
xlog("L_INFO","[ACHTUNG]request from $ru");
#lookup("aliases");
#if (!uri==myself) {
# append_hf("P-hint:
outbound alias\r\n");
# route(1);
#};
# native SIP destinations are handled
using our USRLOC DB
#if (!lookup("location")) {
# sl_send_reply("404", "Not
Found");
# exit;
#};
#append_hf("P-hint: usrloc
applied\r\n");
};
route(1);
}
route[1] {
# send it out now; use stateful forwarding as it works
reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
exit;
}
I can register fine, however, on INVITE, openSER forwards it internally
instead of fw to the client registered until max_fw reaches 0 and an
error "too many hops" is the final response. Log below:
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]: [ACHTUNG] saved
sip:192.168.100.244
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]: parse_headers:
flags=ffffffffffffffff
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]: parse_headers:
flags=8000000
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]: parse_headers:
flags=ffffffffffffffff
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]: build_contact():
Created Contact HF: Contact:
<sip:oslo_2_Route_1@sipserver.apt.local:5060>;expires=3600^M
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]: parse_headers:
flags=ffffffffffffffff
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]:
check_via_address(192.168.100.238, sipserver.apt.local, 0)
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]:
DEBUG:destroy_avp_list: destroying list (nil)
Apr 18 15:36:16 barcelona /usr/sbin/openser[5022]: receive_msg: cleaning
up
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: SIP Request:
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: method: <INVITE>
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: uri:
<sip:oslo@sipserver.apt.local>
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: version: <SIP/2.0>
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: parse_headers:
flags=2
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: Found param type 232,
<branch> = <z9hG4bK4211644481>; state=16
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: end of header
reached, state=5
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: parse_headers: Via
found, flags=2
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: parse_headers: this
is the first via
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: After parse_msg...
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: preparing to run
routing scripts...
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: parse_headers:
flags=100
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG:parse_to:end of
header reached, state=10
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DBUG:parse_to:
display={}, ruri={sip:oslo@sipserver.apt.local}
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG: get_hdr_field:
<t> [32]; uri=[sip:oslo@sipserver.apt.local]
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG: to body
[<sip:oslo@sipserver.apt.local>^M ]
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: get_hdr_field: cseq
<CSeq>: <985859914> <INVITE>
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DEBUG:maxfwd:is_maxfwd_present: value = 70
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG: add_param:
tag=3326383385
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG:parse_to:end of
header reached, state=29
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DBUG:parse_to:
display={}, ruri={sip:oslo_2_Route_1@sipserver.apt.local}
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: parse_headers:
flags=200
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG: get_hdr_body :
content_length=202
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: found end of header
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: find_first_route: No
Route headers found
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: loose_route: There is
no Route HF
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: grep_sock_info -
checking if host==us: 19==15 && [sipserver.apt.local] ==
[192.168.100.244]
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: grep_sock_info -
checking if port 5060 matches port 5060
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: grep_sock_info -
checking if host==us: 19==19 && [sipserver.apt.local] ==
[sipserver.apt.local]
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: grep_sock_info -
checking if port 5060 matches port 5060
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: grep_sock_info -
checking if host==us: 19==15 && [sipserver.apt.local] ==
[192.168.100.244]
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: grep_sock_info -
checking if port 5060 matches port 5060
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: grep_sock_info -
checking if host==us: 19==19 && [sipserver.apt.local] ==
[sipserver.apt.local]
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: grep_sock_info -
checking if port 5060 matches port 5060
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: [ACHTUNG]request from
sip:oslo@sipserver.apt.local
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG: t_newtran: T
on entrance=0xffffffff
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: parse_headers:
flags=ffffffffffffffff
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: parse_headers:
flags=78
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: t_lookup_request:
start searching: hash=45820, isACK=0
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG: RFC3261
transaction matching failed
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG:
t_lookup_request: no transaction found
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: parse_headers:
flags=ffffffffffffffff
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
check_via_address(192.168.100.238, sipserver.apt.local, 0)
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: WARNING:vqm_resize:
resize(0) called
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DEBUG:tm:_reply_light: reply sent out. buf=0x813efd8: SIP/2.0 1...,
shmem=0xb3e5d980: SIP/2.0 1
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DEBUG:tm:_reply_light: finished
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG: mk_proxy:
doing DNS lookup...
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DEBUG:sip_resolvehost2: no port, no proto -> do NAPTR lookup!
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: get_record:
lookup(sipserver.apt.local, 35) failed
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DEBUG:sip_resolvehost2: no valid NAPTR record found for
sipserver.apt.local, trying direct SRV lookup...
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: get_record:
lookup(_sip._udp.sipserver.apt.local, 33) failed
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DEBUG:sip_resolvehost2: no valid SRV record found for
_sip._udp.sipserver.apt.local, trying A record lookup...
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
check_via_address(192.168.100.238, sipserver.apt.local, 0)
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DBG:check_against_rule_list: using list dns
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG:tm:set_timer:
relative timeout is 500000
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG:
add_to_tail_of_timer[4]: 0xb4091bac (104400000)
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG:tm:set_timer:
relative timeout is 30
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG:
add_to_tail_of_timer[0]: 0xb4091bc8 (133)
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: DEBUG:tm:t_relay_to:
new transaction fwd'ed
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DEBUG:tm:UNREF_UNSAFE: after is 0
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]:
DEBUG:destroy_avp_list: destroying list (nil)
Apr 18 15:36:16 barcelona /usr/sbin/openser[5024]: receive_msg: cleaning
up
What is necessary so the INVITES are sent to the client and not to the
server?
Regards,