Hi!
Up to now I could avoid Kamailio setups with Kamailio behind NAt. But
this time I have to deal with it. That's why I want to ask what others
did as best practice.
The scenario is:
Asterisk 1----\ Kamailio+RTPPROXY
\ |10.10.0.2
Asterisk n------\ |
--------|------------- FW --SIP-trunk--- ITSP
Freeswitch 1----/ 10.10.0.1 public-IP
/
Freeswitch n--/
10.10.0.x
Kamailio and rtpproxy have a private IP. Internal communication uses
private IPs, external communication uses a public IP which is NATed 1:1
to Kamailio's IP address. No registrations, just forwarding of messages.
Using the global "advertised_address" setting with the public IP does
not work, as there is also internal communication. Using
set_advertised_address() is also cumbersome.
So it seems, the easiest solution would be to use 2 sockets on Kamailio,
e.g. port 5050 and port 5060. Then I could use the listen with dedicated
advertised addresses:
listen=udp:10.10.0.2:5050
listen=udp:10.10.0.2:5060 advertise pu.bl.ic.ip:5060
If I understand it correctly, this should solve all issues with
Record-Routing and Via-headers.
For RTP-Proxy it seems necessary to detect the direction of each message
and set the IP address in rtpproxy_manage("","ip.add.re.ss") manually.
Thus, it seems straight forward - or do I miss something? Any comments
and practical experience?
Thanks
Klaus
Hi,
According to docs of "uid_domain.so", $fd and $td are attribute groups
which are set when calling the lookup_domain function, to retrieve domain
attributes stored in an DB ($fd.did or $td.did) :
lookup_domain("$fd", "@from.uri.host");
lookup_domain("$td", "@ruri.host");
if (strempty($fd.did) && strempty($td.did)) {
# Neither the calling nor the called domain is local
# This is a relaying attempt which should be forbidden
sl_reply("403", "Relaying Forbidden"); drop;
}
But then, starting Kamailio fails with a configuration file error :
0(2098) ERROR: <core> [pvapi.c:761]: error searching pvar "fd"
0(2098) ERROR: <core> [pvapi.c:965]: wrong char [d/100] in [$fd] at [2 (0)]
0(2098) : <core> [cfg.y:3567]: parse error in config file
/usr/local/etc/kamailio/kamailio.cfg, line 332, column 15-17: unknown
script pseudo variable $fd
ERROR: bad config file (1 errors)
Line 332 is :
if (strempty($fd.did) && strempty($td.did)) {
I thought I could start Kamailio without "pv.so" (and use selects instead),
but the error still shows up, as it is reported by the core pvapi.c file.
So I'm kind of stuck, and asking help from the community to fix this
problem :D
Philippe
Hi,
This is a question for kamailio 3.0.x and I'm still trying to reproduce
this issue somehow for latest stable, but maybe it was a known issue
anyways which got fixed in newer versions, so I don't have to dig deeper
into this:
There is an INVITE "A -> kamailio -> B", and kamailio does
uac_replace_from() to replace the display- and user-part (leaving the
domain-part untouched).
When there's a BYE "B -> kamailio -> A", then From/To are switched, so
the replaced From of the INVITE becomes the replaced To of the BYE.
Kamailio gets that one right and tries to recover (in auto-mode) the To.
However, in this BYE, B changes the domain-part of the To, which should
be valid, as elements are only supposed to inspect the tags of From/To,
right? The problem though is that when recovering the To, kamailio
inserts garbage into the domain part. The vsf-Parameter in the Route of
the BYE is definitely ok though, so that doesn't seem to be the issue.
Here's an example:
In the INVITE,
From: "ab12345"<sip:ab12345@192.168.0.12;user=phone>;tag=948a3340
gets rewritten to
From: "12345"<sip:12345@192.168.0.12;user=phone>;tag=948a3340
And in the BYE,
To: "12345"<sip:12345@1.2.3.4>;tag=948a3340
gets rewritten to
To: "12345"<sip:ab12345<@-%:68*0.0%12;user=phone>;tag=948a3340
Note that the received To in the BYE has a different host-part than what
got sent out in the From of the INVITE, and when kamailio recovers the
To, it doesn't recover the Display-part (not sure though if this is
intended behaviour anyway), but it only party recovers the domain-part.
You can still see some artefacts of the original domain (like the "68"
from the second "168" octet, and the "12" from the last octet).
Has anyone encountered this issue before?
Andreas
I'm developers who trying to install siremis.
will go in there and install siremis website.
However, server-services -> domain list by pressing will get the following error.
What can I do to fix this?
Hi everyone,
Recently I work on kamailio's snmpstats module. I'm trying to retrieve some data from database, the code pass the compilation but when starting kamailio always get this error.
Jan 25 10:57:05 localhost kamailio: ERROR: <core> [sr_module.c:572]: ERROR: load_module: could not open module </usr/local/lib/kamailio/modules_k/snmpstats.so>: /usr/local/lib/kamailio/modules_k/snmpstats.so: undefined symbol: db_bind_mod
I take the code from http://www.asipto.com/pub/kamailio-devel-guide/#c09database and ursloc module for example. not sure if I still miss something to make db access work.
Any suggestion?
Thanks,
Sebastian
Hi, I am having an issue at the moment with SIP NOTIFY messages being sent
from Kamailio (latest git master) over wss transport
I am getting reports from the receiving end saying "Compressed bit must be
0 if no negotiated deflate-frame extension"
The only reference I can find to it is at the following URL... where the
problem was caused by the server miscalculating the size of the msg:
http://stackoverflow.com/questions/12308728/compressed-bit-must-be-0-when-s…
Does anyone have any suggestions as to how I could debug this within
Kamailio? It sounds like Kamailio may be sending some incorrect packet
information but I am unsure at this point.
Hi,
while trying to use sipcapture together with PostgreSQL I've found that it
stores the "\r\n" in SIP messages as "\015\012", though not without a lot
of noise in the PostgreSQL log files.
For every line inserted in PostgreSQL I get:
[0] WARNING: nonstandard use of \\ in a string literal at character 763
[0] HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
[0] STATEMENT: insert into sip_capture (date,micro_ts,method,reply_reason,ruri,ruri_user,from_user,from_tag,to_user,to_tag,pid_user,contact_user,auth_user,callid,callid_aleg,via_1,via_1_branch,cseq,reason,content_type,auth,user_agent,source_ip,source_port,destination_ip,destination_port,contact_ip,contact_port,originator_ip,originator_port,proto,family,rtp_stat,type,node,msg) values ('2013-01-24 15:27:43',1359037663218925,'OPTIONS','','sip:129.240.253.134','','keepalive','533cb9e91f4b999cf76861cbb9ed54ed-149d','','','','','','5001ed5d-6979(a)127.0.0.1','','SIP/2.0/UDP
129.240.253.197;branch=z9hG4bKae6f.d4a02ac7.0','z9hG4bKae6f.d4a02ac7.0','10 OPTIONS','','','','kamailio (3.3.3 (i386/linux))','129.240.253.197',5060,'129.240.253.134',5060,'',0,'',0,1,2,'',1,'voipt1:21','OPTIONS
sip:129.240.253.134 SIP/2.0\\015\\012Via: SIP/2.0/UDP 129.240.253.197;branch=z9hG4bKae6f.d4a02ac7.0\\015\\012To:
sip:129.240.253.134\\015\\012From: sip:keepalive@edgetest.voip.uio.no;tag=533cb9e91f4b999cf76861cbb9ed54ed-149d\\015\\012CSeq:
10 OPTIONS\\015\\012Call-ID: 5001ed5d-6979(a)127.0.0.1\\015\\012Content-Length: 0\\015\\012User-Agent:
kamailio (3.3.3 (i386/linux))\\015\\012\\015\\012')
Kamailio as of latest git on the 3.3 branc +
3e580e1ee24f9b9ec4b1fa151b23ebc84f3db1cb. Same warnings when linked with
both PostgreSQL 8.4.13 and 9.1.1.
According to Alexandr Dubovikov MySQL stores '\r\n' as '\r\n'.
--
Øyvind Kolbu
When using the siputils function encode_contact() on a message that
contains a user parameter e.g.
<sip:XXXXX00015;phone-context=national@10.YYY.1.92;user=phone>;tag=88930
it encodes fine e.g.
<sip:natted_ua*sip:XXXXX00015;phone-context=national**192.168.242.102*5080*udp@10.YYY.70.100
>
but decode_contact() errors due to the ";" (there is an explicit check for
it in the code)
I am currently working round this using
$rU = $(rU{s.replace,;,:});
to remove the ; as the user part is not needed for my application.
Would it be safe to remove the check for ";" ?
Gareth
Hi Gurus,
i have a basic question.
i have a SIP PBX server that don't have the Multi Tenant Feature or Multi Company Feature.
i now that Kamailio support this feature, so
is possible to use the kamailio as registrar server and redirect all the services, SUBSCRIBE, NOTIFY, and RTP to the SIP PBX with corrects headers?
Thanks for your help