[Serusers] rtpproxy/nathelper configuration issues. i think.

Eric C. Snowdeal III eric at snowdeal.org
Mon Feb 2 03:29:16 CET 2004


hmmm.  i replaced the INVITE in my original config with the one you 
supplied and SER started fine:

-----

Feb  1 18:12:52 localhost ser: Listening on
Feb  1 18:12:52 localhost ser:               127.0.0.1 [127.0.0.1]:5060
Feb  1 18:12:52 localhost ser:               my.public.ip 
[my.public.ip]:5060
Feb  1 18:12:52 localhost ser: Aliases: localhost.localdomain:5060 
localhost:5060 my.public.box:*
Feb  1 18:12:52 localhost ser: ser startup succeeded

-----

clients register and get a "200 o.k." response.  i just realized that i 
left out the send and receive message that i get when i try to call a 
client on the same lan segment -  my.public.ip is the ip address of the 
my.public.box on which ser is running:

-----

SEND >> my.public.ip:5060
INVITE sip:456 at my.public.box SIP/2.0
Via: SIP/2.0/UDP 
192.168.1.100:5060;rport;branch=z9hG4bK63D6D07A552611D8908A000393B930BA
From: snowdeal <sip:123 at my.public.box>;tag=748430901
To: <sip:456 at my.public.box>
Contact: <sip:123 at 192.168.1.100:5060>
Call-ID: 61C9E3CB-5526-11D8-908A-000393B930BA at 192.168.1.100
CSeq: 59170 INVITE
Max-Forwards: 70
Content-Type: application/sdp
User-Agent: X-Lite build 1101
Content-Length: 296

v=0
o=123 584059347 584059347 IN IP4 192.168.1.100
s=X-Lite
c=IN IP4 192.168.1.100
t=0 0
m=audio 8000 RTP/AVP 0 8 3 98 97 101
a=rtpmap:0 pcmu/8000
a=rtpmap:8 pcma/8000
a=rtpmap:3 gsm/8000
a=rtpmap:98 iLBC/8000
a=rtpmap:97 speex/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

RECEIVE << my.public.ip:5060
SIP/2.0 100 trying -- your call is important to us
Via: SIP/2.0/UDP 
192.168.1.100:5060;rport=5060;branch=z9hG4bK63D6D07A552611D8908A000393B930BA;received=my.router.public.ip
From: snowdeal <sip:123 at my.public.box>;tag=748430901
To: <sip:456 at my.public.box>
Call-ID: 61C9E3CB-5526-11D8-908A-000393B930BA at 192.168.1.100
CSeq: 59170 INVITE
Server: Sip EXpress router (0.8.12 (i386/linux))
Content-Length: 0
Warning: 392 my.public.ip:5060 "Noisy feedback tells:  pid=16985 
req_src_ip=my.router.public.ip req_src_port=5060 
in_uri=sip:456 at my.public.box out_uri=sip:456 at 192.168.1.101:5060 via_cnt==1"

----

the rtpmap messages are new, so i guess that's progress.  that said, 
should i ditch the released version and wade through the config errors 
that i get when i compile the CVS head?  is there anything glaringly 
obviously wrong with my current setup?

thanks,

- eric


Andres wrote:

