<div dir="ltr">Hi George,<div><br></div><div>Did you have any luck getting VRFs working with Kamailio?</div><div><br></div><div>Thanks</div><div><br></div><div>Matthew</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 12, 2017 at 8:06 PM, Mark Boyce <span dir="ltr"><<a href="mailto:mark@darkorigins.com" target="_blank">mark@darkorigins.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space">Hi<div><br></div><div>I *think* I may have found it … although still not sure what’s doing the filtering.</div><div><br></div><div>If I force the sending IP to be the the VPN interface on the sender by adding;</div><div><br></div><div>modparam("siptrace", "force_send_sock", "<a>sip:10.0.0.2:5060</a>”)</div><div><br></div><div>So packets now arrive at the receiver from the 10. IP rather than from the public IP of the sender</div><div><br></div><div>… and magically it starts working.</div><div><br></div><div>So something in Ubuntu 16.04 / zerotier is “filtering” packets which arrive on the VPN interface but with a no VPN IP </div><div><br></div><div>Cheers</div><span class="HOEnZb"><font color="#888888"><div><br></div></font></span><div><span class="HOEnZb"><font color="#888888">Mark</font></span><div><div class="h5"><br>
<div><br><blockquote type="cite"><div>On 12 Oct 2017, at 19:59, Sergey Safarov <<a href="mailto:s.safarov@gmail.com" target="_blank">s.safarov@gmail.com</a>> wrote:</div><br class="m_1052648803083386011Apple-interchange-newline"><div><div dir="ltr">This may be NAT/iptables issue if used some type of virtualization<div>Check UNDEPLIED connection using conntrack</div><div><br></div><div>Sergey <br><br><div class="gmail_quote"><div dir="ltr">чт, 12 окт. 2017 г. в 20:27, Mark Boyce <<a href="mailto:mark@darkorigins.com" target="_blank">mark@darkorigins.com</a>>:<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;line-break:after-white-space">Hi<div><br></div><div>Now using listen=udp:<a href="http://0.0.0.0:9060/" target="_blank">0.0.0.0:9060</a></div><div><br></div><div>net stat agrees;</div><div><br></div><div>netstat -plunt | grep kamailio<br>udp        0      0 <a href="http://0.0.0.0:9060/" target="_blank">0.0.0.0:9060</a>            0.0.0.0:*                           20486/kamailio  </div><div><br></div><div><br></div><div>TCPDump of Sending / Receiving to zero tier port</div><div><br></div><div>17:06:19.617467 IP sbc-1.white-label.com.sip > 10.0.0.1.9060: SIP<br>        0x0000:  4510 04f1 a504 0000 4011 904e 894a abd8  E.......@..N.J..<br>        0x0010:  0a05 0172 13c4 2364 04dd 261b 0110 0211  ...r..#d..&.....<br>        0x0020:  13c4 13d8 894a abd8 894a abd8 494e 5649  .....J...J..INVI<br>        0x0030:  5445 2073 6970 3a32 4073 6263 2d31 2e77  TE.sip:<a href="mailto:2@sbc-1.w" target="_blank">2@sbc-1.w</a><br><br><div>Nothing in Kamailio Logs</div><div><br></div><div>Swap to using the real IP and I’m seeing the log line from the top of the main route;</div><div><br></div><div><div style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;background-color:rgb(255,255,255)"><span style="font-variant-ligatures:no-common-ligatures">Oct 12 19:09:32 vps465590 homer[20491]: ERROR: <script>: route entered</span></div></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures">and the matching tcpdump from the public interface;</span></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures">17:10:20.333000 IP sbc-1.white-label.com.sip > homer-test.9060: SIP<br>        0x0000:  4510 03d8 863c 0000 3911 6109 894a abd8  E....<..9.a..J..<br>        0x0010:  33ff 2d9e 13c4 2364 03c4 f5a8 0110 0216  3.-...#d........<br>        0x0020:  07de 13c5 5c17 3523 894a abd8 494e 5649  ....\.5#.J..INVI<br>        0x0030:  5445 2073 6970 3a32 4073 6263 2d31 2e77  TE.sip:<a href="mailto:2@sbc-1.w" target="_blank">2@sbc-1.w</a><br> </span></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures">Loading the dumped packets in to wireshark I can’t see any obvious difference.</span></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><br class="m_1052648803083386011m_-981454741101539367webkit-block-placeholder"></div><div>Will start up a new thread … thanks for the loan of yours :-)</div></div></div><div style="word-wrap:break-word;line-break:after-white-space"><div><div><br></div><div>
<div>Mark<br><br></div>

