[Users] Multiple IP in one box

Klaus Darilion klaus.mailinglists at pernau.at
Thu Nov 24 10:32:56 CET 2005


Do I get your scenario right.

               |
   +-          |           -+
   |        public IP       |
              NAT
      priv           priv
-----LAN1           LAN2-------
   |                        |
   +-                      -+


LAN 1 can ping LAN 2 and vice versa?

LAN 1 and LAN 2 can access the Internet and get NATed?

If yes, I would setup openser to listen on the public interface only. It 
should do NAT traversal for NATed clients. I'm not sure if this will 
work (depending on the NAT implementation), but openser should handle 
NATed clients in LAN 1 and LAN 2 like NATed clients somewhere in the 
Internet.

regards
klaus

Fernando Rodriguez wrote:
> Iqbal,
> 
> Actualy the conection between the atas is made the problem is that only one
> side can hear the other so the voice is not going tru.
> 
> Of I run ser/openser with out forking I see it listening to all the ip
> addresses, I think is more an issue of using media proxy or rtpproxy.
> 
> The 10.xx and 192.169.xx networks can ping and do anything to the internet
> the problem is from the internet to the inside ..
> 
> 
> 
> -----Mensaje original-----
> De: Iqbal [mailto:iqbal at gigo.co.uk] 
> Enviado el: Martes, 22 de Noviembre de 2005 10:38 a.m.
> Para: Fernando Rodriguez
> Asunto: Re: [Users] Multiple IP in one box
> 
> Hi
> 
> You have 3 IP to which you want ser to listen to, to allow ATA to make 
> calls, why not just tell the ATA the sip proxy addess, instead and let 
> it deal with the NAT issue and henceonly listen to one IP address, I 
> mean can your ATA on the 10.254 network see the public IP address vis NA 
> translation. If not get SER to listen to all the IP address, by using 
> the listen command
> 
> iqbal
> 
> Fernando Rodriguez wrote:
> 
> 
>>Im trying to use openser as a Proxy for different interfaces in one 
>>box I have tried almos averithing to make it work properly but for 
>>some reason I cant.
>>
>> 
>>
>>Here is my setup and I hope someone can helpme  or guide me in the 
>>right way.
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>>One Linux-OpenSer box with 4 netcards
>>
>> 
>>
>>1 Has a public ip
>>
>>2 Has a 192.168.23.10 ip
>>
>>3 Has a 10.254.10.240 ip
>>
>>4 Is not being used
>>
>> 
>>
>>I want to be able to make calls from the ATAs in all the different 
>>networks, but the fact is that as it is now I cant, I want to know if 
>>I have to set up multiple media proxies or rtpproxy if I have to use a 
>>proxy dispatcher  or not.
>>
>> 
>>
>>This is my configuration file
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>># ----------- global configuration parameters ------------------------
>>
>> 
>>
>>#debug=9         # 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/openser_fifo"
>>
>>fifo_db_url="mysql://openser:openserrw@localhost/openser"
>>
>> 
>>
>>alias="test.net"
>>
>># ------------------ module loading ----------------------------------
>>
>> 
>>
>>#loadmodule "/usr/lib/openser/modules/acc.so"
>>
>>loadmodule "/usr/lib/openser/modules/mysql.so"
>>
>>loadmodule "/usr/lib/openser/modules/sl.so"
>>
>>loadmodule "/usr/lib/openser/modules/tm.so"
>>
>>loadmodule "/usr/lib/openser/modules/rr.so"
>>
>>loadmodule "/usr/lib/openser/modules/maxfwd.so"
>>
>>loadmodule "/usr/lib/openser/modules/usrloc.so"
>>
>>loadmodule "/usr/lib/openser/modules/registrar.so"
>>
>>loadmodule "/usr/lib/openser/modules/auth.so"
>>
>>loadmodule "/usr/lib/openser/modules/auth_db.so"
>>
>>loadmodule "/usr/lib/openser/modules/uri.so"
>>
>>loadmodule "/usr/lib/openser/modules/uri_db.so"
>>
>>loadmodule "/usr/lib/openser/modules/domain.so"
>>
>>loadmodule "/usr/lib/openser/modules/mediaproxy.so"
>>
>>loadmodule "/usr/lib/openser/modules/nathelper.so"
>>
>>loadmodule "/usr/lib/openser/modules/textops.so"
>>
>> 
>>
>> 
>>
>># ----------------- setting module-specific parameters ---------------
>>
>># -- usrloc params --
>>
>> 
>>
>>modparam("usrloc", "db_mode", 2)
>>
>>modparam("usrloc", "timer_interval", 10)
>>
>>modparam("usrloc", "db_url", 
>>"mysql://openser:openserrw@localhost/openser")
>>
>> 
>>
>># -- auth params --
>>
>>modparam("auth_db", "db_url", 
>>"mysql://openser:openserrw@localhost/openser")
>>
>>modparam("auth_db", "calculate_ha1", yes)
>>
>>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)
>>
>> 
>>
>> 
>>
>># -- tm Params --
>>
>>modparam("tm", "fr_inv_timer", 45 )
>>
>>modparam("tm", "fr_timer", 12 )
>>
>> 
>>
>>modparam("registrar", "nat_flag", 6)
>>
>> 
>>
>> 
>>
>>modparam("nathelper", "rtpproxy_disable", 1)
>>
>>#modparam("nathelper", "natping_interval", 30)
>>
>>#modparam("nathelper", "sipping_from", "sip:ping at sipserver.net")
>>
>> 
>>
>> 
>>
>>#modparam("mediaproxy", "ping_nated_only", 0)   # Ping only clients 
>>behind NAT
>>
>>modparam("mediaproxy", "natping_interval", 20)
>>
>>modparam("mediaproxy", "mediaproxy_socket", "/var/run/mediaproxy.sock")
>>
>> 
>>
>>modparam("registrar", "nat_flag", 6)
>>
>> 
>>
>> 
>>
>># -------------------------  request routing logic -------------------
>>
>> 
>>
>># main routing logic
>>
>> 
>>
>>route {
>>
>> 
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        # Procesos de Limpieza
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        if (!mf_process_maxfwd_header("10")) {
>>
>>                sl_send_reply("483", "Too Many Hops");
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        if (msg:len > max_len) {
>>
>>                sl_send_reply("513", "Message Overflow");
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        # Registro
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        if (method!="REGISTER") {       
>>
>>        log(1, "Area de Registro\n");
>>
>> 
>>
>>                record_route();
>>
>>        };
>>
>> 
>>
>> 
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        # Call Tear Down Section
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        if (method=="BYE" || method=="CANCEL") {
>>
>>                log(1, "Proceso de fin de llamada\n");
>>
>>                end_media_session();
>>
>>        };
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        # Loose Route Section
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        if (loose_route()) {
>>
>> 
>>
>>                if (has_totag() && (method=="INVITE" || method=="ACK")) {
>>
>> 
>>
>>                        if (client_nat_test("3") || 
>>search("^Route:.*;nat=yes")) {
>>
>>                                setflag(6);
>>
>>                                use_media_proxy();
>>
>>                        };
>>
>>                };
>>
>> 
>>
>>                route(1);
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        # Call Type Processing Section
>>
>>        # 
>>-----------------------------------------------------------------
>>
>> 
>>
>>        if (uri!=myself) {
>>
>>                route(1);
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        if (uri==myself) {
>>
>> 
>>
>>                if (method=="CANCEL") {
>>
>>                        route(3);
>>
>>                        break;
>>
>>                } else if (method=="INVITE") {
>>
>>                        route(3);
>>
>>                        break;
>>
>>                } else  if (method=="REGISTER") {
>>
>>                        route(2);
>>
>>                        break;
>>
>>                };
>>
>> 
>>
>>                lookup("aliases");
>>
>>                if (uri!=myself) {
>>
>>                        route(1);
>>
>>                        break;
>>
>>                };
>>
>> 
>>
>>                if (!lookup("location")) {
>>
>>                        sl_send_reply("404", "User Not Found");
>>
>>                        break;
>>
>>                };
>>
>>        };
>>
>> 
>>
>>        route(1);
>>
>>}
>>
>> 
>>
>>route[1] {
>>
>> 
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        # Default Message Handler
>>
>>        # 
>>-----------------------------------------------------------------
>>
>> 
>>
>>        t_on_reply("1");
>>
>> 
>>
>>        if (!t_relay()) {
>>
>> 
>>
>>                if (method=="INVITE" || method=="ACK") {
>>
>>                        end_media_session();
>>
>>                };
>>
>> 
>>
>>                sl_reply_error();
>>
>>        };
>>
>>}
>>
>> 
>>
>>route[2] {
>>
>> 
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        # REGISTER Message Handler
>>
>>        # ----------------------------------------------------------------
>>
>> 
>>
>>        sl_send_reply("100", "Trying");
>>
>> 
>>
>>#               if(dst_ip==192.168.1.1) {
>>
>>#                       log("message received on loopback interface\n");
>>
>>#                setflag(7);
>>
>>#                fix_nated_register();
>>
>>#                force_rport();
>>
>>#        };
>>
>>#               if(dst_ip==192.168.108.253) {
>>
>>#                       log("message received on loopback interface\n");
>>
>>#                setflag(6);
>>
>>#                fix_nated_register();
>>
>>#                force_rport();
>>
>>#        };
>>
>> 
>>
>>        if (!www_authorize("test.net","subscriber")) {
>>
>>                www_challenge("test.net","0");
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        if (!check_to()) {
>>
>>                sl_send_reply("401", "Unauthorized");
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        consume_credentials();
>>
>> 
>>
>>        if (!save("location")) {
>>
>>                sl_reply_error();
>>
>>        };
>>
>>fix_nated_register();
>>
>>}
>>
>> 
>>
>>route[3] {
>>
>> 
>>
>>        # 
>>-----------------------------------------------------------------
>>
>>        # CANCEL and INVITE Message Handler
>>
>>        # 
>>-----------------------------------------------------------------
>>
>> 
>>
>>        lookup("aliases");
>>
>>        if (uri!=myself) {
>>
>>                route(1);
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        if (!lookup("location")) {
>>
>>                sl_send_reply("404", "User Not Found");
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        if (method=="CANCEL") {
>>
>>                route(1);
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        if (!proxy_authorize("","subscriber")) {
>>
>>                proxy_challenge("","0");
>>
>>                break;
>>
>>        } else if (!check_from()) {
>>
>>                sl_send_reply("403", "Use From=ID");
>>
>>                break;
>>
>>        };
>>
>> 
>>
>>        consume_credentials();
>>
>> 
>>
>>        # 
>>------------------------------------------------------------------------
>>
>>        #                          Reglas de LLamada
>>
>>        # 
>>------------------------------------------------------------------------
>>
>> 
>>
>>                if(uri=~"(^sip:1[0-9]*@.*)" && 
>>from_uri=~"(^sip:2[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 1xxx a 2xxx\n");
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                 if(uri=~"(^sip:1[0-9]*@.*)" && 
>>from_uri=~"(^sip:3[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 1xxx a 3xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                if(uri=~"(^sip:1[0-9]*@.*)" && 
>>from_uri=~"(^sip:4[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 1xxx a 4xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                 if(uri=~"(^sip:2[0-9]*@.*)" && 
>>from_uri=~"(^sip:1[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 2xxx a 1xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                 if(uri=~"(^sip:2[0-9]*@.*)" && 
>>from_uri=~"(^sip:3[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 2xxx a 3xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                if(uri=~"(^sip:2[0-9]*@.*)" && 
>>from_uri=~"(^sip:4[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 2xxx a 4xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                 if(uri=~"(^sip:3[0-9]*@.*)" && 
>>from_uri=~"(^sip:1[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 3xxx a 1xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                 if(uri=~"(^sip:3[0-9]*@.*)" && 
>>from_uri=~"(^sip:2[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 3xxx a 2xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                if(uri=~"(^sip:3[0-9]*@.*)" && 
>>from_uri=~"(^sip:4[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 3xxx a 4xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                 if(uri=~"(^sip:4[0-9]*@.*)" && 
>>from_uri=~"(^sip:1[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 4xxx a 1xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                 if(uri=~"(^sip:4[0-9]*@.*)" && 
>>from_uri=~"(^sip:2[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 4xxx a 2xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>                if(uri=~"(^sip:4[0-9]*@.*)" && 
>>from_uri=~"(^sip:3[0-9]*@.*)") {
>>
>>                log(1, "Llamada de extenciones 4xxx a 3xxx\n");
>>
>>                fix_contact();
>>
>>                use_media_proxy();
>>
>>                };
>>
>> 
>>
>>        route(1);
>>
>>}
>>
>> 
>>
>>onreply_route[1] {
>>
>> 
>>
>>        #if ((isflagset(6) || isflagset(7)) && 
>>(status=~"(180)|(183)|2[0-9][0-9]")) {
>>
>> 
>>
>>            #    if (!search("^Content-Length:\ +0")) {
>>
>>                        log(1, "Mensaje de prueba en reply route\n");
>>
>>                fix_contact();
>>
>>                        use_media_proxy();
>>
>>             #   };
>>
>>       # };
>>
>> 
>>
>>}
>>
>> 
>>
>> 
>>
>>As you can see I use different starting numbers for the ATA for each 
>>of the interfaces, I tested using only one mediaproxy listening to 
>>127.0.0.1 but I have tried a lot of configurations, all the clients 
>>register perfectly but cant seem to call one another exept the ones 
>>that are on the same interface.
>>
>> 
>>
>>Im using fedora core 3 with openser 0.95 mediaproxy 1.42
>>
>> 
>>
>>Hope any one can help me or point me the way to do this of if its not 
>>viable or cant be done.
>>
>> 
>>
>>Thanks a lot for your kind help
>>
>> 
>>
>>Yours truly
>>
>> 
>>
>> 
>>
>>Fernando Rodriguez V.
>>
>>frod at aitelecom.net <mailto:frod at aitelecom.net>
>>
>>AITelecom S.A. de C.V.
>>
>>http://www.aitelecom.net
>>
>> 
>>
>> 
>>
>> 
>>
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>Users mailing list
>>Users at openser.org
>>http://openser.org/cgi-bin/mailman/listinfo/users
>> 
>>
> 
> 
> 
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
> 
> 





More information about the sr-users mailing list