> Eric,
> 
> I don't think the release version has support for RTPProxy.  Change your 
> config to this and I bet it won't start.
> 
>        if (method=="INVITE") {
>                record_route();
>                if (isflagset(1)) { # ATA ?
>                         force_rtp_proxy();
>                };
>                /* set up reply processing */
>                t_on_reply("1");
>        };
> 
> Eric C. Snowdeal III wrote:
> 
>> i've been getting my sea legs with SER and am having trouble getting 
>> rtpproxy to nathelper to work correctly with my setup.  since 
>> everything works fine if i test the scenario with a freeworld dialup 
>> account, i'm assuming that my problems are solely due to the vastness 
>> of my ignorance on how to configure SER correctly.
>>
>> i have three x-lite clients [ one is running on windows 2000 not sure 
>> of the build number, but it's the latest download from the website; 
>> the other two clients are both build 1101 on mac 10.2.3. SER running 
>> on a rh9 box on a public IP with rtpproxy. i installed 
>> ser-0.8.12-0.i386.rpm which i downloaded from the ftp server.  the 
>> x-lite clients are sitting behind a linksys befw11s4 nat router.
>>
>> i can run SER without nathelper/rtpproxy and make and receive calls to 
>> clients outside the my network.  however, things fall apart quickly 
>> when i try to run more than one client behind the nat [ lost audio, 
>> timeouts etc] which i presume is what nathelper is supposed to deal 
>> with.  if try to run to use nathelper, i can't make a call from a one 
>> client to another client behind the lan.  the calls won't go through - 
>> they simply timeout.
>>
>> i downloaded and compiled rtpproxy which i obtained from the portaone 
>> website and simply started it from the command line.  i can't figure 
>> out how to get any debugging messages from rtpproxy, but i can see 
>> that the process exists and /var/run/rtpproxy.sock is created.
>>
>> i altered ser.cfg using the template i found in the ser-0.8.12_src 
>> tarball [ /modules/nathelper/nathelper.cfg ].  see my config below 
>> [1].  i understand that things have changed quite a bit in the CVS 
>> head, but i tried to compile and install the latest CVS version, but i 
>> ran into a host of config errors using the nathelper.cfg supplied, so 
>> i decided to backtrack, gather my wits, and stick with the released 
>> version.
>>
>> the x-lite clients appear to register appropriately with the server [2 
>> - public ip addresses have been changed to protect the innocent].  to 
>> my untrained eye, these messages look the same as what i see when i 
>> test things using freeworld dialup accounts and i can make a call to 
>> another client on the same lan segment - i.e. the internal IP 
>> addresses are being sent. the location database also shows that the 
>> internal IP addresses are being used [3], but i don't know if this is 
>> what i want or not.  oh.  i'm also using my.public.box - a FQDN - as 
>> in the x-lite fields where it asks for "Domain/Realm", "SIP Proxy" and 
>> "Out Bound Proxy".
>>
>> so anyone care to grab me by the lapels and point out what i'm 
>> obviously doing wrong :-)
>>
>>
>> [1]
>> #
>> # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
>> #
>> # simple quick-start config script
>> #
>>
>> # ----------- global configuration parameters ------------------------
>>
>> #debug=3         # debug level (cmd line: -dddddddddd)
>> #fork=yes
>> #log_stderror=no        # (cmd line: -E)
>>
>> /* Uncomment these lines to enter debugging mode
>> debug=7
>> 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"
>>
>> # ------------------ module loading ----------------------------------
>>
>> # Uncomment this if you want to use SQL database
>> #loadmodule "/usr/lib/ser/modules/mysql.so"
>>
>> loadmodule "/usr/lib/ser/modules/nathelper.so"
>>
>> loadmodule "/usr/lib/ser/modules/sl.so"
>> loadmodule "/usr/lib/ser/modules/tm.so"
>> loadmodule "/usr/lib/ser/modules/rr.so"
>> loadmodule "/usr/lib/ser/modules/maxfwd.so"
>> loadmodule "/usr/lib/ser/modules/usrloc.so"
>> loadmodule "/usr/lib/ser/modules/registrar.so"
>>
>> # Uncomment this if you want digest authentication
>> # mysql.so must be loaded !
>> #loadmodule "/usr/lib/ser/modules/auth.so"
>> #loadmodule "/usr/lib/ser/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)
>>
>> alias="my.public.box"
>>
>> # -------------------------  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");
>>                 break;
>>         };
>>         if ( msg:len > max_len ) {
>>                 sl_send_reply("513", "Message too big");
>>                 break;
>>         };
>>
>>
>>         # compulsory processing of Route header fields and adding RR
>>         loose_route();
>>
>>         /* registration (uses rewritten contacts) */
>>         if (method=="REGISTER") {
>>                 save("location");
>>                 break;
>>         };
>>
>>         if (method=="INVITE") {
>>                 record_route();
>>                 if (isflagset(1)) { # ATA ?
>>                         fix_nated_sdp("3");
>>                 };
>>                 /* set up reply processing */
>>                 t_on_reply("1");
>>         };
>>
>>         if (method == "INVITE" || method == "CANCEL") {
>>                 if (!lookup("location")) {
>>                         sl_send_reply("404", "Not Found");
>>                         break;
>>                 };
>>         };
>>
>>         /* set up reply processing and forward statefuly */
>>         t_relay();
>> }
>>
>> # all incoming replies for t_onrepli-ed transactions enter here
>> onreply_route[1] {
>>         if (status=~"2[0-9][0-9]")
>>                 fix_nated_contact();
>>                 fix_nated_sdp("3");
>> }
>>
>> [2]
>>
>> Established SIP protocol listen on: 192.168.1.100:5060
>>
>> Discovered Restricted Cone NAT Firewall
>>
>> SIP: 192.168.1.100:5060
>> RTP: 192.168.1.100:8000
>> NAT: my.router.public.ip
>>
>> PROXY#0: ser.public.ip:5060
>>
>> OUTBOUND-PROXY#0: ser.public.ip:5060
>>
>>
>> SEND >> ser.public.ip:5060
>> REGISTER sip:my.public.box SIP/2.0
>> Via: SIP/2.0/UDP 
>> 192.168.1.100:5060;rport;branch=z9hG4bK9DF27D98551C11D882E3000393B930BA
>> From: snowdeal <sip:123 at my.public.box>
>> To: snowdeal <sip:123 at my.public.box>
>> Contact: "snowdeal" <sip:123 at 192.168.1.100:5060>
>> Call-ID: 9DA51D06551C11D882E3000393B930BA at my.public.box
>> CSeq: 56648 REGISTER
>> Expires: 1800
>> Max-Forwards: 70
>> User-Agent: X-Lite build 1101
>> Content-Length: 0
>>
>>
>> RECEIVE << ser.public.ip:5060
>> SIP/2.0 200 OK
>> Via: SIP/2.0/UDP 
>> 192.168.1.100:5060;rport=5060;branch=z9hG4bK9DF27D98551C11D882E3000393B930BA;received=my.router.public.ip 
>>
>> From: snowdeal <sip:123 at my.public.box>
>> To: snowdeal 
>> <sip:123 at my.public.box>;tag=b27e1a1d33761e85846fc98f5f3a7e58.3894
>> Call-ID: 9DA51D06551C11D882E3000393B930BA at my.public.box
>> CSeq: 56648 REGISTER
>> Contact: <sip:123 at 192.168.1.100:5060>;q=0.00;expires=1800
>> Server: Sip EXpress router (0.8.12 (i386/linux))
>> Content-Length: 0
>> Warning: 392 ser.public.ip:5060 "Noisy feedback tells:  pid=21653 
>> req_src_ip=my.router.public.ip req_src_port=5060 
>> in_uri=sip:my.public.box out_uri=sip:my.public.box via_cnt==1"
>>
>>
>> ----------
>>
>>
>> Established SIP protocol listen on: 192.168.1.101:5060
>>
>> Discovered Restricted Cone NAT Firewall
>>
>> SIP: 192.168.1.101:5060
>> RTP: 192.168.1.101:8000
>> NAT: my.router.public.ip
>>
>> PROXY#0: 69.55.224.151:5060
>>
>> OUTBOUND-PROXY#0: 69.55.224.151:5060
>>
>>
>> SEND >> ser.public.ip:5060
>> REGISTER sip:my.public.box SIP/2.0
>> Via: SIP/2.0/UDP 
>> 192.168.1.101:5060;rport;branch=z9hG4bKAC7BFFFD551C11D8B317000A957BC13A
>> From: kristine <sip:456 at my.public.box>
>> To: kristine <sip:456 at my.public.box>
>> Contact: "kristine" <sip:456 at 192.168.1.101:5060>
>> Call-ID: AC7B8E18551C11D8B317000A957BC13A at my.public.box
>> CSeq: 55034 REGISTER
>> Expires: 1800
>> Max-Forwards: 70
>> User-Agent: X-Lite build 1101
>> Content-Length: 0
>>
>>
>> RECEIVE << ser.public.ip:5060
>> SIP/2.0 200 OK
>> Via: SIP/2.0/UDP 
>> 192.168.1.101:5060;rport=15060;branch=z9hG4bKAC7BFFFD551C11D8B317000A957BC13A;received=my.router.public.ip 
>>
>> From: kristine <sip:456 at my.public.box>
>> To: kristine 
>> <sip:456 at my.public.box>;tag=b27e1a1d33761e85846fc98f5f3a7e58.b0ef
>> Call-ID: AC7B8E18551C11D8B317000A957BC13A at my.public.box
>> CSeq: 55034 REGISTER
>> Contact: <sip:456 at 192.168.1.101:5060>;q=0.00;expires=1800
>> Server: Sip EXpress router (0.8.12 (i386/linux))
>> Content-Length: 0
>> Warning: 392 ser.public.ip:5060 "Noisy feedback tells: pid=21658 
>> req_src_ip=my.router.public.ip req_src_port=15060 
>> in_uri=sip:my.public.box out_uri=sip:my.public.box via_cnt==1
>>
>> [3]
>>
>> ===Domain list===
>> ---Domain---
>> name : 'location'
>> size : 512
>> table: 0x402d60d8
>> d_ll {
>>     n    : 2
>>     first: 0x402d80e0
>>     last : 0x402d81c8
>> }
>>
>> ...Record(0x402d80e0)...
>> domain: 'location'
>> aor   : '123'
>> ~~~Contact(0x402d8120)~~~
>> domain : 'location'
>> aor    : '123'
>> Contact: 'sip:123 at 192.168.1.100:5060'
>> Expires: 583
>> q      :       0.00
>> Call-ID: '9DA51D06551C11D882E3000393B930BA at my.public.box'
>> CSeq   : 56648
>> replic : 0
>> State  : CS_NEW
>> Flags  : 0
>> next   : (nil)
>> prev   : (nil)
>> ~~~/Contact~~~~
>> .../Record...
>> ...Record(0x402d81c8)...
>> domain: 'location'
>> aor   : '456'
>> ~~~Contact(0x402d8208)~~~
>> domain : 'location'
>> aor    : '456'
>> Contact: 'sip:456 at 192.168.1.101:5060'
>> Expires: 614
>> q      :       0.00
>> Call-ID: 'AC7B8E18551C11D8B317000A957BC13A at my.public.box'
>> CSeq   : 55034
>> replic : 0
>> State  : CS_NEW
>> Flags  : 0
>> next   : (nil)
>> prev   : (nil)
>> ~~~/Contact~~~~
>> .../Record...
>>
>> ---/Domain---
>> ===/Domain list===
>>
>> _______________________________________________
>> Serusers mailing list
>> serusers at lists.iptel.org
>> http://lists.iptel.org/mailman/listinfo/serusers
>>
> 
> 




More information about the sr-users mailing list