Hello All. I'm trying to install 2 Instances of openser on the same machine with the following interfaces:
Instance #1 -----> 172.16.18.2 and 192.168.1.112 Instance #2 -----> 172.16.1.2 and 192.168.1.113
I made one installation on the default OpenSER folders and one in the /usr/loca/openser_1/
The configuration went quite smooth. The first instance of the server is running with no problem at all, but when I try to start the second instance I got an error that it was unable to resolve the IP addresses I add the following lines to the /etc/hosts file:
### OpenSER 1st interface configuration #### 192.168.1.112 openser1_internal 172.16.18.2 openser1_external ### OpenSER 1st Interface configuration ####
### OpenSER 2nd Interface configuration #### 192.168.1.113 openser1_internal 172.16.1.2 openser1_external ### OpenSER 2nd Interface configuration ####
After that Now I have the following error:
Jan 5 17:26:30 atel-router ./openser[17772]: ERROR: tcp_init: bind(7, 0x813e194, 16) on 192.168.1.112:5060 : Address already in use
Any Help will be appreciated, of better is there a How-to on OpenSER multiple instances please let me know.
Thanks in advance
Gerardo Amaya
Here is the configuration file for each instance:
OpenSER.cfg Instance #1
# # $Id: ser.cfg,v 1.25.2.1 2005/02/18 14:30:44 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
debug=5 # 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) listen=192.168.1.112 listen=172.16.18.2 port=5060 mhomed=1 children=4 fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database 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/uri.so" loadmodule "/usr/local/lib/openser/modules/uri_db.so" loadmodule "/usr/local/lib/openser/modules/domain.so" loadmodule "/usr/local/lib/openser/modules/mediaproxy.so" loadmodule "/usr/local/lib/openser/modules/nathelper.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/local/lib/openser/modules/auth.so" loadmodule "/usr/local/lib/openser/modules/auth_db.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 and mediaproxy params -- modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1) modparam("nathelper", "rtpproxy_sock", "unix:/var/run/rtpproxy.sock") # -- End of nathelper and mediaproxy params --
# -- auth_db database params for domain.so module to work properly --
modparam("auth_db|domain|uri_db|usrloc","db_url","mysql://root:codevoz@localhost/openser") modparam("auth_db", "calculate_ha1", 1) modparam("auth_db", "password_column", "password") # -- End of database params --
# ------------------------- 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"); return; }; if (msg:len >= 2048 ) { sl_send_reply("513", "Message too big"); return; };
if (method == "REGISTER" || ! search("^Record-Route:")) {
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
}
if (method == "INVITE") { if (dst_ip == 192.168.1.112){ if (force_rtp_proxy("FAII")) t_on_reply("1"); } else if (dst_ip == 172.16.18.2){ if (force_rtp_proxy("FAEI")) t_on_reply("1"); } else if (dst_ip == 192.168.1.112){ if (force_rtp_proxy("FAIE")) t_on_reply("1"); } else if (dst_ip == 172.16.18.2){ if (force_rtp_proxy("FAEE")) t_on_reply("1"); } }; # 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
# This is the Call Tear Down Section if (method=="BYE" || method=="CANCEL") { unforce_rtp_proxy(); };
route(1); }
route[1] {
t_on_reply("1");
#force_rtp_proxy(); t_relay("udp:192.168.1.2:5060");
}
onreply_route[1] {
if (!search("^Content-Length:[ ]*0")) { force_rtp_proxy(); };
if (nat_uac_test("1")) { fix_nated_contact(); }; }
OpenSER.cfg Instance #2 # # $Id: ser.cfg,v 1.25.2.1 2005/02/18 14:30:44 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
debug=5 # 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) listen=udp:192.168.1.113:5060 listen=udp:172.16.1.2:5060 #port=5060 mhomed=1 children=4 fifo="/tmp/ser_fifo2"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/local/lib/openser/modules/mysql.so"
loadmodule "/usr/local/openser_1/lib/openser/modules/sl.so" loadmodule "/usr/local/openser_1/lib/openser/modules/tm.so" loadmodule "/usr/local/openser_1/lib/openser/modules/rr.so" loadmodule "/usr/local/openser_1/lib/openser/modules/maxfwd.so" loadmodule "/usr/local/openser_1/lib/openser/modules/usrloc.so" loadmodule "/usr/local/openser_1/lib/openser/modules/registrar.so" loadmodule "/usr/local/openser_1/lib/openser/modules/textops.so" loadmodule "/usr/local/openser_1/lib/openser/modules/uri.so"loadmodule "/usr/local/openser_1/lib/openser/modules/nathelper.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/local/openser_1/lib/openser/modules/auth.so" loadmodule "/usr/local/openser_1/lib/openser/modules/auth_db.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 and mediaproxy params -- modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1) modparam("nathelper", "rtpproxy_sock", "unix:/var/run/rtpproxy_1.sock") # -- End of nathelper and mediaproxy params --
# -- auth_db database params for domain.so module to work properly --
modparam("auth_db|domain|uri_db|usrloc","db_url","mysql://root:codevoz@localhost/openser") modparam("auth_db", "calculate_ha1", 1) modparam("auth_db", "password_column", "password") # -- End of database params --
# ------------------------- 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"); return; }; if (msg:len >= 2048 ) { sl_send_reply("513", "Message too big"); return; };
if (method == "REGISTER" || ! search("^Record-Route:")) {
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
}
if (method == "INVITE") { if (dst_ip == 192.168.1.113){ if (force_rtp_proxy("FAII")) t_on_reply("1"); } else if (dst_ip == 172.16.1.2){ if (force_rtp_proxy("FAEI")) t_on_reply("1"); } else if (dst_ip == 192.168.1.113){ if (force_rtp_proxy("FAIE")) t_on_reply("1"); t_on_reply("1"); } else if (dst_ip == 192.168.1.113){ if (force_rtp_proxy("FAIE")) t_on_reply("1"); } else if (dst_ip == 172.16.1.2){ if (force_rtp_proxy("FAEE")) t_on_reply("1"); } }; # 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
# This is the Call Tear Down Section if (method=="BYE" || method=="CANCEL") { unforce_rtp_proxy(); };
route(1); }
route[1] {
t_on_reply("1");
#force_rtp_proxy(); t_relay("udp:192.168.1.2:5060");
}
onreply_route[1] {
if (!search("^Content-Length:[ ]*0")) { force_rtp_proxy(); };
if (nat_uac_test("1")) { fix_nated_contact(); }; }
loadmodule "/usr/local/openser_1/lib/openser/modules/uri_db.so" loadmodule "/usr/local/openser_1/lib/openser/modules/domain.so" loadmodule "/usr/local/openser_1/lib/openser/modules/mediaproxy.so"
ifconfig output
eth0 Link encap:Ethernet HWaddr 00:0E:2E:0A:61:68 inet addr:172.16.18.2 Bcast:172.16.18.255 Mask:255.255.255.0 inet6 addr: fe80::20e:2eff:fe0a:6168/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:216465 errors:0 dropped:0 overruns:0 frame:0 TX packets:323925 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:18190685 (17.3 MiB) TX bytes:118579358 (113.0 MiB) Interrupt:185 Base address:0xaf00
eth1 Link encap:Ethernet HWaddr 00:0E:2E:06:EC:17 inet addr:172.16.1.2 Bcast:172.16.1.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:209 Base address:0xce00
eth2 Link encap:Ethernet HWaddr 00:0C:76:BE:E5:87 inet addr:192.168.1.112 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:76ff:febe:e587/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1155321 errors:0 dropped:0 overruns:0 frame:0 TX packets:664343 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:187622098 (178.9 MiB) TX bytes:125573054 (119.7 MiB) Interrupt:217 Base address:0xed00
eth2:0 Link encap:Ethernet HWaddr 00:0C:76:BE:E5:87 inet addr:192.168.1.113 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:217 Base address:0xed00