</div></div></div><div style="word-wrap:break-word;line-break:after-white-space"><div>
<div><br><blockquote type="cite"><div>On 12 Oct 2017, at 17:21, George Diamantopoulos <<a href="mailto:georgediam@gmail.com" target="_blank">georgediam@gmail.com</a>> wrote:</div><br class="m_1052648803083386011m_-981454741101539367Apple-interchange-newline"><div><div dir="ltr"><div>Hmm... Everything looks fine indeed, I can't see any obvious reason why this isn't working...<br><br></div>Just to be clear, have you tried listening on all interfaces:<br><div style="margin-left:40px">listen=udp:<a href="http://0.0.0.0:9060/" target="_blank">0.0.0.0:9060</a></div><br><div><div>And if yes, can you capture traffic arriving on the ZeroTier interface in this case? If it works, is there any reason why listening on all interfaces is not acceptable in your use case?</div><div><br></div><div>Regardless, it might be a good idea to start a new thread about this, maybe it's related to the inner workings of the ZeroTier device and how it interacts with the kernel...<br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 12 October 2017 at 18:26, Mark Boyce <span dir="ltr"><<a href="mailto:mark@darkorigins.com" target="_blank">mark@darkorigins.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space">Hi George<div><br></div><div>(IP / MACs below anonymised a bit)</div><div><br></div><div><br></div><div>I’m working on a <a href="https://www.zerotier.com/" target="_blank">https://www.zerotier.com</a> VPN endpoint which presents as a new interface;</div><div><br></div><div><br></div><div>Real Interface</div><div><br></div><div>ens3      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  <br>          inet addr: 1.2.3.4  Bcast: 1.2.3.4  Mask:<wbr>255.255.255.255</div><div>          inet6 addr: aaaaa::bbbb:cccc:dddd:eeee/64 Scope:Link<br>          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br>          RX packets:12978431 errors:0 dropped:0 overruns:0 frame:0<br>          TX packets:11331437 errors:0 dropped:0 overruns:0 carrier:0<br>          collisions:0 txqueuelen:1000 <br>          RX bytes:<a href="tel:(250)%20872-3344" value="+12508723344" target="_blank">2508723344</a> (2.5 GB)  TX bytes:1149701606 (1.1 GB)<br><br>loopback</div><div><br>lo        Link encap:Local Loopback  <br>          inet addr:127.0.0.1  Mask:255.0.0.0<br>          inet6 addr: ::1/128 Scope:Host<br>          UP LOOPBACK RUNNING  MTU:65536  Metric:1<br>          RX packets:58936 errors:0 dropped:0 overruns:0 frame:0<br>          TX packets:58936 errors:0 dropped:0 overruns:0 carrier:0<br>          collisions:0 txqueuelen:1 <br>          RX bytes:12470726 (12.4 MB)  TX bytes:12470726 (12.4 MB)<br><br>ZeroTier</div><div><br>zt0       Link encap:Ethernet  HWaddr yy:yy:yy:yy:yy:yy</div><div>          inet addr:10.0.0.1  Bcast:10.0.0.<wbr>255  Mask:255.255.255.0<br>          UP BROADCAST RUNNING MULTICAST  MTU:2800  Metric:1<br>          RX packets:11148 errors:0 dropped:0 overruns:0 frame:0<br>          TX packets:1113 errors:0 dropped:0 overruns:0 carrier:0<br>          collisions:0 txqueuelen:1000 <br>          RX bytes:3760555 (3.7 MB)  TX bytes:584324 (584.3 KB)<br><br></div><div><br></div><div>This is actually a SIPCapture/Homer node so the config is;</div><div><br></div><div>modparam("sipcapture", "capture_on", 1)<br>modparam("sipcapture", "hep_capture_on", 1)<br>listen=udp:<a href="http://10.0.0.1:9060/" target="_blank">10.0.0.1:9060</a></div><div><br></div><div>The port bind looks ok;</div><div><br></div><div># netstat -plunt | grep kamailio<br>udp        0      0 <a href="http://10.0.0.1:9060/" target="_blank">10.0.0.1:9060</a>         0.0.0.0:*                           19592/kamailio</div><div><br></div><div><br></div><div>I’m tracking packets at the top of "route {“</div><div><br></div><div>route { <br>        xlog("route entered\r\n”);<br><br></div><div><br></div><div><br></div><div>If I tcpdump the ZeroTier Interface ;</div><div><br></div><div>tcpdump -i zt0 -p -X  port 9060</div><div><br></div><div>15:08:38.556323 IP sbc-1.white-label.com.sip > 10.0.0.1.9060: SIP<br>        0x0000:  4510 0181 7883 0000 4011 c03f 894a abd8  E...x...@..?.J..<br>        0x0010:  0a05 0172 13c4 2364 016d e2e2 0110 0216  ...r..#d.m......<br>        0x0020:  07a8 13c5 5c17 3523 894a abd8 4143 4b20  ....\.5#.J..ACK.</div><div><br></div><div><br></div><div>… but nothing seen in kamailio.</div><div><br></div><div>If I swap over to sending to / listening on the public IP everything works as expected.</div><div><br></div><div><br></div><div><br><div>
<div>Cheers</div><span class="m_1052648803083386011m_-981454741101539367HOEnZb"><font color="#888888"><div>Mark<br><br></div>

