<div dir="ltr">Happy to help - glad we got get it all working.<div><br></div><div>Again, whether or not you choose to move forward with Kamailio is certainly up to you. It may very well not be required. But I would be hesitant to open up a PBX/B2BUA to the internet without it. The good news is that, while it looks confusing at first, it&#39;s actually fairly straight forward when you become familiar with it - it took me just a day or two to really grasp what was going on with it once I sat down and tried to learn.</div><div><br></div><div>In any case, feel free to reach out if you&#39;ve got any more questions.</div><div><br></div><div>Best,</div><div>Colin</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 4, 2016 at 3:48 PM Rick Jarvis &lt;<a href="mailto:rick.jarvis@magicmail.mooo.com">rick.jarvis@magicmail.mooo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Awesome, that makes sense. I need to start building some more knowledge in Kamailio I guess, but so glad we got this working. Thank you again Colin, really appreciate your help!</div><div style="word-wrap:break-word"><div><br></div><div>On 4 Jul 2016, at 20:29, Colin Morelli &lt;<a href="mailto:colin.morelli@gmail.com" target="_blank">colin.morelli@gmail.com</a>&gt; wrote:<div><blockquote type="cite"><br><div><div dir="ltr">Yeah,<div><br></div><div>As mentioned previously, it is <i>possible</i> that devices will still work with SIP outbound over NAT connections without the proxy. However, this is going to be specific to the device. The problem is that Freeswitch doesn&#39;t explicitly advertise SIP outbound support, and - by the spec - clients are not required to keep a TCP connection open longer than a single SIP transaction unless explicit outbound support is indicated via a &quot;Require: outbound&quot; header. <span style="line-height:1.5">So, long story short - if you want to be as compatible as possible using Kamailio is probably the best choice as it will follow the RFCs for outbound support whereas FS currently does not.</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5">Additionally, if you open your SIP server to the internet having Kamailio in the middle can be very helpful as it provides you with a scalable place that you can filter/block SIP traffic without impacting active call traffic.</span></div><div><span style="line-height:1.5"><br></span></div><div>Best,</div><div>Colin</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 4, 2016 at 3:17 PM Rick Jarvis &lt;<a href="mailto:rick.jarvis@magicmail.mooo.com" target="_blank">rick.jarvis@magicmail.mooo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">I was using a Yealink T22P, which is end of life now, so just switched over to a T48P. It’s ok if the older phones don’t work with it, as long as the new ones do! :)<div><br></div><div>So the T48 works fine with STUN disabled. But, it also works fine with the proxy disabled (and I’ve no idea why that should even work... Maybe the phone is keeping the connection open to FS anyway?!).</div></div><div style="word-wrap:break-word"><div><br></div><div><div><blockquote type="cite"><div>On 4 Jul 2016, at 19:37, Colin Morelli &lt;<a href="mailto:colin.morelli@gmail.com" target="_blank">colin.morelli@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr">Rick,<div><br></div><div>At this point most likely you need the handset to advertise explicit outbound support for Kamailio to act appropriately. Handsets/softphones generally don&#39;t do this by default, but need to be configured to do such (the RFC was originally released in 2009 IIRC so it likely requires at least a fairly recent handset). You&#39;ll want to make sure that the device is setup using TCP as its transport and that &quot;SIP outbound&quot; (or similarly named features) are enabled. You can see if it&#39;s being used by making sure the request has &quot;Supported: path, outbound&quot; and a &quot;sip.instance&quot; parameter in the Contact URL.</div><div><br></div><div>If the handset doesn&#39;t explicitly support outbound behavior, you may be able to still get it working by adding modparam(&quot;outbound&quot;, &quot;force_outbound_flag&quot;, 1) in your kamailio config after the loadmodules. This <i>should</i> work as long as the device doesn&#39;t close its TCP connection after registering.</div><div><br></div><div>Hope we didn&#39;t drag you through this just to find out the device doesn&#39;t support this behavior!</div><div><br></div><div>Best,</div><div>Colin</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 4, 2016 at 2:28 PM Rick Jarvis &lt;<a href="mailto:rick.jarvis@magicmail.mooo.com" target="_blank">rick.jarvis@magicmail.mooo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">That’s amazing, really getting somewhere now! So I’m now routing calls through the kamailo and onto FS fine, but I’m guessing I’m not quite there, as it only works if STUN is enabled on the handset... so would I be right in thinking it’s not completely doing the ‘sip outbound’ bit?</div><div style="word-wrap:break-word"><div><br><div><blockquote type="cite"><div>On 4 Jul 2016, at 17:22, Colin Morelli &lt;<a href="mailto:colin.morelli@gmail.com" target="_blank">colin.morelli@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr">Awesome! Glad that things are working well.<div><div><br></div><div>Now, we&#39;re almost there with the outbound support. You&#39;ll notice in the script that you&#39;re using now that Kamailio will be record-routing itself on INVITE/SUBSCRIBE requests, and it&#39;ll be adding itself to the path on REGISTER requests (check that first route {} block and you&#39;ll see what I&#39;m referring to). This is 90% of the way there. The only remaining piece is to get Kamailio to correctly handle persistent outbound-style TCP connections and create flow tokens. This is where the outbound module comes in.</div><div><br></div><div>You&#39;ll want to add loadmodule &quot;outbound.so&quot; to your config file for kamailio. Make sure this appears <i>before</i> the path.so and rr.so loadmodule calls. In order for Kamailio to handle outbound correctly it needs those modules to bind to the outbound module. With that done, Kamailio will include flow tokens in the record-route and path headers (you can see this in a pcap if you&#39;re interested). Now, you&#39;ll want to add a Flow-Timer header to inform your client of how often it should be sending keepalive pings. Unfortunately, at least last I checked, Freeswitch doesn&#39;t properly add the &quot;Require: outbound&quot; header to a response for a REGISTER request that includes &quot;Supported: outbound&quot; and a Contact with an ;ob parameter - <i>however</i> - it does properly follow the path provided in the register which is all that we really need. So this means we need to instead base the choice on Flow-Timer on whether or not the client advertises support for outbound. This <i>may not</i> work in all cases but I can&#39;t think of a case where it wouldn&#39;t off the top of my head.</div></div><div><br></div><div>So, let&#39;s add the following block to your onreply_route (this handler already exists in the config file I linked to - we just need to add to it). Also, you may adjust the 30 below to whatever ping interval you want to use between the client and Kamailio:</div><div><br></div><div><div><font face="monospace">       if ($rm == &quot;REGISTER&quot; &amp;&amp; $rs &gt;= 200 &amp;&amp; $rs &lt;= 299) {</font></div><div><font face="monospace"><span style="white-space:pre-wrap">                </span>remove_hf(&quot;Flow-Timer&quot;);</font></div><div><font face="monospace"><span style="white-space:pre-wrap">                </span>if ($(hdr(Supported)[*]) =~ &quot;outbound&quot;) {</font></div><div><font face="monospace"><span style="white-space:pre-wrap">                        </span>insert_hf(&quot;Flow-Timer: 30\r\n&quot;, &quot;Call-ID&quot;);</font></div><div><font face="monospace">                }</font></div><div><font face="monospace"><span style="white-space:pre-wrap">        </span>}</font></div></div><div><font face="monospace"><br></font></div><div>That <i>should</i> work, thought admittedly you might need to play around with other ways of detecting if the client is trying to use an outbound connection (I&#39;m using Kamailio as a registrar in my case which does properly add the Require: header, so the check there is easy). If it doesn&#39;t work, another way of checking that should work is to check if the &quot;Contact:&quot; header contains the &quot;ob&quot; param.</div><div><br></div><div>Anyway, that should technically be all you need to make this work. But, it&#39;s generally based to let Freeswitch know if it&#39;s calling out to a client that no longer exists. For example, you may have a 30 minute registration timeline but the socket may be closed after 5 minutes. When FS makes a call out to Kamailio to forward to an outbound client, Kamailio should respond with a &quot;430 Flow Failed&quot; response so Freeswitch knows to cleanup that (now invalid) registration.</div><div><br></div><div>Check out the edge-proxy example on this page <a href="http://www.kamailio.org/docs/modules/4.3.x/modules/outbound.html#idp17551232" target="_blank">http://www.kamailio.org/docs/modules/4.3.x/modules/outbound.html#idp17551232</a> to see how you can add that functionality (you&#39;ll want to look at the failure_route and t_on_failure calls).</div><div><br></div><div>Note - at some point it might make more sense to remove registrations from FS and free it up to just handle media, but this should work for now.</div><div><br></div><div>Best,</div><div>Colin</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 4, 2016 at 11:54 AM Rick Jarvis &lt;<a href="mailto:rick.jarvis@magicmail.mooo.com" target="_blank">rick.jarvis@magicmail.mooo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">I’m on Kamailio v 4.2.0… <div><br></div><div>Great, that’s working now, restarts fine and I can register using the proxy! Also if I do a sofia status reg, it shows the IP for the registration as the Kamailio IP, so I guess the signalling is working ok? Is it just the outbound/path support it needs now?</div></div><div style="word-wrap:break-word"><div><br><div><br><div><blockquote type="cite"><div>On 4 Jul 2016, at 16:23, Colin Morelli &lt;<a href="mailto:colin.morelli@gmail.com" target="_blank">colin.morelli@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr">Hey Rick,<div><br></div><div>Are you using the exact config file posted on the wiki? That looks like it&#39;s probably a bit old, for a much earlier version of Kamailio. I&#39;m assuming you&#39;re using something in the 4.x range, which might require some adjustments.</div><div><br></div><div><div><span style="line-height:1.5">First, I&#39;d suggest trying to use a more up-to-date config file. The one over here looks decent: </span><a href="https://blog.voipxswitch.com/2015/03/27/kamailio-basic-sip-proxy-all-requests-setup/" target="_blank">https://blog.voipxswitch.com/2015/03/27/kamailio-basic-sip-proxy-all-requests-setup/</a></div><div><br></div><div>Note that the proxy script there is a bit more complex than what you&#39;ve got now, but it should be pretty straightforward to figure out. Additionally, it includes log statements that&#39;ll show up without needing to enable the very verbose Kamailio debug logs. They should help you figure out what&#39;s going on. Also, that proxy script doesn&#39;t yet add the outbound/path support that you&#39;re looking for - but we can get to that point once we get traffic just getting to Freeswitch (it&#39;s simple to add).</div></div><div><br></div><div>Next, try to get a SIP trace and see what the traffic looks like. You can capture TCP traffic with (assuming eth0 is the interface that the traffic is on): <span style="line-height:1.5"><font face="monospace">tcpdump -s 0 -i eth0 -w /tmp/sip.pcap port 5060</font></span><span style="line-height:1.5">. </span><span style="line-height:1.5">Getting a packet capture and looking through it will help you identify what Kamailio is doing with the call.</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5">Start with that and let&#39;s see where we get. From there we&#39;ll probably have a better idea of the next steps.</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5">Best,</span></div><div><span style="line-height:1.5">Colin</span></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 4, 2016 at 11:05 AM Rick Jarvis &lt;<a href="mailto:rick.jarvis@magicmail.mooo.com" target="_blank">rick.jarvis@magicmail.mooo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Still struggling with this config trying to get Kamailio to act as an outbound proxy for NAT’d connections.<div><br></div><div><blockquote type="cite"><div style="word-wrap:break-word"><div><div><blockquote type="cite"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="auto" style="word-wrap:break-word"><div><ol><li><a href="https://wiki.freeswitch.org/wiki/Kamailio_basic_setup_as_proxy_for_FreeSWITCH" target="_blank">https://wiki.freeswitch.org/wiki/Kamailio_basic_setup_as_proxy_for_FreeSWITCH</a></li></ol></div></div></blockquote></div></div></blockquote></div></div></div></blockquote><div><br></div>I’ve changed the IPs to mine of course, and I’ve even simplified by not using private IPs anywhere. Enabling debugging doesn’t give me anything I understand. The IP of FreeSWITCH isn’t showing anywhere in the log, which suggests to me that it’s not even getting as far as passing the SIP request to FS…? The x.x.x.x below is the IP of the kamailio box...</div><div><br></div><div>Help! This is driving me mad….<br><div><br></div><div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [parser/parse_via.c:1284]: parse_via_param(): Found param type 235, &lt;rport&gt; = &lt;5076&gt;; state=16</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/parse_via.c:1284]: parse_via_param(): Found param type 232, &lt;branch&gt; = &lt;z9hG4bK-5aed5dc1317bd4b9202a5f65f33730f7&gt;; state=6</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [parser/parse_via.c:2672]: parse_via(): end of header reached, state=5</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/parse_via.c:1284]: parse_via_param(): Found param type 235, &lt;rport&gt; = &lt;5076&gt;; state=16</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [parser/msg_parser.c:513]: parse_headers(): parse_headers: Via found, flags=62</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/parse_via.c:2672]: parse_via(): end of header reached, state=5</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [parser/msg_parser.c:526]: parse_headers(): parse_headers: this is the second via</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/msg_parser.c:513]: parse_headers(): parse_headers: Via found, flags=ffffffffffffffff</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [parser/parse_addr_spec.c:898]: parse_addr_spec(): end of header reached, state=10</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/msg_parser.c:526]: parse_headers(): parse_headers: this is the second via</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [parser/msg_parser.c:190]: get_hdr_field(): DEBUG: get_hdr_field: &lt;To&gt; [61]; uri=[<a>sip:*910000972592892325@x.x.x.x]</a></font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/parse_addr_spec.c:176]: parse_to_param(): DEBUG: add_param: tag=73pNXe7gUUXpr</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [parser/msg_parser.c:192]: get_hdr_field(): DEBUG: to body [*910000972592892325 &lt;<a>sip:*910000972592892325@x.x.x.x</a>&gt;#015#012]</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/parse_addr_spec.c:898]: parse_addr_spec(): end of header reached, state=29</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [parser/msg_parser.c:170]: get_hdr_field(): get_hdr_field: cseq &lt;CSeq&gt;: &lt;1&gt; &lt;INVITE&gt;</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/msg_parser.c:190]: get_hdr_field(): DEBUG: get_hdr_field: &lt;To&gt; [79]; uri=[<a>sip:*910000972592892325@x.x.x.x]</a></font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: tm [t_lookup.c:949]: t_reply_matching(): DEBUG: t_reply_matching: hash 21995 label 0 branch 0</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/msg_parser.c:192]: get_hdr_field(): DEBUG: to body [*910000972592892325 &lt;<a>sip:*910000972592892325@x.x.x.x</a>&gt;]</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: tm [t_lookup.c:1004]: t_reply_matching(): DEBUG: t_reply_matching: reply matched (T=0x7f3ab64ecbe0)!</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/msg_parser.c:170]: get_hdr_field(): get_hdr_field: cseq &lt;CSeq&gt;: &lt;1&gt; &lt;INVITE&gt;</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: tm [t_lookup.c:1141]: t_check_msg(): DEBUG: t_check_msg: msg id=2 global id=2 T end=0x7f3ab64ecbe0</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/msg_parser.c:204]: get_hdr_field(): DEBUG: get_hdr_body : content_length=0</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: tm [t_reply.c:2210]: reply_received(): DEBUG: reply_received: org. status uas=100, uac[0]=0 local=0 is_invite=1)</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [parser/msg_parser.c:106]: get_hdr_field(): found end of header</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: tm [t_reply.c:1304]: t_should_relay_response(): -&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; T_code=100, new_code=100</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: tm [t_lookup.c:949]: t_reply_matching(): DEBUG: t_reply_matching: hash 21995 label 0 branch 0</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: tm [t_reply.c:1822]: relay_reply(): DEBUG: relay_reply: branch=0, save=0, relay=-1 icode=0</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: tm [t_lookup.c:1004]: t_reply_matching(): DEBUG: t_reply_matching: reply matched (T=0x7f3ab64ecbe0)!</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [usr_avp.c:643]: destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil)</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: tm [t_lookup.c:1141]: t_check_msg(): DEBUG: t_check_msg: msg id=2 global id=2 T end=0x7f3ab64ecbe0</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [usr_avp.c:643]: destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil)</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: tm [t_reply.c:2210]: reply_received(): DEBUG: reply_received: org. status uas=100, uac[0]=100 local=0 is_invite=1)</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [usr_avp.c:643]: destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil)</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: tm [t_reply.c:1304]: t_should_relay_response(): -&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; T_code=100, new_code=407</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [usr_avp.c:643]: destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil)</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: tm [t_reply.c:1822]: relay_reply(): DEBUG: relay_reply: branch=0, save=0, relay=0 icode=0</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [usr_avp.c:643]: destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil)</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14187]: DEBUG: &lt;core&gt; [msg_translator.c:2266]: generate_res_buf_from_sip_res():  old size: 976, new size: 890</font></span></div><div style="margin:0px;line-height:normal;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)"><span><font size="1">Jul  4 10:53:40 proxy /usr/sbin/kamailio[14188]: DEBUG: &lt;core&gt; [usr_avp.c:643]: destroy_avp_list(): DEBUG:destroy_avp_list: destroying list (nil)</font></span></div></div></div></div><div style="word-wrap:break-word"><div><div><div><blockquote type="cite"><div>On 2 Jul 2016, at 20:08, Rick Jarvis &lt;<a href="mailto:rick.jarvis@magicmail.mooo.com" target="_blank">rick.jarvis@magicmail.mooo.com</a>&gt; wrote:</div><br><div><div style="word-wrap:break-word">Thanks Colin, really appreciate the help!<div><br></div><div>So should the SIP_DOMAIN in kamctlrc be the IP of the kamailio server… or the FS server?</div><div><br></div><div>And should the handset be set to use the FS public IP as the SIP server, and the kamailio server as the proxy?</div><div><br></div><div>And should there be something else listed as the @ realm in the register name?!</div><div><br></div><div>I am determined to get my head around proxying!</div><div><br><div><blockquote type="cite"><div>On 2 Jul 2016, at 19:35, Colin Morelli &lt;<a href="mailto:colin.morelli@gmail.com" target="_blank">colin.morelli@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr">Rick,<div><br></div><div>FS has four variables you&#39;ll need to be concerned with. sip-ip, rtp-ip, ext-sip-ip, and ext-rtp-ip.</div><div><br></div><div>The sip/rtp-ip variables tell Freeswitch which IP address it should bind to for SIP and RTP traffic, respectively. The ext-*-ip variables tell Freeswitch what IP addresses it should <i>advertise</i> that it listens to, for SIP and RTP, respectively. In cases where FS is behind a NAT of some type, these may be different. If your public IP is directly attached to an interface on the FS box, they may very well be the same.</div><div><br></div><div>In your case, you likely want sip-ip and ext-sip-ip set to the private IP address for the FS instances. Similarly, you want rtp-ip and ext-rtp-ip set to the public IP address for the FS instance. (I believe if you don&#39;t set ext-*-ip variables at all they just default to the same as their non-ext counterparts).</div><div><br></div><div>With this configuration, FS will listen to SIP traffic over the private interface (from your Kamailio proxy). When it needs to construct 200 OKs or INVITEs, it will <i>advertise</i> itself as listening to media on its own public interface (the value of the rtp-ip variable).</div><div><br></div><div>As far as not seeing anything in syslog for the registration, Kamailio is fairly light on logging by default (unless you set debug=4), and the script that you referenced doesn&#39;t contain any xlog statements so you probably won&#39;t see anything. I&#39;d instrument the script with xlog() calls throughout and see if it gets you anything. When in doubt you can always tcpdump as well to see if you&#39;re getting the requests/responses you hope to get.</div><div><br></div><div>Best,</div><div>Colin</div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Jul 2, 2016 at 2:29 PM Rick Jarvis &lt;<a href="mailto:rick.jarvis@magicmail.mooo.com" target="_blank">rick.jarvis@magicmail.mooo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" dir="auto">Ok, so first step is to get Kamailio working as a proxy. TLS will come in time….<div><br></div><div><ol><li>I’ve used this config file <a href="https://wiki.freeswitch.org/wiki/Kamailio_basic_setup_as_proxy_for_FreeSWITCH" target="_blank">https://wiki.freeswitch.org/wiki/Kamailio_basic_setup_as_proxy_for_FreeSWITCH</a></li><li>Kamailio server and FS server both have public and private interfaces</li><li>Kamailio server is listening on its public IP</li><li>FS is listening (profile internal) on its private IP</li><li>Kamailio is set to rewrite to FS server’s private IP</li></ol><div><br></div></div><div>What I don’t quite get, having not used a proxy in this way before, is what happens next. If FS needs to advertise its public IPs for the RTP, how does this happen?</div><div><br></div><div>So far I’m not seeing anything at all in Syslog for the incoming registration.</div><div><br></div><div>Any help appreciated!</div><div><br><div><blockquote type="cite"></blockquote></div></div></div><div style="word-wrap:break-word" dir="auto"><div><div><blockquote type="cite"><div>On 30 Jun 2016, at 14:39, Colin Morelli &lt;<a href="mailto:colin.morelli@gmail.com" target="_blank">colin.morelli@gmail.com</a>&gt; wrote:</div><br></blockquote></div></div></div><div style="word-wrap:break-word" dir="auto"><div><div><blockquote type="cite"><div><div dir="ltr">Rick,<br><br>(Sorry for the long email, hopefully it&#39;s helpful)<br><br>It sounds like you&#39;re mostly concerned with FS initiating calls to handsets behind NAT, is that correct?<br><br>If so, what you probably want is SIP outbound (RFC 5626). It&#39;s the best way to avoid NAT issues with clients. Under this model, clients keep a persistent connection open to the server. The server is responsible for using that connection to deliver INVITEs to the client, thus avoiding the need to ever open its own connection.<div><br></div><div>In my (relatively limited) experience with FS, it was able to act like a SIP outbound server, but it doesn&#39;t directly advertise it and supporting SIP outbound is really outside of the core scope of what FS does. So, in my setup, I use Kamailio to provide the SIP outbound support. A brief description of my setup (which seems to work fine with clients behind NAT)</div><div><br></div><div>Kamailio edge proxy cluster (provides SIP outbound support to clients, allows public SIP traffic)</div><div>Kamailio proxy + registrar (only allows SIP traffic from inside the local network, provides registration support)</div><div>Freeswitch (only allows SIP traffic from inside the local network, has a public IP address and open firewall for RTP traffic).</div><div><br></div><div>So, a registration from a client hits the Kamailio edge proxy, which parks the socket connection and sends it on to the second Kamailio proxy/registrar. When FS needs to make outbound calls to clients, it hits the Kamailio proxy/registrar, which forwards it to the edge proxy that has an existing connection the client and uses it to deliver the invite (this is all handled by Kamailio with it&#39;s outbound, path, registrar, and usrloc modules).</div><div><br></div><div>Note your setup might not require the use of two layers of proxies before FS. In my case, I keep registrations off of FS so it&#39;s only handling calls. If you have registrations in FS, you can likely just have a Kamailio edge proxy for advertising SIP outbound support, and have it proxy all traffic into FS.</div><div><br></div><div>With this setup, FS will receive SIP traffic from Kamailio, and advertise (in the SDP) its public IP address for RTP media (which needs to be allowed through the firewall). Freeswitch will then open what it refers to as an auto-adjust window for the RTP media. In other words, FS will assume that the first address/port to send RTP media to the RTP port configured for a call is the remote client for that call. As a result, FS is able to cope with clients behind NAT on the media side as well. I believe this feature is enabled by default, but you may have to enable it - you&#39;d have to check the docs on this one.</div><div><br></div><div>With those two pieces combined you should be able to get past any NAT issues without the need for STUN/TURN. Unless you bypass media on FS, in which case you&#39;re going to need those.</div><div><br></div><div>Hopefully that helps you out a bit.</div><div><br></div><div>Best,</div><div>Colin</div><div><div><div><br><div class="gmail_quote"><div dir="ltr">On Thu, Jun 30, 2016 at 8:52 AM Rick Jarvis &lt;<a href="mailto:rick.jarvis@magicmail.mooo.com" target="_blank">rick.jarvis@magicmail.mooo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I’d be interested to hear what different people use to provide some level of security for remote end-users such as homeworkers, and to get round NAT issues.<br>
<br>
We currently use OpenVPN, as this is built into the firmware of Yealink handsets (it’s a great feature, I’m not sure why more handset manufacturers don’t do this?!). The pros are that not only is it secure, but it also removes any problems with NAT for the RTP streams.<br>
<br>
The downsides are that it is complicated (and downright frustrating sometimes) to set up, and there are additional things to consider such as the server configuration and overheads.<br>
<br>
TLS/SSL with SRTP is another option, but my understanding of this is that it can cause NAT problems, with FreeSWITCH trying to initiate control channels back to the phone for inbound calls. In fact, I’ve always had problems with getting phones to work when behind NAT anyway, even without SSL/TLS. STUN can be used to ascertain the IP, but how do you handle situations where multiple handsets are behind NAT - you can’t open all RTP ports to all handsets at once?!!<br>
<br>
Would be very interested to hear thoughts and methods on these points.<br>
<br>
Thanks<br>
R<br>
_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a></blockquote></div></div></div></div></div>
_________________________________________________________________________<br>Professional FreeSWITCH Consulting Services: <br><a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br><a href="http://www.freeswitchsolutions.com/" target="_blank">http://www.freeswitchsolutions.com</a><br><br>Official FreeSWITCH Sites<br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a><br><a href="http://confluence.freeswitch.org/" target="_blank">http://confluence.freeswitch.org</a><br><a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com</a><br><br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a></div></blockquote></div></div></div>
_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a></blockquote></div>
_________________________________________________________________________<br>Professional FreeSWITCH Consulting Services: <br><a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br><a href="http://www.freeswitchsolutions.com/" target="_blank">http://www.freeswitchsolutions.com</a><br><br>Official FreeSWITCH Sites<br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a><br><a href="http://confluence.freeswitch.org/" target="_blank">http://confluence.freeswitch.org</a><br><a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com</a><br><br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a></div></blockquote></div><br></div></div>_________________________________________________________________________<br>Professional FreeSWITCH Consulting Services: <br><a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br><a href="http://www.freeswitchsolutions.com/" target="_blank">http://www.freeswitchsolutions.com</a><br><br>Official FreeSWITCH Sites<br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a><br><a href="http://confluence.freeswitch.org/" target="_blank">http://confluence.freeswitch.org</a><br><a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com</a><br><br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a></div></blockquote></div><br></div></div></div>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a></blockquote></div>
_________________________________________________________________________<br>Professional FreeSWITCH Consulting Services: <br><a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br><a href="http://www.freeswitchsolutions.com/" target="_blank">http://www.freeswitchsolutions.com</a><br><br>Official FreeSWITCH Sites<br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a><br><a href="http://confluence.freeswitch.org/" target="_blank">http://confluence.freeswitch.org</a><br><a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com</a><br><br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a></div></blockquote></div><br></div></div></div>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a></blockquote></div>
_________________________________________________________________________<br>Professional FreeSWITCH Consulting Services: <br><a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br><a href="http://www.freeswitchsolutions.com/" target="_blank">http://www.freeswitchsolutions.com</a><br><br>Official FreeSWITCH Sites<br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a><br><a href="http://confluence.freeswitch.org/" target="_blank">http://confluence.freeswitch.org</a><br><a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com</a><br><br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a></div></blockquote></div><br></div></div>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a></blockquote></div>
_________________________________________________________________________<br>Professional FreeSWITCH Consulting Services: <br><a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br><a href="http://www.freeswitchsolutions.com/" target="_blank">http://www.freeswitchsolutions.com</a><br><br>Official FreeSWITCH Sites<br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a><br><a href="http://confluence.freeswitch.org/" target="_blank">http://confluence.freeswitch.org</a><br><a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com</a><br><br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br><a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org</a></div></blockquote></div><br></div></div>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank">http://www.freeswitch.org</a></blockquote></div>
_________________________________________________________________________<br>Professional FreeSWITCH Consulting Services: <br><a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br><a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a><br><br>Official FreeSWITCH Sites<br><a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br><a href="http://confluence.freeswitch.org" target="_blank">http://confluence.freeswitch.org</a><br><a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a><br><br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br><a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a></div></blockquote></div><br></div></div>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a></blockquote></div>