Weird issue, only with registers. Sometimes when I start ser (and openser,
same issue with both)
my test phone (behind nat) will not register allways getting 401
unauthorized back. But wait a minute
and it will register (without resetting ser or the phone).
Is this a built in feature or a bug (it only happens when I reset
ser/openser after 60 seconds the
server and phone behave normally).
Got me stumped as the configs on the phone and ser don't change.
REGISTER sip:XX.XX.XX.XX SIP/2.0.
Via: SIP/2.0/UDP 192.168.10.25:5060.
From: <sip:2959770500@XX.XX.XX.XX;user=phone>;tag=1886287424.
To: <sip:2959770500@XX.XX.XX.XX;user=phone>.
Call-ID: 147690828(a)192.168.10.25.
CSeq: 1 REGISTER.
Contact: Nathan Gross
<sip:2959770500@192.168.10.25:5060;user=phone;transport=udp>;expires=60.
User-Agent: Cisco-CP7905/1.02-040406A.
Allow: ACK, BYE, CANCEL, INVITE, NOTIFY, OPTIONS, REFER, REGISTER.
Content-Length: 0.
SIP/2.0 401 Unauthorized.
Via: SIP/2.0/UDP 192.168.10.25:5060;rport=62686;received=YY.YY.YY.YY.
From: <sip:2959770500@XX.XX.XX.XX;user=phone>;tag=1886287424.
To:
<sip:2959770500@XX.XX.XX.XX;user=phone>;tag=264d52ef5b2f408fc315ea210b15c82e
.5681.
Call-ID: 147690828(a)192.168.10.25.
CSeq: 1 REGISTER.
WWW-Authenticate: Digest realm="XX.XX.XX.XX",
nonce="42b9e43447292eaaa08c9b86dcc1e23344ac3c6a", qop="auth".
Content-Length: 0.
Thank You
Anthony Dean
Network Design & Support
Tristar Communications
This correspondence is considered confidential and any reproduction for the
purpose
of public disclosure is forbidden without written permission by the author
signed above.
If you are not the intended recipient, please immediately notify the sender
and delete
any copies.
If you are responding to this e-mail, please append or attach all previous
correspondence
as a point of reference.
Dear All,
I am using ser 0.9.0 and found that the line
modparam("registrar","desc_time_order",1)
gives a error:
set_mod_param_regex: parameter <desc_time_order> not found in module
<registrar>.
I look at the documentation, there is such a param is registrar.
What's happening here?
Thank for any help available.
Regards,
TC Chan
Hi everyone,
I'm currently stuck at load balancing 2 ser with mediaproxy.
I've setup the 2 DNS record in my master db.abc with
............
ser1.abc.net.my. IN A yy.yy.yy
ser2.abc.net.my. IN A zz.zz.zz
_mediaproxy._tcp.abc.net.my. ......... ser1.abc.net.my.
_mediaproxy._tcp.abc.net.my. ......... ser2.abc.net.my.
Both domains are pingable.
What should be my next step?
my present sip phones are all pointed directly to ser1.xx.xx.xx and ser1
is connected to remote db A.
Do i still need to setup a virtual IP with heartbeat? What will be my
sip setting at my sip phone? Also, what will be in my /etc/profile
(export SIP_DOMAIN=??)
Thanks in advance.
peiyin
Hi,
I´ve configured freeradius and SER according to the Radius HOW TO
document, Accounting works very well but now I am doing some tests
trying to do user authentication however all the authentication
requests coming to the freeradius fails and X-lite sipphone is
receiving an Unauthorized message from SER, please some advice,
thanks
rafael
PS: config files...
in /usr/local/etc/raddb/users :
---------
test Auth-Type := Digest, User-Password == "test"
Reply-Message = "Hello, test with digest"
6609876 Auth-Type := Digest
User-Password := "9876",
Digest-Response = "lalalalala",
Reply-Message = "Hello, ibm1"
6604321 Auth-Type := Digest
User-Password := "4321",
Digest-Response = "lalalalala",
Reply-Message = "Hello, ibm2"
---------
Some relevant data in ser.cfg:
...
modparam("group_radius", "use_domain", 0)
....
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!radius_www_authorize("")) {
www_challenge("", "1");
break;
};
if (!save("location")) {
sl_reply_error();
};
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
# does the user wish redirection on no availability?
(i.e., is he
# in the voicemail group?) -- determine it now and store it in
# flag 4, before we rewrite the flag using UsrLoc
if (radius_is_user_in("Request-URI", "voicemail")) {
log(1, "requested user is in voicemail group");
setflag(4);
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
# sl_send_reply("404", "Not Found");
log(1,"unable to locate user");
route(4);
break;
};
}; # End of "if(uri==myself)"
....
------------------RADIUSD -X Output ---------------------------:
rad_recv: Access-Request packet from host 127.0.0.1:33187, id=79, length=311
User-Name = "6604321(a)10.0.1.22"
Digest-Attributes = 0x0a0936363034333231
Digest-Attributes = 0x010b31302e302e312e3232
Digest-Attributes =
0x022a34323366333163373062336631643261643330383833633238303434316632663133643136613830
Digest-Attributes = 0x040f7369703a31302e302e312e3232
Digest-Attributes = 0x030a5245474953544552
Digest-Attributes = 0x050661757468
Digest-Attributes = 0x090a3030303030303162
Digest-Attributes =
0x08224433343132424232394131453131443939334232303035304241373836433642
Digest-Response = "a6a7812ac0331324f977453c228da2ed"
Service-Type = IAPP-Register
Sip-URI-User = "6604321"
Cisco-AVPair = "call-id=D3412ADB9A1E11D993B20050BA786C6B(a)10.0.1.22"
NAS-IP-Address = 127.0.0.1
NAS-Port = 5060
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 8
modcall[authorize]: module "preprocess" returns ok for request 8
modcall[authorize]: module "chap" returns noop for request 8
modcall[authorize]: module "mschap" returns noop for request 8
rlm_digest: Converting Digest-Attributes to something sane...
Digest-User-Name = "6604321"
Digest-Realm = "10.0.1.22"
Digest-Nonce = "423f31c70b3f1d2ad30883c280441f2f13d16a80"
Digest-URI = "sip:10.0.1.22"
Digest-Method = "REGISTER"
Digest-QOP = "auth"
Digest-Nonce-Count = "0000001b"
Digest-CNonce = "D3412BB29A1E11D993B20050BA786C6B"
rlm_digest: Adding Auth-Type = DIGEST
modcall[authorize]: module "digest" returns ok for request 8
rlm_realm: Looking up realm "10.0.1.22" for User-Name = "6604321(a)10.0.1.22"
rlm_realm: No such realm "10.0.1.22"
modcall[authorize]: module "suffix" returns noop for request 8
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 8
users: Matched DEFAULT at 152
modcall[authorize]: module "files" returns ok for request 8
modcall: group authorize returns ok for request 8
rad_check_password: Found Auth-Type DIGEST
auth: type "digest"
Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 8
rlm_digest: Configuration item "User-Password" is required for authentication.
modcall[authenticate]: module "digest" returns invalid for request 8
modcall: group authenticate returns invalid for request 8
auth: Failed to validate the user.
Delaying request 8 for 1 seconds
Finished request 8
Going to the next request
--- Walking the entire request list ---
Waking up in 1 seconds...
rad_recv: Access-Request packet from host 127.0.0.1:33188, id=80, length=311
User-Name = "6609876(a)10.0.1.22"
Digest-Attributes = 0x0a0936363039383736
Digest-Attributes = 0x010b31302e302e312e3232
Digest-Attributes =
0x022a34323366333163373062336631643261643330383833633238303434316632663133643136613830
Digest-Attributes = 0x040f7369703a31302e302e312e3232
Digest-Attributes = 0x030a5245474953544552
Digest-Attributes = 0x050661757468
Digest-Attributes = 0x090a3030303030303163
Digest-Attributes =
0x08224433343132424235394131453131443939334232303035304241373836433642
Digest-Response = "50fa695654b20e2eec54a1003fe15d9f"
Service-Type = IAPP-Register
Sip-URI-User = "6609876"
Cisco-AVPair = "call-id=D3412ADE9A1E11D993B20050BA786C6B(a)10.0.1.22"
NAS-IP-Address = 127.0.0.1
NAS-Port = 5060
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 9
modcall[authorize]: module "preprocess" returns ok for request 9
modcall[authorize]: module "chap" returns noop for request 9
modcall[authorize]: module "mschap" returns noop for request 9
rlm_digest: Converting Digest-Attributes to something sane...
Digest-User-Name = "6609876"
Digest-Realm = "10.0.1.22"
Digest-Nonce = "423f31c70b3f1d2ad30883c280441f2f13d16a80"
Digest-URI = "sip:10.0.1.22"
Digest-Method = "REGISTER"
Digest-QOP = "auth"
Digest-Nonce-Count = "0000001c"
Digest-CNonce = "D3412BB59A1E11D993B20050BA786C6B"
rlm_digest: Adding Auth-Type = DIGEST
modcall[authorize]: module "digest" returns ok for request 9
rlm_realm: Looking up realm "10.0.1.22" for User-Name = "6609876(a)10.0.1.22"
rlm_realm: No such realm "10.0.1.22"
modcall[authorize]: module "suffix" returns noop for request 9
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 9
users: Matched DEFAULT at 152
modcall[authorize]: module "files" returns ok for request 9
modcall: group authorize returns ok for request 9
rad_check_password: Found Auth-Type DIGEST
auth: type "digest"
Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 9
rlm_digest: Configuration item "User-Password" is required for authentication.
modcall[authenticate]: module "digest" returns invalid for request 9
modcall: group authenticate returns invalid for request 9
auth: Failed to validate the user.
Delaying request 9 for 1 seconds
Finished request 9
Going to the next request
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Sending Access-Reject of id 79 to 127.0.0.1:33187
Waking up in 1 seconds...
rad_recv: Access-Request packet from host 127.0.0.1:33189, id=81, length=311
User-Name = "6609876(a)10.0.1.22"
Digest-Attributes = 0x0a0936363039383736
Digest-Attributes = 0x010b31302e302e312e3232
Digest-Attributes =
0x022a34323366333163373062336631643261643330383833633238303434316632663133643136613830
Digest-Attributes = 0x040f7369703a31302e302e312e3232
Digest-Attributes = 0x030a5245474953544552
Digest-Attributes = 0x050661757468
Digest-Attributes = 0x090a3030303030303163
Digest-Attributes =
0x08224433343132424236394131453131443939334232303035304241373836433642
Digest-Response = "e4f68760f2b3eed0ad45942b32542c92"
Service-Type = IAPP-Register
Sip-URI-User = "6609876"
Cisco-AVPair = "call-id=D3412ADE9A1E11D993B20050BA786C6B(a)10.0.1.22"
NAS-IP-Address = 127.0.0.1
NAS-Port = 5060
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 10
modcall[authorize]: module "preprocess" returns ok for request 10
modcall[authorize]: module "chap" returns noop for request 10
modcall[authorize]: module "mschap" returns noop for request 10
rlm_digest: Converting Digest-Attributes to something sane...
Digest-User-Name = "6609876"
Digest-Realm = "10.0.1.22"
Digest-Nonce = "423f31c70b3f1d2ad30883c280441f2f13d16a80"
Digest-URI = "sip:10.0.1.22"
Digest-Method = "REGISTER"
Digest-QOP = "auth"
Digest-Nonce-Count = "0000001c"
Digest-CNonce = "D3412BB69A1E11D993B20050BA786C6B"
rlm_digest: Adding Auth-Type = DIGEST
modcall[authorize]: module "digest" returns ok for request 10
rlm_realm: Looking up realm "10.0.1.22" for User-Name = "6609876(a)10.0.1.22"
rlm_realm: No such realm "10.0.1.22"
modcall[authorize]: module "suffix" returns noop for request 10
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 10
users: Matched DEFAULT at 152
modcall[authorize]: module "files" returns ok for request 10
modcall: group authorize returns ok for request 10
rad_check_password: Found Auth-Type DIGEST
auth: type "digest"
Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 10
rlm_digest: Configuration item "User-Password" is required for authentication.
modcall[authenticate]: module "digest" returns invalid for request 10
modcall: group authenticate returns invalid for request 10
auth: Failed to validate the user.
Delaying request 10 for 1 seconds
Finished request 10
Going to the next request
Sending Access-Reject of id 80 to 127.0.0.1:33188
Waking up in 1 seconds...
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Sending Access-Reject of id 81 to 127.0.0.1:33189
Waking up in 2 seconds...
--- Walking the entire request list ---
Cleaning up request 8 ID 79 with timestamp 423f309b
Waking up in 1 seconds...
--- Walking the entire request list ---
Cleaning up request 9 ID 80 with timestamp 423f309c
Waking up in 1 seconds...
--- Walking the entire request list ---
Cleaning up request 10 ID 81 with timestamp 423f309d
Nothing to do. Sleeping until we see a request.
--
rrgv
Hello List,
Here's a problem I am currently having. My SER server is behind a router and
its ip is an internal ip address. Hence, SER has to listen on its internal
ip (would it be possible to configure it to listen on the WAN ip?). The call
establishment is fine but for some reason when the user agent (I have tried
XLite and another hw ATA) hangs up it will send the BYE to the server's
interal ip instead of the its WAN ip. Thus the server never receives the BYE
and the other side will still be connected. I am guessing it is because the
Record Route header has the internal ip instead of the WAN one. How could I
rewrite the ip in the record router header to the server's WAN ip? Thank you
all in advance
_________________________________________________________________
Scan and help eliminate destructive viruses from your inbound and outbound
e-mail and attachments.
http://join.msn.com/?pgmarket=en-ca&page=byoa/prem&xAPID=1994&DI=1034&SU=ht…
Start enjoying all the benefits of MSN® Premium right now and get the
first two months FREE*.
Hi,
I installed "Ser-0.8.14" + "nathelper" + "rtpproxy" in RedHat 9.0, and add "./rtpproxy" in startup script, when i tried both sipsoftphone in the internet behind NAT that can connect but "no voice" and auto hang-up, but when both sipsoftphone in local network that no problem !
Which port range i need release for rtpproxy in the firewall ?
my ser.cfg config as below :
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
fork=no
*/
#log_stderror=yes
#debug=4
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
#port=5060
#children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/local/lib/ser/modules/dbtext.so"
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
#loadmodule "/usr/local/lib/ser/modules/mysql.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
#modparam("auth_db", "db_url", "db:/var/dbtext")
#modparam("auth_db", "user_column", "user")
#modparam("auth_db", "domain_column", "domain")
#modparam("auth_db", "password_column", "password")
#modparam("auth_db", "calculate_ha1", 1)
#modparam("auth_db", "password_column_2", "ha1_2")
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind NAT
modparam("nathelper", "rtpproxy_sock","/var/run/rtpproxy.sock")
# -- 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
#define NAT_UAC_TEST_C_1918 0x01
/*
* test for occurences of RFC1918 addresses in Contact
* header field
*/
#define NAT_UAC_TEST_RCVD 0x02
/*
* test if source address of signaling is different from
* address advertised in Via
*/
#define NAT_UAC_TEST_V_1918 0x04
/*
* test for occurences of RFC1918 addresses in SDP body
*/
#define NAT_UAC_TEST_S_1918 0x08
/*
* test for occurences of RFC1918 addresses top Via
*/
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");
break;
};
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too big");
break;
};
if (nat_uac_test("3")) {
append_hf("Alex-hint: NAThelper\r\n");
fix_nated_contact(); # Rewrite contact with source IP of signalling
if (method == "REGISTER" || ! search("^Record-Route:")) {
#if (www_authorize("iptel.org", "subscriber")) {
# www_challenge("iptel.org", "1");
# };
if (method == "INVITE") {
append_hf("Alex-hint: SDP rewritten\r\n");
fix_nated_sdp("3"); # Add direction=active to SDP
};
log("LOG: Someone trying to register from private IP, rewriting\n");
force_rport(); # Add rport parameter to topmost Via
setflag(6); # Mark as NATed
};
};
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);
break;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
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") {
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# !! Nathelper
if (isflagset(6)) {
force_rtp_proxy();
append_hf("NAT: ...\r\n");
};
# NAT processing of replies; apply to all transactions (for example,
# re-INVITEs from public to private UA are hard to identify as
# NATed at the moment of request processing); look at replies
t_on_reply("1");
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
# !! Nathelper
onreply_route[1] {
# NATed transaction ?
append_hf("NAT: tes\r\n");
if (isflagset(6) && status == "(200)") {
fix_nated_contact();
fix_nated_sdp("3");
force_rtp_proxy();
append_hf("NAT: test\r\n");
# otherwise, is it a transaction behind a NAT and we did not
# know at time of request processing ? (RFC1918 contacts)
} else if (nat_uac_test("1")) {
fix_nated_contact();
fix_nated_sdp("3");
force_rtp_proxy();
append_hf("NAT: test1\r\n");
};
}
Please help !
Tks a Lot !
Freeman
伈鴃立即知
Stefan,
May be you read my emails about asterisk+ser+mwi.
i sent questions to find a sip media server for ser
but asterisk don't seem to be the right way for ser
(just pstn gateway).
how many devoloppers work on sems project ?
I don't understand ivr plugin this one can provide IVR
UMS/mwi and more but sems conf file provide one file
*.py for this module !?
Based on IVR plugin is it possible to write some
dedicated modules :
UMS+mwi module
MOH module
IVR module
Harry
--- Stefan Sayer <sayer(a)cs.tu-berlin.de> a écrit :
> harry gaillac wrote:
> > hello,
> >
> >
> > If i add this code will it play music as in xmms
> > playlist for example.
> >
> > what i expect from moh module is to look in the
> moh
> > directory for one or more wav file (-this
> directory is
> > defined in sems.cfg).
> >
> > if a least one file is found moh play the same
> file
> > (boucle) .
> >
> > If more than one file is found all playlist is
> palyed
> > (boucle)
> >
> > i expect from moh module it provide something like
> > xmms
> > if you want to listen the same music.
> >
> > I agree i know what the moh should do but
> translate my
> >
> > need into C++ is a problem for me.
> it is way easier to write a short python script:
> import ivr
> import os
>
> ...
>
> def pushFiles():
> print "pushing files in the media queue..."
> for file in os.listdir("/path/to/mymusic"):
> fullname = os.path.join(directory,
> file)
> print "enqueueing " + fullname
> ivr.enqueueMediaFile(fullname, false)
>
> ...
>
> This could of course be optimized; it will open all
> files when the media
> queue is empty...just to get you started.
>
> see e.g. http://effbot.org/librarybook/os-path.htm
> or
> http://docs.python.org/lib/os-file-dir.html
>
> Stefan
>
>
> >
> > Thanks for help
> >
> > Harry
> >
> >
> > --- Stefan Sayer <sayer(a)cs.tu-berlin.de> a écrit :
> >
> >
> >>pardon:
> >>Stefan Sayer wrote:
> >>
> >>>and some python documentation (
> >>
> >>www.python.org/docs ).
> >>www.python.org/doc/
> >>
> >>>...
> >>
> >>>If you prefer c++ you can simply extend the
> >>
> >>announcement module
> >>
> >>>// somewhere in onSessionStart
> >>>while (!getSession()->sess_stopped.get()) {
> >>> getSession()->rtp_str.play("file1.wav");
> >>> getSession()->rtp_str.play("file2.wav");
> >>> getSession()->rtp_str.play("file3.wav");
> >>>}
> >>
> >>vector<string> files;
> >>files.push_back("file1.wav");
> >>files.push_back("file2.wav");
> >>files.push_back("file3.wav");
> >>
> >>vector<string>::iterator it = files.begin();
> >>while (!getSession()->sess_stopped.get()) {
> >> getSession()->rtp_str.play(*it);
> >> it++;
> >> if (it == files.end())
> >> it = files.begin();
> >>}
> >>
> >>
> >>>Stefan
> >>>
> >>>
> >>>
> >>>_______________________________________________
> >>
> >>Sems mailing list
> >>sems(a)lists.iptel.org
>
>>http://lists.iptel.org/cgi-bin/mailman/listinfo/sems
> >>
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
___________________________________________________________________________
>
> > Appel audio GRATUIT partout dans le monde avec le
> nouveau Yahoo! Messenger
> > Téléchargez cette version sur
> http://fr.messenger.yahoo.com
> >
> >
>
>
___________________________________________________________________________
Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo! Messenger
Téléchargez cette version sur http://fr.messenger.yahoo.com
Hello-
I have a client in a building where the IT staff refuse to open port 5060
for him citing 'security concerns'. Is there a way to get SER to listen on
multiple ports? or do I have to start another instance of SER with a
different ser.cfg?
Thanks for your input.
Dan