I have an ser server with two nics. One has a private ip and one has a
public ip. I have mediaproxy listening on the public ip. I have an asterisk
box also on the private subnet.
The problem is that asterisk box wants to talk to the public ip address even
though the requests are coming in on the private ip. Such as this.
11:12:12.946544 IP x.x.214.51.5060 > 172.20.200.50.5060: UDP, length 974
Then it talks back to SER+Mediaproxy on the public address through it's
gateway, which is a NAT router. ( 172.20.200.50 is nat'd to x.x.213.83 )
11:13:13.309182 IP x.x.213.83.5060 > x.x.214.51.5060: UDP, length 635
I guess I want the transaction to go between the two private ip addresses.
Is there way to do this?
Natambu Obleton
Network Engineer
FastTrack Communications
nobleton(a)fasttrackcomm.net
(970) 247-3366 office
(970) 247-2426 fax
Hi All,
I'm trying to setup a redundant environment with DNS SRV records, 2 (or
more) SIP registration servers, and Asterisk gateways.
Basically I've setup both OpenSER clients to t_replicate each other the
registration message if its coming from a client, and save it to the
database or to memory when its coming from the other OpenSER server.
However, every once in a while, I get message to big, and or duplicate
messages (WARNING: warning skipped -- too big, or ERROR:
warning_builder: buffer size exceeded, submit_query: Duplicate entry
,db_insert: Error while submitting query...)
While it seems to work in general, I was not sure that this is the
"right" way to do it.
I'm attaching my openser.cfg of one of the machines; the other is more
or less identical...
Thanks
# ----------- global configuration parameters ------------------------
debug=9 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
listen=172.28.132.20
rev_dns=no # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/openser_fifo"
alias="mydomain.com"
# ------------------ module loading ----------------------------------
loadmodule "/usr/local/lib/openser/modules/mysql.so"
loadmodule "/usr/local/lib/openser/modules/sl.so"
loadmodule "/usr/local/lib/openser/modules/tm.so"
loadmodule "/usr/local/lib/openser/modules/rr.so"
loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
loadmodule "/usr/local/lib/openser/modules/usrloc.so"
loadmodule "/usr/local/lib/openser/modules/registrar.so"
loadmodule "/usr/local/lib/openser/modules/textops.so"
loadmodule "/usr/local/lib/openser/modules/auth.so"
loadmodule "/usr/local/lib/openser/modules/auth_db.so"
loadmodule "/usr/local/lib/openser/modules/lcr.so"
loadmodule "/usr/local/lib/openser/modules/xlog.so"
# ----------------- setting module-specific parameters ---------------
modparam("usrloc", "db_mode", 2)
modparam("usrloc|lcr|auth_db|avpops|group","db_url","mysql://openser:ope
nserrw(a)voip-db.mydomain.com/openser")
modparam("auth_db", "calculate_ha1", yes) modparam("auth_db",
"password_column", "password")
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 >= 2048 ) {
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) {
route(1);
};
# Handle Request logic here
if (uri==myself) {
if (method=="REGISTER") {
route(2);
exit;
}
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
};
if (!load_gws()) {
sl_send_reply("500", "Server Internal Error -
Cannot load gateways");
exit;
};
if (!next_gw()) {
sl_send_reply("503", "Service not available, no
gateways found");
log (1,"No more gateways");
} else {
log (1,"Found a gateway");
}
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;
}
route[2] {
#handle all Registration here....
if (search("^(Contact|m):
.*(a)(voip.mydomain.com)")){
log(1, "ALERT: someone trying to set
aor==server address\n");
sl_send_reply("476", "Server address in
contacts is not allowed" );
exit;
};
# challenge/response
#if a registration request is coming from another ser server, it
means that's it's already authenticated the user and wrote
#an entry in the database, so lets just write it into our
memory.
if (src_ip==172.28.132.21) {
save_memory("location");
log(1, "Registered replicated user from
Proxy");
exit;
};
# this is a new request, lets check that the user is
valid.
if (!www_authorize("mydomain.com",
"subscriber")) {
www_challenge("mydomain.com", "0");
log(1, "Authentication challenge issued.
Waiting for reply.\n");
exit;
};
# Authentication successful, add entry to our Contact database
log(1, "Authentication challenge reply ok.\n");
if (!save("location")) {
sl_reply_error();
log(1, "ALERT: Unable to save URI to
location database.\n");
} else {
# and replicate the request to the backup server
if (!src_ip==172.28.132.21) {
log(1, "REPLICATE: Replicating
register request\n");
t_replicate("sip:172.28.132.21:5060");
};
};
}
Hi all
Is any one here in the group used any call management software for SER
I have seen software for Asterisk hudlite, does any kind of software for SER
any one tested and report their experiences
why iam asking is
after Ser running some days
i get this error in my syslog
sl_reply_error used: I'm terribly sorry, server error occured (2/SL)
that time my users not able to make call, i keep get fast busy, that time i
need to reboot the Ser
so calls again start going out side
If any kind of monitoring software available or do automated job, when ever
found that calls are not going
then restart SER or some kind of solution should help the admin to chek the
logs, when the SER restarted.
If not some one need to monitor constantly or wait for customer to call to
support \the calls are not going
then we restart service will back the services, but i feel bad practice,
before customer realise some problem with
server, the Admin able to fix the problem
any suggestions will be appriciated.
ram,
hello,
I want to add Remote-Party-ID header in route block and change it in
failure_route block.
the problem is that after the failure_route block the message sent out
has two Remote-Party-ID headers.
in failure_route I am using remove_hf("Remote-Party-ID")
scenario:
original invite has no Remote-Party-ID header
in route block I use: remove_hf("Remote-Party-ID"); append_rpid_hf("<",
">;party=calling;privacy=full")
in failure_route block I use: remove_hf("Remote-Party-ID");
append_rpid_hf("<", ">;party=calling;privacy=off")
the invite sent out after failure_route block has two Remote-Party-ID
headers, one with privacy=full and another with privacy=off.
is there a way to correct the problem ?
from what I understand the failure_route block works on a copy of the
original message, but the original message has no Remote-Party-ID
header, so why the header from the route block is still visible ?
on the other hand if the header added from the route block is visible
why is it no seen by the remove_hf function ?
thanks,
Razvan Radu
Hi guys,
I got my SER running "so far" and i trying to explore some commands using
serctl.
Using serctl moni gives me error ...
[: -ne: unexpected operator
and using serctl domain show gives me...
$ serctl domain show
500 command 'domain_dump' not available
Is this all crucial on my server? Did i missed something?
I appreciate any kind of assistance...:)
regards,
josel
I have configured 2 media proxy servers on my machine which
has 3 network cards, two of which connect to the external world
via different PUBLIC IP and one network card connects to the
internal world via PRIVATE IP.
I have two copies of mediaproxy.ini for each instance of mediaproxy,
each handling the SIP media proxy for each of the external interface
( and different names ).
My question is about [MediaProxy] section for each of the mediaproxy.ini,
do I specify the same socket file name or different socket file name ?
If I specify the same file name, it would mean that two instances of the
mediaproxy server are using the same socket filename for communication.
Is it a problem ?
And I noticed that if one instance is killed, the socket file will be deleted,
it would then mean the second surviving instance will suffer. Isn't it right ?
According to the documentation, this socket file name is where the mediaproxy
receives the command from the proxydispatcher, and therefore it is something
for the proxydispatcher to know. But if I configured different file name
from the default ( specified in two different mediaproxy.ini ), how would the
proxydispatcher get to know about using a different file name ?
Appreciate any comments.
Hi,
I make an experiment as follows.
- Person A send five calls to person B via the SER
(1.Person A send five calls to the SER with SIP over TCP(one socket per
call))
(2.The SER forwards five calls to person B with SIP over TCP(one socket per
call))
So,I added "forward_tcp(uri:host,uri:port);" to ser.cfg file.
In the result,the SER can forward five calls to B with SIP over TCP(only one
socket)
But,the SER can't forward five calls to B with one socket per call.
How can the SER forward the calls to B with one socket per call?
Is this possible ?
Thanks,
Taro
Hi all,
As our requirements scale (number of DIDs, number of users, number of
simultaneous calls, etc) it is very apparent that our needs require us
to move from a softswitch/pbx application environment onto a Sip
Router based platform. While I have been able to run though the
documentation and bring online a working OpenSER platform I am still
confused about DID handling in the system.
I need to be able to take a series of DIDs that we are being passed
from the carrier and forward the call to the end user's switch
untouched (i.e. 18005551212@me needs to be passed to
18005551212@customer). I have been reading through aliasing but this
does not seem to be what I need (because the customer's switch does
not see the original DID). Ideally I need to be able to maintain a
large inventory of DIDs and assign them to customers without touching
the configuration files when the association is made.
How do I accomplish this? What do I need to add/configure in the
system? How do I configure this redirect/mapping/proper terminology
correctly?
Thanks in advance,
Max
--
Max Clark
http://www.clarksys.com
Hi all,
I am trying to understand the difference between mediaproxy and
rtpproxy. Where would I deploy one vs. the other?
TIA,
Max
--
Max Clark
http://www.clarksys.com