Hi,
i'm trying to forward the calls to deltathree's netfork but the problem is
that i can CANCEL the call but if the call has started i can't send BYE to
the server. SER is not recording any BYE messages and a simple call from
10-20 sec. is recorder as 100-110 sec.'s on deltathree servers.
Here is my config:
debug=3
fork=yes
log_stderror=no
listen=192.168.0.2
#listen=127.0.0.1
# hostname matching an alias will satisfy the condition uri==myself".
alias=intranet.com.mk
alias=192.168.0.2
# dns - Uses dns to check if it is necessary to add a "received=" field
# to a via. Default is no.
# rev_dns - Same as dns but use reverse DNS.
dns=no
rev_dns=no
port=5060
children=4
# check_via - Turn on or off Via host checking when forwarding replies.
# Default is no. arcane. looks for discrepancy between name and
# ip address when forwarding replies.
check_via=yes
# syn_branch - Shall the server use stateful synonym branches? It is
# faster but not reboot-safe. Default is yes.
syn_branch=yes
# memlog - Debugging level for final memory statistics report. Default
# is L_DBG -- memory statistics are dumped only if debug is set high.
memlog=3
# sip_warning - Should replies include extensive warnings? By default
# yes, it is good for trouble-shooting.
sip_warning=yes
# fifo - FIFO special file pathname
fifo="/tmp/ser_fifo"
# server_signature - Should locally-generated messages include server's
# signature? By default yes, it is good for trouble-shooting.
server_signature=yes
# reply_to_via - A hint to reply modules whether they should send reply
# to IP advertised in Via. Turned off by default, which means that
# replies are sent to IP address from which requests came.
reply_to_via=no
# user | uid - uid to be used by the server. 99 = nobody.
uid="nobody"
# group | gid - gid to be used by the server. 99 = nobody.
gid="nobody"
# mhomed -- enable calculation of outbound interface; useful on
# multihomed servers.
mhomed=0
# ------------- external module loading
loadmodule "/usr/local/lib/ser/modules/mysql.so"
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/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
loadmodule "/usr/local/lib/ser/modules/exec.so"
loadmodule "/usr/local/lib/ser/modules/group.so"
loadmodule "/usr/local/lib/ser/modules/print.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
# ------------- tm parameters
modparam("tm", "fr_timer", 12)
modparam("tm", "fr_inv_timer", 24)
# ------------- rr parameters
modparam("rr", "enable_full_lr", 1)
modparam("rr", "append_fromtag", 1)
# ------------- accounting parameters
modparam("acc", "db_url", "sql://ser:heslo@localhost/ser")
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 3)
modparam("acc", "report_ack", 0)
modparam("acc", "report_cancels", 1)
modparam("acc", "early_media", 1)
# Account failed transactions
modparam("acc", "failed_transactions", 1)
modparam("acc", "log_fmt", "miocfst")
# ------------- usrloc parameters
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "timer_interval", 10)
modparam("usrloc", "db_url", "sql://ser:heslo@localhost/ser")
# ------------- auth parameters
modparam("auth_db", "db_url", "sql://ser:heslo@localhost/ser")
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
# ------------- routing logic
route{
# filter too old messages
if (!mf_process_maxfwd_header("10")) {
log("LOG: Too many hops\n");
sl_send_reply("483","Too Many Hops");
break;
};
if (msg:len > max_len) {
sl_send_reply("513", "Message too large");
break;
};
/* ********* RR ********************************** */
/* Do strict routing if route headers present */
loose_route();
/* record-route INVITEs -- all subsequent requests must visit us */
if (method=="INVITE") {
record_route();
} else if (method=="REGISTER") {
log("here is a register");
save("location");
break;
};
# now check if it really is a PSTN destination which should be
handled
# by our gateway; if not, and the request is an invitation, drop
it --
# we cannot terminate it in PSTN; relay non-INVITE requests -- it may
# be for example BYEs sent by gateway to call originator
if (!uri=~"sip:9[0-9]*@.*") {
if (method=="INVITE") {
sl_send_reply("403", "Call cannot be served here");
setflag(1);
} else if(method=="BYE") {
setflag(1);
t_relay();
} else if(method=="CANCEL") {
setflag(1);
t_relay();
} else {
t_relay();
};
break;
};
# account completed transactions via syslog
setflag(1);
strip(1);
rewritehostport("natrelay.deltathree.com:5060");
# forward the request now
if (!t_relay()) {
sl_reply_error();
break;
};
}
Hi Dee,
1For a sample solution is use nathelper module with rtpproxy. Use force_rtp to chang SDP information is INVITE/183/200OK SIP packet to transfer to rtpproxy server. It use this solution
2 Use STUN server. If you clients support STUN protocol, imploy a STUN server on external networks. Those clients on internal first use STUN protocol to get NAT information and use external IP address/port to communicate.
3 If you clients support RTP follow, it works like this:
a. first RTP packet:
internal client-------------------NAT--------------------> external client
b. external client get NAT address/port by get the RTP packet source address/port
c. external client change target address/port by the source address/port of first RTP packet
d. internal client<-----------------NAT---------------------- external client
e. two way RTP works
Br,
Wangji
-----原始邮件-----
发件人: serusers-bounces(a)iptel.org [mailto:serusers-bounces@iptel.org]代表 Dee Lowndes
发送时间: 2004年2月21日 5:30
收件人: serusers(a)iptel.org
主题: [Serusers] SIP iptables question
I have finally worked out the problem to an iptables issue and was
wondering if anyone had some rules to sort this out.
If two clients are on an external IP it works, if two clients are on an
internal IP it works but if one client is internal and the other is
external then the external guy can hear the internal but the internal
guy hears nowt.
Any idea/modules/rules to get around this?
Thanks in advance,
Dee
_______________________________________________
Serusers mailing list
Serusers(a)iptel.org
http://mail.iptel.org/mailman/listinfo/serusers
> > I'm trying to develop a solution for LDAP authentication in SER,
> but i have
> > a question. With digest HTTP authentication (RFC 2617) the SIP
> server> doesn't have the plain password, it has a hash of
> user:realm:password> (H(A1)). How could a sip server authenticate
> the users using a standard
>
> How do you came to this conclusion? E.g. by default SER stores the
> plain text
> password and H(A1) in its database.
I wanted to say that UA don't send plain password, only a password digest.
> > LDAP database with this information?
> >
> > Somebody knows a solution for this?
> >
> > My ideas are to use HTTP basic authentication (not standard with
> SIP) or
>
> Basic authentication is absolutely insecure! And basic
> authentication is not
> allowed according to RFC3261. You will (hopefully) not find any SIP
> UA which
> supports basic authentication.
I think so, too.
> > store H(A1) in LDAP (not standard in LDAP, you need to modify the
> stored> information). I think both are bad solutions.
>
> Store the plain text password or H(A1) in LDAP, whatever you
> prefer. It is
> easy to generate H(A1) from a given plain text password.
But, i want to authenticate with an external LDAP, and usually (my case too) you can't obtain plain passwords and you can't store new information (H(A1)) for the SIP service.
Thx.
Hi,
Firstly I'm quite new to ser...
I am trying to use the nathelper.so module with portaone rtpproxy. I have
the latest ser release 0.8.12 installed from rpm on red hat 9.
I get pass:
loadmodule "/usr/lib/ser/modules/nathelper.so"
and:
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30)
...uptill here everything is OK
however when I also add:
modparam("nathelper", "ping_nated_only", 1)
I get:
Starting ser: ERROR: bad config file (1 errors)
I also get the same error when trying to use the nat_uac_test function.
Can anyone help me out ? Am I missing something ?
Any help greatly appreciated....
Thanks,
Dave
Hi
I've setted up a TestBed about ToIP based on SIP. In this TestBed I've
used a SER Server running on a Linux Red Hat 9.0.
I have had several problems with this TestBed for a long time. I cannot
call external phones across the gateway (Cisco 1760). Once the call is
established it lasts 20 second, before this time it hangs up.
I would like to ask you, if its possible for you to review my
configuration in order to detect any kind of mistake or problem.
Thanks for all your help
Albert
Hi all,
Can anyone help me to solve the question. It puzzle me a long time.
My ser.cfg like this:
if (method == "REGISTER" || ! search("^Record-Route:")) {
log("LOG: REGISTER or INVITE From private IP, rewriting\n");
# This will work only for user agents that support symmetric
# communication. We tested quite many of them and majority is
# smart enough to be symmetric. In some phones it takes a configuration
# option. With Cisco 7960, it is called NAT_Enable=Yes, with kphone it is
# called "symmetric media" and "symmetric signalling".
fix_nated_contact(); # Rewrite contact with source IP of signalling
force_rport(); # Add rport parameter to topmost Via
setflag(6); # Mark as NATed
if(method=="INVITE"&&uri=~"^sip:6169[0-9]*@[0-9|\.]*") {
force_rtp_proxy();
};
};
....
if (method=="REGISTER") {
if (!www_authorize("novsky.com", "subscriber")) {
www_challenge("novsky.com", "0");
break;
} else if(!check_from()) {
www_challenge("novsky.com", "0");
break;
} else {
save("location");
break;
};
};
# if is a INVITE
if (method=="INVITE") {
if(!proxy_authorize("novsky.com","subscriber")) {
proxy_challenge("novsky.com","1");
break;
} else if(!check_from()) {
proxy_challenge("novsky.com","1");
break;
};
...
if(!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
....
t_on_reply("1");
}
Wangji
-----原始邮件-----
发件人: serusers-bounces(a)iptel.org [mailto:serusers-bounces@iptel.org]代
表 wangji
发送时间: 2004年2月20日 23:56
收件人: serusers(a)iptel.org
主题: [Serusers] Sometimes registrar module's desc_time_order options
fail
Hi all,
My network is like this:
----------------------------
| |
| |
| Private network | ----------- NAT----------Internet ----------------- SER server
| |
| |
----------------------------
And I use SER+mysql DB.
For a SIP terminal there are only one number and for a number there are only one SIP terminal. For a call I need to know only one URI. So that I set :
modparam("registrar", "append_branches", 0)
That mean I must get the last register infomation for a SIP terminal because of NAT port maybe change when SIP terninal reboot(Maby power off and power on so that maybe no unregister packets sent). So that I set:
modparam("registrar", "desc_time_order", 1)
to get the most current URI.
I don't know what mean with the parm default_q, sometimes I set it as 50, sometimes use default value 0.
But SER often call to the URI wrong.
Looking my recorder:
I use a SIP terminal named 1001. The terminal register multi times. So I can get many
I get usrloc information by command "serctl ul show" like this:
===Domain list===
---Domain---
name : 'location'
size : 512
table: 0x402e7998
d_ll {
n : 2
first: 0x402e99a0
last : 0x402e9a80
}
...Record(0x402e99a0)...
domain: 'location'
aor : '1001'
~~~Contact(0x402e9b48)~~~
domain : 'location'
aor : '1001'
Contact: 'sip:1001@218.107.145.102:7035'
Expires: 131
q : 0.00
Call-ID: '3BAFC06D5BD54939A3114CABF35D1FE0(a)novsky.com'
CSeq : 11838
replic : 0
State : CS_SYNC
Flags : 1
next : 0x402e9be8
prev : (nil)
~~~/Contact~~~~
~~~Contact(0x402e9be8)~~~
domain : 'location'
aor : '1001'
Contact: 'sip:1001@218.107.145.102:7011'
Expires: 36
q : 0.00
Call-ID: 'D125943999FF4907BCD175EEFE3DE24A(a)novsky.com'
CSeq : 43236
replic : 0
State : CS_SYNC
Flags : 1
next : 0x402e99e0
prev : 0x402e9b48
~~~/Contact~~~~
~~~Contact(0x402e99e0)~~~
domain : 'location'
aor : '1001'
Contact: 'sip:1001@218.107.145.102:7080'
Expires: 1794
q : 0.00
Call-ID: '9658F25C5E3040C1AE4C3405032B7558(a)novsky.com'
CSeq : 63264
replic : 0
State : CS_NEW
Flags : 1
next : (nil)
prev : 0x402e9be8
~~~/Contact~~~~
.../Record...
...Record(0x402e9a80)...
domain: 'location'
aor : '1000'
~~~Contact(0x402e9ac0)~~~
domain : 'location'
aor : '1000'
Contact: 'sip:1000@218.201.88.163:1083'
Expires: 2565
q : 0.00
Call-ID: '3350078894(a)172.16.3.80'
CSeq : 4
replic : 0
State : CS_SYNC
Flags : 1
next : (nil)
prev : (nil)
~~~/Contact~~~~
.../Record...
In the list we can find that last register use NAT port 7080 by check expires time.
I use this terminal -- 1001 to call 1001, It should return 486 BUSY in normal. But it didn't reponse.
See that packet I get by tethereal:
291.677702 218.107.145.102 -> 218.201.88.164 SIP/SDP Request: INVITE sip:1001@novsky.com, with session description
291.702534 218.201.88.164 -> 218.107.145.102 SIP Status: 407 Proxy Authentication Required
291.822811 218.107.145.102 -> 218.201.88.164 SIP Request: ACK sip:1001@novsky.com
291.824597 218.107.145.102 -> 218.201.88.164 SIP/SDP Request: INVITE sip:1001@novsky.com, with session description
291.868197 218.201.88.164 -> 218.107.145.102 SIP Status: 100 trying -- your call is important to us
291.870300 218.201.88.164 -> 218.107.145.102 SIP/SDP Request: INVITE sip:1001@218.107.145.102:7035, with session description
292.045669 218.201.88.164 -> 218.107.145.102 SIP/SDP Request: INVITE sip:1001@218.107.145.102:7035, with session description
294.065633 218.201.88.164 -> 218.107.145.102 SIP/SDP Request: INVITE sip:1001@218.107.145.102:7035, with session description
298.105648 218.201.88.164 -> 218.107.145.102 SIP/SDP Request: INVITE sip:1001@218.107.145.102:7035, with session description
I find SER get the wrong URI and send to NAT port 7035.
It sometimes happens but not always.
How to deal with that.
Br,
Wangji
Hi Nair,
Simple way to this problem, change ser.cfg like this:
# if (!mf_process_maxfwd_header("70")) {
# sl_send_reply("483","Too Many Hops");
# break;
# };
Wangji
-----原始邮件-----
发件人: serusers-bounces(a)iptel.org [mailto:serusers-bounces@iptel.org]代表 Nair
发送时间: 2004年2月21日 18:13
收件人: Seruser
主题: [Serusers] SIP/2.0 483 Too Many Hops ??
hi all,
I am trying to use SER as below:
UA1>>>>>>>>>B2BUA>>>>>>>>SER------>GW
UA1:192.168.10.198
B2BUA:192.168.10.144
SER:192.168.10.1
GW:192.168.10.156
When i try to make calls from UA1 i am getting mesg "SIP/2.0 483 Too Many Hops"
what cud be wrong??
regards
manu.
------------------------------------------------------------------------------
Do you Yahoo!?
Yahoo! Mail SpamGuard - Read only the mail you want.
Hey All,
What kind of calls-per-second can SER handle if I put it onto a single processor pentium 4 2.6ghz server with 1 gig of ram?
I am using SER with a mysql database to keep track of accounting and user locations. I mention that because I'm sure that will affect the performance. Other than that it's just routing calls.
Thanks!
Darren Nay - dnay(a)libertyisp.com
Hi,
I'm trying to run sems and get the following error:
su-2.05b# ans_machine -E
Configuration:
configuration file: /etc/sems/sems.conf
Ser's FIFO: /tmp/ser_fifo
our FIFO: /tmp/am_fifo
smtp server ip: localhost
smtp server port: 25
announce path: /usr/local/lib/sems/audio/
default announce: default_en.wav
plug-in path: /usr/local/lib/sems/plug-in/
maximum record time: 30
daemon mode: 0
(14022) INFO: run (AmServer.cpp:144): Loading application plug-ins
(14022) DEBUG: load (AmPlugIn.cpp:83): loading
/usr/local/lib/sems/plug-in//apps/echo.so ...
(14022) ERROR: loadPlugIn (AmPlugIn.cpp:97): AmPlugIn::loadPlugIn:
/usr/local/lib/sems/plug-in//apps/echo.so: Undefined symbol
"_ZN7AmAudio5closeEv"
(14022) ERROR: load (AmPlugIn.cpp:85): while loading plug-in
'/usr/local/lib/sems/plug-in//apps/echo.so'
(14021) DEBUG: sig_usr (ans_machine.cpp:56): signal 20 received
it also gives the same error for announcement.so and voicemail.so
It's sems-0.1.0 running on FreeBSD 4.9. I could only find
http://lists.iptel.org/pipermail/sems/2003-November/000002.html which is not
very helpfull. Does anybody knows how to make it works?
Thank you in advance
Juan