Hi All.
I have a problem with SER when i use mediaproxy.
I install SER in a computer(Linux Fedora 2) with ip
192.168.1.37.
System run properly.
I install more mediaproxy into system SER because i
want to solve
problem NAT.I had configured my config file.
I begin test system mediaproxy :
I have 2 GranStream BT100:
BT1 :192.168.1.33 Phone :111
BT2 :192.168.1.35 Phone :333
When i make a call from 333 to 111 then display
following:
[root@dhcppc4 root]# tail -f /var/log/messages
Dec 30 11:59:55 dhcppc4 proxydispatcher[3292]: command
delete
57d2c31487b829d9(a)192.168.1.33 info=
Dec 30 11:59:55 dhcppc4 proxydispatcher[3292]: command
execution time:
0.77 ms
Dec 30 11:59:55 dhcppc4 proxydispatcher[3292]: command
request
57d2c31487b829d9(a)192.168.1.33 192.168.1.33:5004:audio
192.168.1.33
192.168.1.37 local 192.168.1.35 remote
Grandstream=20BT100=201.0.5.16
info=from:111@192.168.1.37:5060,to:333@192.168.1.37:5060,fromtag:41cbda14a0e4af53,totag:
Dec 30 11:59:55 dhcppc4 proxydispatcher[3292]: domain
192.168.1.37
doesn't define any mediaproxy.
Dec 30 11:59:55 dhcppc4 proxydispatcher[3292]: will
use default
mediaproxy for this call.
Dec 30 11:59:55 dhcppc4 mediaproxy[3296]: command
request
57d2c31487b829d9(a)192.168.1.33 192.168.1.33:5004:audio
192.168.1.33
192.168.1.37 local 192.168.1.35 remote
Grandstream=20BT100=201.0.5.16
info=from:111@192.168.1.37:5060,to:333@192.168.1.37:5060,fromtag:41cbda14a0e4af53,totag:,dispatcher
Dec 30 11:59:55 dhcppc4 mediaproxy[3296]: session
57d2c31487b829d9(a)192.168.1.33: started. listening on
192.168.1.37:35022
Dec 30 11:59:55 dhcppc4 mediaproxy[3296]: command
execution time: 4.85
ms
Dec 30 11:59:55 dhcppc4 proxydispatcher[3292]:
forwarding to mediaproxy
on /var/run/mediaproxy.sock: got: '192.168.1.37 35022'
Dec 30 11:59:55 dhcppc4 proxydispatcher[3292]: command
execution time:
246.63 ms
Dec 30 12:00:17 dhcppc4 mediaproxy[3296]: command
status
Dec 30 12:00:17 dhcppc4 mediaproxy[3296]: command
execution time: 0.48
ms
Dec 30 12:00:55 dhcppc4 mediaproxy[3296]: session
57d2c31487b829d9(a)192.168.1.33: 0/0/0 packets, 0/0/0
bytes
(caller/called/relayed)
Dec 30 12:00:55 dhcppc4 mediaproxy[3296]: session
57d2c31487b829d9(a)192.168.1.33: ended (did timeout).
I see no packets throught mediaproxy and Ser dead.And
when i do
statement ./sessions.py then display :
Caller Via Called Status
Duration Codec
Type Traffic
---------------------------------------------------------------------------------------
?.?.?.?:? - 192.168.1.37:35022 - ?.?.?.?:? inactive
0'22" Unknown
Audio 0/0/0
I don't know to solve it.
Can anybody help me.
Thanks a lot.
__________________________________
Do you Yahoo!?
Send a seasonal email greeting and help others. Do good.
http://celebrity.mail.yahoo.com
Hello folks, need help...
I have got my ser running. But when I serctl ps, the process 'hangs'
saying something to the effect that 'mkfifo: cannot create fifo...'.
I took a look at ser.cfg and just to confirm that /tmp/ser_fifo exist, I
did an slocate and found that there isn't any ser_fifo.
Question: How do I install this ser_fifo? I had actually thought it
would have been installed by default together with ser.
Thanks in advance.
Joe.
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.296 / Virus Database: 265.6.6 - Release Date: 12/28/2004
Can someone give me some direction as to how I can get SER
to functin as a basic B2BUA?...a document, how-to, etc?
If that is not readily available then I wonder if there is
some way that I can get SER to statefully rewrite the Contact
header when it relays messages? The reason for this is that
I want all of my UAs to interact only with/through SER
and not directly with each other. Something like this:
UA1 SER UA2
IPaddr1 IPaddr2 IPaddr3
| ----------> | |
| INVITE | |
| contact: name@IPaddr1 | |
| | ----------> |
| | INVITE |
| | contact: name@IPaddr2 |
..... ..... .....
| | <---------- |
| | BYE |
| | ruri: name@IPaddr2 |
| <---------- | |
| BYE | |
| ruri: name@IPaddr1 | |
| | |
Without rewriting the contact header I get the following
which is undesireable:
UA1 SER UA2
IPaddr1 IPaddr2 IPaddr3
| ----------> | |
| INVITE | |
| contact: name@IPaddr1 | |
| | ----------> |
| | INVITE |
| | contact: name@IPaddr1 |
..... ..... .....
| <---------------------------------- |
| BYE |
| ruri: name@IPaddr1 |
Thanks to all for contributing to a really nice open source
system.
Regards,
Robert Brown
I have some problem about Cisco and NAT device. I have SER and rtpproxy
running on a server. Call is made from a SIP endpoint device to Cisco 5300
gateway via SER. But voice can't hear at my SIP device. I try point to
point call without going to Cisco gateway, both side can hear. Please give
advise to solve it. Thanks a lot.
The following is my ser.cfg
#
# $Id: nathelper.cfg,v 1.1.2.1 2003/11/24 14:47:18 janakj Exp $
#
# simple quick-start config script including nathelper support
# This default script includes nathelper support. To make it work
# you will also have to install Maxim's RTP proxy. The proxy is enforced
# if one of the parties is behind a NAT.
#
# If you have an endpoing in the public internet which is known to
# support symmetric RTP (Cisco PSTN gateway or voicemail, for example),
# then you don't have to force RTP proxy. If you don't want to enforce
# RTP proxy for some destinations than simply use t_relay() instead of
# route(1)
#
# Sections marked with !! Nathelper contain modifications for nathelper
#
# NOTE !! This config is EXPERIMENTAL !
#
# ----------- global configuration parameters ------------------------
debug= 7 # 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
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 ----------------------------------
# Uncomment this if you want to use SQL database
#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/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# !! Nathelper
loadmodule "/usr/local/lib/ser/modules/nathelper.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)
#
# 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)
# !! Nathelper
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
# ------------------------- 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");
break;
};
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# !! Nathelper
# Special handling for NATed clients; first, NAT test is
# executed: it looks for via!=received and RFC1918 addresses
# in Contact (may fail if line-folding is used); also,
# the received test should, if completed, should check all
# vias for rpesence of received
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is
# a REGISTER
if (method == "REGISTER" || ! search("^Record-Route:")) {
log("LOG: Someone trying to register 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
if (method == "INVITE") {
fix_nated_sdp("1"); # Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
setflag(6); # Mark as NATed
};
};
# 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
log(1, "loose_route processing\n");
append_hf("P-hint: rr-enforced\r\n");
t_relay();
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;
};
if ( uri=~"^sip:9[0-9]*@5300_IP" ) {
log(1, "SER22: matched - forward to GW\n");
fix_nated_sdp("2");
force_rtp_proxy("5300_IP");
rewritehostport ("5300_IP:5060");
t_relay_to_udp("5300_IP","5060");
forward(5300_IP, 5060);
break;
};
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# !! Nathelper
if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
!search("^Route:")){
sl_send_reply("479", "We don't forward to private IP addresses");
break;
};
# if client or server know to be behind a NAT, enable relay
if (isflagset(6)) {
force_rtp_proxy();
};
# 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 ?
if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
fix_nated_contact();
force_rtp_proxy();
# 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();
};
}
_________________________________________________________________
「碧咸嫂」點樣學外語? http://go.msnserver.com/HK/46164.asp
I am newcome ,I can not login my sip server(ser0.8.14) that I build? I run the commamd serctl ping localhost echo me 400.Where is failt ?Anyones can help me
Hi,
I install ser and I try to use it with asterisk. I setup two ser accounts
and I register 2 ip phones (no problem with registration).
The problem is when I try to place calls between ip phones, 105 and 106. In
next step I try to forward all calls to my Asterisk box and I get the same
result :-(
Thank you,
Chris HARIGA
I attach my ser.cfg bellow:
debug=7
fork=no
log_stderror=yes
*/
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 ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/nathelper.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
#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)
#
modparam("nathelper", "natping_interval", 10)
#
# ------------------------- request 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");
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") { if
(!www_authorize("160.79.172.149", "subscriber")) {
www_challenge("160.79.172.149", "0");
break;
};
save("location");
break;
};
# 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();
};
if(method=="INVITE"){
if (uri=~"^sip:1[0-9]{10}@*") {
log(1,"Forwarding to Asterisk\n");
rewritehostport("sipny.no-ip.info: 5060");
t_relay();
break;
}
}
}
Hi,
I install ser and I try to use it with asterisk. I setup two ser accounts
and I register 2 ip phones (no problem with registration).
The problem is when I try to place calls between ip phones, 105 and 106. In
next step I try to forward all calls to my Asterisk box and I get the same
result :-(
Thank you,
Chris HARIGA
I attach my ser.cfg bellow:
debug=7
fork=no
log_stderror=yes
*/
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 ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/nathelper.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
#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)
#
modparam("nathelper", "natping_interval", 10)
#
# ------------------------- request 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");
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") { if
(!www_authorize("160.79.172.149", "subscriber")) {
www_challenge("160.79.172.149", "0");
break;
};
save("location");
break;
};
# 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();
};
if(method=="INVITE"){
if (uri=~"^sip:1[0-9]{10}@*") {
log(1,"Forwarding to Asterisk\n");
rewritehostport("sipny.no-ip.info: 5060");
t_relay();
break;
}
}
}
Hi list. I have this problem. There's something that's not working,
because, when ever I set up a call, I receive both messages INVITE and
BYE instantly. I think the correct way would it be to send a Start
messages (Acct-Status-Type = Start) upon INVITEs and a Stop messages
(Acct-Status-Type = Stop) upon BYEs. But this is not happening. Look ...
radrecv: Accounting Request from host c0a801fd code=4, id=205,
length=270
Acct-Status-Type = Start
Service-Type = Sip-Session
Sip-Response-Code = 200
Sip-Method = Invite
User-Name = "1992001(a)192.168.1.253"
Calling-Station-Id = "sip:1992001@192.168.1.253:5060;user=phone"
Called-Station-Id = "sip:1992005@192.168.1.253:5060;user=phone"
Sip-Translated-Request-URI = "sip:1992005@192.168.1.178:11005"
Acct-Session-Id = "6dfb6640367b1ab7(a)192.168.1.113"
Sip-To-Tag = "54061171"
Sip-From-Tag = "39eeac148f846cb9"
Sip-CSeq = "1544"
NAS-IP-Address = 192.168.1.253
NAS-Port-Id = 5060
Acct-Delay-Time = 0
Sending Accounting Ack of id 205 to c0a801fd (nas linux)
radrecv: Accounting Request from host c0a801fd code=4, id=206,
length=270
Acct-Status-Type = Start
Service-Type = Sip-Session
Sip-Response-Code = 200
Sip-Method = Bye
User-Name = "1992001(a)192.168.1.253"
Calling-Station-Id = "sip:1992001@192.168.1.253:5060;user=phone"
Called-Station-Id = "sip:1992005@192.168.1.253:5060;user=phone"
Sip-Translated-Request-URI = "sip:1992005@192.168.1.178:11005"
Acct-Session-Id = "6dfb6640367b1ab7(a)192.168.1.113"
Sip-To-Tag = "54061171"
Sip-From-Tag = "39eeac148f846cb9"
Sip-CSeq = "1544"
NAS-IP-Address = 192.168.1.253
NAS-Port-Id = 5060
Acct-Delay-Time = 0
Sending Accounting Ack of id 206 to c0a801fd (nas linux)
Do you see ? ...Both outputs show an Acct-Status-Type = Start, but first
output refers to an INVITE and second output refers to BYE message. I
don't think this is correct, isn't it ?
Any hint ?
here goes my ser.cfg ...
[...]
# -- RADIUS ACC --
modparam("acc", "radius_config", "/etc/radiusclient.conf")
modparam("acc", "radius_flag", 1) modparam("acc", "radius_missed_flag",
2) modparam("acc", "log_level", 1) modparam("acc", "service_type", 15)
[...]
if (loose_route())
{
t_relay();
break;
};
if (uri==myself)
{
if (method=="REGISTER")
{
# Lo siguiente es para auth con RADIUS
if (!radius_www_authorize(""))
{
www_challenge("", "0");
break;
};
save("location");
break;
};
if (method=="INVITE")
{
setflag(1);
};
# native SIP destinations are handled using our USRLOC
DB
if (!lookup("location"))
{
sl_send_reply("404", "Not Found");
break;
};
};
t_relay();
[...]
Regards,
Lucas
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.296 / Virus Database: 265.6.6 - Release Date: 28/12/2004
Hello Everyone,
I've just joined the list having started using SER and would first like to say
Hi to all the subscribers.
I'm having a problem with moving calls between SER servers which I hope
someone can offer some advice on.
I'm running my own SER system, which is used to make calls between local users
no problems. We are also partnered with another company who provide a POTS
gateway for making calls externally. At the moment my setup works perfectly
placing calls between extensions on the same domain, and I have got the
routing working fine to allow users to make outgoing calls onto the POTS
network.
My problem arises when someone on POTS makes a call into our domain. A phone
may be registered on my domain as 123456(a)sip.sft.net, but the call comes in
from our partners in the UK. The call is routed to our domain fine, as I have
seen running an Ngrep on port 5060. However the calls arrive with a prefix of
197544, then our internal number 123456. They also arrive with the domain
www.partner.net on the TO field.
Because the TO field now reads 197544123456(a)www.partner.net, as soon as it
hits my domain it gets lost as I can't direct it to 123456(a)sip.sft.net.
I've tried changing settings in ser.conf but I can't seem to find the right
configuration or location to make it strip the first 6 numbers (197544) and
change the domain from www.partner.net to sip.sft.net before I try to send the
call to the destination on our domain. I am guessing that it is ser.conf I
should be changing, but I am unsure as to where I should be making changes and
exactly what changes I should be making to ensure it is only incoming calls
from the www.partner.net domain that are affected.
If anyone can offer some advice on how I can achieve this I'd be really
grateful. Am I looking in the right place? I have RTFM, but am still lost on
this one as I'm quite new to SER.
Many thanks in advance, and wishing everyone a Happy New Year,
Ian Bonham