[Users] 2 Instances of OpenSER on the same server

Klaus Darilion klaus.mailinglists at pernau.at
Mon Jan 8 13:55:47 CET 2007


Gerardo Amaya wrote:
> 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 ####

I guess you should rename it openser2_internal
                                     ^

and make sure that openser2 does use the proper config (use -f to 
specify the config file)

regards
klaus

> 
> 
> 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
> 
> 
> 
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users


-- 
Klaus Darilion
nic.at





More information about the Users mailing list