</font></span></div><div><div class="m_1052648803083386011m_-981454741101539367h5">
<div><br><blockquote type="cite"><div>On 12 Oct 2017, at 15:56, George Diamantopoulos <<a href="mailto:georgediam@gmail.com" target="_blank">georgediam@gmail.com</a>> wrote:</div><br class="m_1052648803083386011m_-981454741101539367m_5243249516259637050Apple-interchange-newline"><div><div dir="ltr"><div><div>Hello,<br><br></div>That seems strange... What kind of device is that VPN device? Like a ppp0 interface? What is the output of "netstat -plunt | grep kamailio"? Are you using a "private" IP for the VPN interface and what's your main routing table like?</div><div><br></div>Also what if you omit the "listen" directive in kamailio configuration? Does it listen on the VPN interface then? Kamailio will bind by default to all interfaces if no "listen" directive is used...<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 12 October 2017 at 00:26, Mark Boyce <span dir="ltr"><<a href="mailto:mark@darkorigins.com" target="_blank">mark@darkorigins.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi All<div><br></div><div>Just to dive in here with something which may be related.  I was about to do a post with a much simpler problem where I have one real NIC and one VPN created NIC.  If I listen to the public IP all’s well.  If I listen to the IP of the VPN NIC Kamailio doesn’t see any traffic.   I can tcpdump on either NIC and see the traffic arriving.</div><div><br></div><div>Anyone seen / solved this before?</div><div><br></div><div>Cheers</div><span class="m_1052648803083386011m_-981454741101539367m_5243249516259637050HOEnZb"><font color="#888888"><div>Mark</div></font></span><div><div class="m_1052648803083386011m_-981454741101539367m_5243249516259637050h5"><div><br><div><blockquote type="cite"><div>On 11 Oct 2017, at 22:07, George Diamantopoulos <<a href="mailto:georgediam@gmail.com" target="_blank">georgediam@gmail.com</a>> wrote:</div><br class="m_1052648803083386011m_-981454741101539367m_5243249516259637050m_-782933797216803214Apple-interchange-newline"><div><div dir="ltr"><div>Hello Daniel,<br><br>I'm including the original sketch for clarity:<br><span style="font-family:monospace,monospace"><br> +----------+      +-------------------+<br> |   eth0   |      |    vrf-green      |<br> | 1.1.1.1  |      |    127.0.0.1      |<br> +----------+      +-------------------+<br>                            |          <br>                      +----------+     <br>                      |   eth1   |   <br>                      | 2.2.2.2  |  <br>                      +----------+</span><br><br>Thanks for the reply. Indeed, using the advertise option for the "listen" directive will result in kamaiio no longer failing to start when using force_send_socket(<a href="http://2.2.2.2:5060/" target="_blank">2.2.2.2:5060</a><wbr>) with 2.2.2.2 being used in the "advertise" option.<br><br>However, this doesn't make much of a difference in that kamailio still won't process IP packets arriving on eth1 at IP 2.2.2.2... I can see OPTIONS coming with sngrep, but nothing in the logs, no replies, only retransmissions from the originator.<br></div><div>In addition, while without VRF kamailio will select the right interface with mhomed=1, this is no longer the case.</div><div>Also, If I try to send something to a host with force_send_socket, the transaction fails with 477 Unfortunately error on sending to next hop occurred. In the log, kamailio prints something along the lines of:</div><div style="margin-left:40px">udp_send(): sendto(sock,0x7f5c4f937d08,<wbr>1888,0,<a href="http://9.9.9.9:5060/" target="_blank">9.9.9.9:5060</a>,16): Invalid argument(22)</div><div style="margin-left:40px">udp_send(): invalid sendtoparameters</div><div style="margin-left:40px">msg_send_buffer(): udp_send failed</div><div></div><div>where 9.9.9.9 is the $dd and presumably force_send_socket(<a href="http://2.2.2.2:5060/" target="_blank">2.2.2.2:5060</a><wbr>) has been called before t_relay()<br></div><div><br></div><div></div>Also, I additionally found out that if the networking configuration is as follows:<br><span style="font-family:monospace,monospace"><br> +----------+      +-------------------+   +-------------------+ <br> |   eth0   |      |    vrf-green      |   |    vrf-red        | <br> | 1.1.1.1  |      |    127.0.0.1      |   |    127.0.0.1      | <br> +----------+      +-------------------+   +-------------------+ <br>                            |                       |            <br>                      +----------+            +----------+       <br>                      |   eth1   |            |   eth2   |       <br>                      | 2.2.2.2  |            | 3.3.3.3  |       <br>                      +----------+            +----------+       </span><br><div><br></div><div>Then this won't work for vrf-red:</div><div></div><div><div style="margin-left:40px">listen=vrf-green:5060 advertise <a href="http://2.2.2.2:5060/" target="_blank">2.2.2.2:5060</a><br>listen=vrf-red:5060 advertise <a href="http://3.3.3.3:5060/" target="_blank">3.3.3.3:5060</a><br></div>One needs to use different IPs for the MASTER devices (say 127.0.0.1 and 127.0.0.2) for kamailio to startup with the above listen directives.</div><div><br></div><div>It's a bit surprising it doesn't work. According to a user on cumulus slack channel (cumulus contributed the VRF code to the linux kernel): "any app that has a command line or option switch to call SO_BINDTODEVICE on the sockets can be configured to use any VRF".</div><div><br></div><div>I guess the problem lies in that kamailio binds to several sockets and there are multiple routing tables to consult, so mhomed doesn't work as expected (if every table has a default route and nothing more specific than that). But still, this doesn't really explain why binding to the VRF master net devices doesn't work (I mean, "ping -I vrf-green" works just fine for ping)...</div><div><br></div><div>I don't think VRF support is very useful for most users though, I just had one corner case I needed to tackle and VRF seemed like an easy fix. I'll think of an alternative at some point, I guess.<br></div><div><br></div><div>On 26 September 2017 at 09:52, Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>> wrote:<br>><br>> Hello,<br>><br>> I haven't worked with vrf here, so no first hand experience ...<br>><br>> What happens if you try with next option?<br>><br>> listen=vrf-green:5060 advertise <a href="http://2.2.2.2:5060/" target="_blank">2.2.2.2:5060</a><br>><br>> Cheers,<br>> Daniel<br>><br>><br>> On 25.09.17 19:10, George Diamantopoulos wrote:<br>><br>> Sorry to bump this, but it would be very useful if I knew whether there's any point in pursuing this or not. Any hints?<br>><br>> On 21 September 2017 at 14:06, George Diamantopoulos <<a href="mailto:georgediam@gmail.com" target="_blank">georgediam@gmail.com</a>> wrote:<br>>><br>>> Hello,<br>>><br>>> I have a use case where I need to have kamailio bind to a VRF device. The configuration in question is similar to the example below, where eth1 is a slave to the VRF-lite device:<br>>><br>>>  +----------+      +-------------------+<br>>>  |   eth0   |      |    vrf-green      |<br>>>  | 1.1.1.1  |      |    127.0.0.1      |<br>>>  +----------+      +-------------------+<br>>>                             |          <br>>>                       +----------+     <br>>>                       |   eth1   |   <br>>>                       | 2.2.2.2  |  <br>>>                       +----------+<br>>><br>>> Both the main routing table and "vrf-green" routing table have a default route.<br>>><br>>> What I need to be able to do is have kamailio bind to both interfaces:<br>>><br>>> listen=eth0:5060<br>>> listen=vrf-green:5060<br>>><br>>> And additionally be able to use force_send_socket to select an interface, for example:<br>>><br>>> force_send_socket(udp:<a href="http://2.2.2.2:5060/" target="_blank">2.2.2.2:<wbr>5060</a>);<br>>><br>>> However, I can't get this to work. The above configuration fails because there is no listen directive for 2.2.2.2. Also, kamailio doesn't process packets received on the VRF with the above listen directives, it behaves as if it doesn't listen on 2.2.2.2 indeed.<br>>><br>>> In addition using either of the below:<br>>><br>>> listen=udp:<a href="http://2.2.2.2:5060/" target="_blank">2.2.2.2:5060</a><br>>> or<br>>> listen=eth1:5060<br>>><br>>> fails with an error upon starting kamailio.<br>>><br>>> According to the kernel documentation:<br>>><br>>> Applications that are to work within a VRF need to bind their socket to the<br>>> VRF device:<br>>><br>>>     setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev)+1);<br>>><br>>> or to specify the output device using cmsg and IP_PKTINFO.<br>>><br>>> The question is, is VRF useable with kamailio right now? Or is development needed? Thanks!<br>>><br>>> BR,<br>>><br>>> George<br>><br>><br>><br>><br>> ______________________________<wbr>_________________<br>> Kamailio (SER) - Users Mailing List<br>> <a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>> <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br>><br>><br>> -- <br>> Daniel-Constantin Mierla<br>> <a href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank">www.linkedin.com/in/miconda</a><br>> Kamailio Advanced Training - <a href="http://www.asipto.com/" target="_blank">www.asipto.com</a><br>> Kamailio World Conference - <a href="http://www.kamailioworld.com/" target="_blank">www.kamailioworld.com</a><br><br></div></div>
______________________________<wbr>_________________<br>Kamailio (SER) - Users Mailing List<br><a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br><a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br></div></blockquote></div><br><div>
<div><div><br></div></div></div></div></div></div></div><br>______________________________<wbr>_________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br>
<br></blockquote></div><br></div>
______________________________<wbr>_________________<br>Kamailio (SER) - Users Mailing List<br><a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br><a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br></div></blockquote></div><br></div></div></div></div><br>______________________________<wbr>_________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br>
<br></blockquote></div><br></div>
______________________________<wbr>_________________<br>Kamailio (SER) - Users Mailing List<br><a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br><a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br></div></blockquote></div><br></div></div>______________________________<wbr>_________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br>
</blockquote></div></div></div>
______________________________<wbr>_________________<br>Kamailio (SER) - Users Mailing List<br><a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br><a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br></div></blockquote></div><br></div></div></div></div><br>______________________________<wbr>_________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/<wbr>cgi-bin/mailman/listinfo/sr-<wbr>users</a><br>
<br></blockquote></div><br></div>