[Serusers] problem getting calls to my gateway

Rick Gocher rgocher at coptalk.com
Mon Dec 8 21:26:37 CET 2003


Hi Jan,

Thank you for your help, I'm relieved but not surprised that it's me and 
not the cisco gateway.  I have looked over all the example files in the 
ser-0.8.12/examples.  I see only some which have the below listed script 
logic so I'm a little confused about where I actually should append this in 
the ser.cfg.  I have tried at the top of the routing and near the 
bottom.  I have been able to dialout with X-ten lite phone using no 
registration however I can't even get dialtone when using the ata186 and 
having it register.

Rick

At 07:34 PM 12/8/2003 +0100, Jan Janak wrote:
>The problem is that you do not process REGISTER messages, instead your
>proxy server forwards them to the PSTN gateway which replies with
>"Method not allowed".
>
>You should do something like:
>
>if (uri==myself) {
>         if (method=="REGISTER") {
>                 save("location");
>                 break;
>         };
>};
>
>See the default configuration file for more details.
>
>   Jan.
>
>On 07-12 16:19, Rick Gocher wrote:
> > Hi everyone, thank you for your responses. Here is the latest copy of my
> > ngrep.  I seem to have the ATA box trying to register with both ports 
> (uid0
> > Rick and uid1 6044844000) however when ser tries to forward to my
> > gateway,  I get the Method not allowed.  I also noticed that no numbers I
> > try to dial ever get passed to the gateway, is that because it's failing
> > initial auth?  I have registered the user Rick using serctl and placed the
> > uid into the free-pstn and local groups...
> >
> > I'm including my ser.cfg as I may have changed things since last time....
> >
> > thanks again,
> > Rick
> >
> > ##
> > U 64.189.165.2065060 -> 64.189.165.2055060REGISTER sip:64.189.165.205
> > SIP/2.0..Via SIP/2.0/UDP 64.189.165.2065060..From
> > sip:Rick at 64.189.165.205;tag=3484959312..To 
> sip:Rick at 64.189.165.205..Call-ID
> > 3859574384 at 64.189.165.206..CSeq 3 REGISTER..Contact <sip:Rick@
> > 64.189.165.2065060;transport=udp>;expires=3600..User-Agent Cisco ATA
> > 186  v2.16.2 ata18x (030909a)..Content-Length
> > 0....
> > #
> > U 64.189.165.2055060 -> 65.189.155.1015060 REGISTER sip:64.189.165.205
> > SIP/2.0..Max-Forwards 10..Via SIP/2.0/UDP 64.189.165.205;branch=0..Via
> > SIP/2.0/UDP 64.189.165.2065060..From
> > sip:Rick at 64.189.165.205;tag=3484959312..To 
> sip:Rick at 64.189.165.205..Call-ID
> > 3859574384 at 64.189.165.206..CSeq
> > 3REGISTER..Contact<sip:Rick at 64.189.165.2065060;
> > transport=udp>;expires=3600..User-Agent Cisco ATA 186  v2.16.2 ata18x
> > (030909a)..Content-Length
> > 0....
> >
> > #
> > U 65.189.155.1015060 -> 64.189.165.2055060SIP/2.0 405 Method Not
> > Allowed..Via SIP/2.0/UDP 64.189.165.205;branch=0,SIP/2.0/UDP
> > 64.189.165.2065060..From sip:Rick at 64.189.165.205;tag=3484959312..To
> > sip:Rick at 64.189.165.205..Call-ID 3859574384 at 64.189.165.206..CSeq 3
> > REGISTER..Allow INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER,
> > SUBSCRIBE, NOTIFY, INFO..Content-Length
> > 0....
> > #
> > U 64.189.165.2055060 -> 64.189.165.2065060 SIP/2.0 405 Method Not
> > Allowed..Via SIP/2.0/UDP 64.189.165.2065060..From
> > sip:Rick at 64.189.165.205;tag=3484959312..To sip:Rick@
> > 64.189.165.205..Call-ID 3859574384 at 64.189.165.206..CSeq 3 REGISTER..Allow
> > INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY,
> > INFO..Content-Length0....
> >
> > #
> > U 64.189.165.2065060 -> 64.189.165.2055060REGISTER sip:64.189.165.205
> > SIP/2.0..Via SIP/2.0/UDP 64.189.165.2065060..From
> > <sip:6044844000 at 64.189.165.205;user=phone>;tag=4073070426..To
> > <sip:6044844000 at 64.189.165.205;user=phone>..Call-ID
> > 3464081553 at 64.189.165.206..CSeq 3 REGISTER..Contact
> > <sip:6044844000 at 64.189.165.2065060;user=phone;
> > transport=udp>;expires=3600..User-Agent Cisco ATA 186  v2.16.2 ata18x
> > (030909a)..Content-Length
> > 0....
> >
> > #
> > U 64.189.165.2055060 -> 65.189.155.1015060REGISTER sip64.189.165.205
> > SIP/2.0..Max-Forwards 10..Via SIP/2.0/UDP 64.189.165.205;branch=0..Via
> > SIP/2.0/UDP 64.189.165.206
> > 5060..From<sip:6044844000 at 64.189.165.205;user=phone>;  tag=4073070426..To
> > <sip:6044844000 at 64.189.165.205;user=phone>..Call-ID
> > 3464081553 at 64.189.165.206..CSeq 3 REGISTER..Contact
> > 
> <sip:6044844000 at 64.189.165.2065060;user=phone;transport=udp>;expires=3600..User-Agent 
>
> > Cisco ATA 186  v2.16.2 ata18x
> > (030909a)..Content-Length
> > 0....
> > #
> > U 65.189.155.1015060 -> 64.189.165.2055060 SIP/2.0 405 Method Not
> > Allowed..Via SIP/2.0/UDP 64.189.165.205;branch=0,SIP/2.0/UDP
> > 64.189.165.2065060..From
> > 
> <sip:6044844000 at 64.189.165.205;user=phone>;tag=4073070426..To<sip:6044844000 at 64.189.165.205;user= 
>
> > phone>..Call-ID 3464081553 at 64.189.165.206..CSeq 3 REGISTER..Allow INVITE,
> > OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY,
> > INFO..Content-Length 0....
> > #
> > U 64.189.165.2055060 -> 64.189.165.2065060 SIP/2.0 405 Method Not
> > Allowed..Via SIP/2.0/UDP 64.189.165.2065060..From
> > <sip:6044844000 at 64.189.165.205;user=phone>;tag=4073070426..To
> > <sip:6044844000 at 64.189.165.205;user=phone>..Call-ID
> > 3464081553 at 64.189.165.206..CSeq 3 REGISTER..Allow INVITE, OPTIONS, BYE,
> > CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY, INFO..Content-Length
> > 0....
> >
> > # ----------- global configuration parameters ------------------------
> >
> > debug=7        # debug level (cmd line: -dddddddddd)
> > fork=yes
> > log_stderror=yes        # (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"
> >
> > #
> >  # $Id: pstn.cfg,v 1.2 2003/06/03 03:18:12 jiri Exp $
> >  #
> >  #
> >
> >  # ------------------ module loading ----------------------------------
> > loadmodule "/usr/lib/ser/modules/tm.so"
> > loadmodule "/usr/lib/ser/modules/sl.so"
> > loadmodule "/usr/lib/ser/modules/acc.so"
> > loadmodule "/usr/lib/ser/modules/rr.so"
> > loadmodule "/usr/lib/ser/modules/usrloc.so"
> > loadmodule "/usr/lib/ser/modules/uri.so"
> > loadmodule "/usr/lib/ser/modules/registrar.so"
> > loadmodule "/usr/lib/ser/modules/maxfwd.so"
> > loadmodule "/usr/lib/ser/modules/mysql.so"
> > loadmodule "/usr/lib/ser/modules/auth.so"
> > loadmodule "/usr/lib/ser/modules/auth_db.so"
> > loadmodule "/usr/lib/ser/modules/textops.so"
> > loadmodule "/usr/lib/ser/modules/group.so"
> > modparam("auth_db", "db_url","sql://ser:secret@localhost/ser")
> > modparam("usrloc", "db_url", "sql://ser:secret@localhost/ser")
> >
> >  # ----------------- setting module-specific parameters ---------------
> >
> >  modparam("auth_db", "calculate_ha1", yes)
> >  modparam("auth_db", "password_column", "password")
> > modparam("usrloc", "db_mode", 2)
> >  # -- acc params --
> > # modparam("acc", "log_level", 1)
> >  # that is the flag for which we will account -- don't forget to
> >  # set the same one :-)
> > # modparam("acc", "log_flag", 1 )
> >
> >  # -------------------------  request routing logic -------------------
> >
> >  # main routing logic
> >
> >  route{
> >
> >        /* ********* ROUTINE CHECKS  ********************************** */
> >
> >        # filter too old messages
> >        if (!mf_process_maxfwd_header("10")) {
> >                log("LOG: Too many hops\n");
> >                sl_send_reply("483","Too Many Hops");
> >                break;
> >        };
> >                 if (msg:len >=  max_len ) {
> >                 sl_send_reply("513", "Message too big");
> >                 break;
> >         };
> >        /* ********* RR ********************************** */
> >
> >        /* grant Route routing if route headers present */
> >        if (loose_route()) { t_relay(); break; };
> >
> >        /* record-route INVITEs -- all subsequent requests must visit us */
> >        if (method=="INVITE") {
> >                record_route();
> >        };
> >
> >    # now check if it really is a PSTN destination which should be handled
> >        # by our gateway; if not, and the request is an invitation, drop it
> >        --
> >        # we cannot terminate it in PSTN; relay non-INVITE requests -- 
> it may
> >        # be for example BYEs sent by gateway to call originator
> >        if (!uri=~"sip:\+?[0-9]+ at .*") {
> >                if (method=="INVITE") {
> >                        sl_send_reply("403", "Call cannot be served here");
> >                } else {
> >                     #   forward(uri:host, uri:port);
> >                        forward(65.189.155.101, 5060);
> >                };
> >                break;
> >        };
> >
> >        # account completed transactions via syslog
> >        setflag(1);
> >
> >        # free call destinations ... no authentication needed
> >        if ( is_user_in("Request-URI", "free-pstn")  /* free destinations */
> >                       # | uri=~"sip:[79][0-9][0-9][0-9]@.*" /* local PBX */
> >                        | uri=~"sip:[9][0-9][0-9][0-9]@.*" /* local PBX */
> >                        | uri=~"sip:98[0-9][0-9][0-9][0-9]") {
> >                 log("free call");
> >
> >        } else if (src_ip==65.189.155.101) {
> >                # our gateway doesn't support digest authentication;
> >                # verify that a request is coming from it by source
> >                # address
> >                log("gateway-originated request");
> >        } else {
> >                # in all other cases, we need to check the request against
> >                # access control lists; first of all, verify request
> >                # originator's identity
> >
> >                if (!proxy_authorize(   "gateway" /* realm */,
> >                                "subscriber" /* table name */))  {
> >                        proxy_challenge( "gateway" /* realm */, "0" /* no
> > qop */ );
> >                        break;
> >                };
> >
> >                # authorize only for INVITEs -- RR/Contact may result in
> >                weird
> >                # things showing up in d-uri that would break our logic; our
> >                # major concern is INVITE which causes PSTN costs
> >
> >                if (method=="INVITE") {
> >
> >                        # does the authenticated user have a permission for
> > local
> >                        # calls (destinations beginning with a single zero)?
> >                        # (i.e., is he in the "local" group?)
> >                        if (uri=~"sip:0[1-9][0-9]+ at .*") {
> >                                if (!is_user_in("credentials", "local")) {
> >                                        sl_send_reply("403", "No permission
> > for local calls");
> >                                       break;
> >                                };
> >                        # the same for long-distance (destinations begin
> > with two zeros")
> >                        } else if (uri=~"sip:00[1-9][0-9]+ at .*") {
> >                                if (!is_user_in("credentials", "ld")) {
> >                                        sl_send_reply("403", " no
> > permission for LD ");
> >                                        break;
> >                                };
> >                        # the same for international calls (three zeros)
> >                        } else if (uri=~"sip:000[1-9][0-9]+ at .*") {
> >                                if (!is_user_in("credentials", "int")) {
> >                                        sl_send_reply("403", "International
> > permissions needed");
> >                                        break;
> >                                };
> >    # everything else (e.g., interplanetary calls) is denied
> >                        } else {
> >                                sl_send_reply("403", "Forbidden");
> >                                break;
> >                        };
> >
> >                }; # INVITE to authorized PSTN
> >
> >        }; # authorized PSTN
> >
> >        # if you have passed through all the checks, let your call go to GW!
> >
> >        rewritehostport("65.189.155.101:5060");
> >
> >        # forward the request now
> >        if (!t_relay()) {
> >                sl_reply_error();
> >                break;
> >        };
> > if (uri=~"^sip:[0-9]*@.*") {
> >      log("Forwarding to PSTN\n");
> >      t_relay_to_udp ("65.189.155.101","5060");
> >      t_relay_to_tcp ("65.189.155.101","5060");
> >                         break;
> >                 };
> >  }
> >
> > _______________________________________________
> > Serusers mailing list
> > serusers at lists.iptel.org
> > http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list