<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Hi,</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I am working on a project involving Kamailio dockerezation, which is meant to run alongside Freeswitch and RTPEngine containers, on the basis of a Docker-Compose file which is launched on top of a CentOS 7.7 host system<span style="color:rgb(0,0,0); font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt">.</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I was able to create and run the containers successfully, they are starting and listening to the correct ports, but for some unexplained reason - the incoming SIP traffic is not getting picked up by Kamailio. I can easily trace the traffic from the host, but
 when SSHing the container and running a test from within, no traffic goes by.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I've used netcat to generate plain UDP traffic to the container, and it was logged into the Kamailio log files, but real-life traffic doesn't seem to work.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I've tried moving to host mode (from bridge), but it didn't make any difference. All required firewall rules were opened obviously, I've also tried shutting the firewall off completely but it didn't help.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Does anyone experienced anything similar while running Kamailio in Dockers, and could provide me a go-through on what steps did he take to fix it?</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
EXCERPT FROM MY DOCKERFILE</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<pre style="background-color:#ffffff; color:#080808; font-family:'JetBrains Mono',monospace; font-size:9.8pt"><span style="color:#8c8c8c; font-style:italic"># Getting Kamailio source code from GIT<br></span><span style="color:#0033b3">RUN </span>mkdir <span style="color:#0033b3">-</span>p <span style="color:#0033b3">/</span>usr<span style="color:#0033b3">/</span>local<span style="color:#0033b3">/</span>src<span style="color:#0033b3">/</span>kamailio-5<span style="color:#1750eb">.3<br></span><span style="color:#0033b3">WORKDIR /</span>usr<span style="color:#0033b3">/</span>local<span style="color:#0033b3">/</span>src<span style="color:#0033b3">/</span>kamailio-5<span style="color:#1750eb">.3<br></span><span style="color:#0033b3">RUN </span>git clone <span style="color:#0033b3">--</span>depth <span style="color:#1750eb">1 </span><span style="color:#0033b3">--</span>no-single-branch https:<span style="color:#0033b3">//</span>github.com<span style="color:#0033b3">/</span>kamailio<span style="color:#0033b3">/</span>kamailio<br><span style="color:#0033b3">WORKDIR /</span>usr<span style="color:#0033b3">/</span>local<span style="color:#0033b3">/</span>src<span style="color:#0033b3">/</span>kamailio-5<span style="color:#1750eb">.3</span><span style="color:#0033b3">/</span>kamailio<br><span style="color:#0033b3">RUN </span>git checkout <span style="color:#0033b3">-</span>b <span style="color:#1750eb">5.3.2<br></span><span style="color:#1750eb"><br></span><span style="color:#8c8c8c; font-style:italic"># Compile the source code and install Kamailio<br></span><span style="color:#0033b3">RUN </span>make include_modules=<span style="color:#067d17">"phonenum db_mysql xmlrpc http_async_client jansson auth_db nathelper websocket tls outbound topoh http_client" </span>cfg <span style="color:#0033b3">&& </span>\<br>    make all <span style="color:#0033b3">&& </span>make install<br><br><span style="color:#8c8c8c; font-style:italic"># Default setting is to run Kamailio as user “kamailio” and group “kamailio”<br></span><span style="color:#0033b3">RUN </span>adduser <span style="color:#0033b3">--</span>quiet <span style="color:#0033b3">--</span>system <span style="color:#0033b3">--</span>group <span style="color:#0033b3">--</span>disabled-password \<br>        <span style="color:#0033b3">--</span>shell <span style="color:#0033b3">/</span>bin<span style="color:#0033b3">/</span>false <span style="color:#0033b3">--</span>gecos <span style="color:#067d17">"Kamailio" </span>\<br>        <span style="color:#0033b3">--</span>home <span style="color:#0033b3">/</span>var<span style="color:#0033b3">/</span>run<span style="color:#0033b3">/</span>kamailio kamailio<br><br><span style="color:#8c8c8c; font-style:italic"># To use init.d script for starting/stopping the Kamailio server<br></span><span style="color:#0033b3">COPY </span>Init<span style="color:#0033b3">/</span>kamailio <span style="color:#0033b3">/</span>etc<span style="color:#0033b3">/</span>init.d<span style="color:#0033b3">/<br></span><span style="color:#0033b3">RUN </span>chmod <span style="color:#1750eb">755 </span><span style="color:#0033b3">/</span>etc<span style="color:#0033b3">/</span>init.d<span style="color:#0033b3">/</span>kamailio<br><span style="color:#0033b3">COPY </span>Default<span style="color:#0033b3">/</span>kamailio <span style="color:#0033b3">/</span>etc<span style="color:#0033b3">/</span>default<span style="color:#0033b3">/<br></span><span style="color:#0033b3">COPY </span>kamailio.service <span style="color:#0033b3">/</span>etc<span style="color:#0033b3">/</span>systemd<span style="color:#0033b3">/</span>system<span style="color:#0033b3">/<br></span><span style="color:#0033b3">RUN </span>mkdir <span style="color:#0033b3">-</span>p <span style="color:#0033b3">/</span>var<span style="color:#0033b3">/</span>run<span style="color:#0033b3">/</span>kamailio<br><span style="color:#0033b3">RUN </span>chown kamailio:kamailio <span style="color:#0033b3">/</span>var<span style="color:#0033b3">/</span>run<span style="color:#0033b3">/</span>kamailio</pre>
COMPOSE (BRIDGE NETWORK VERSION)</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<pre style="background-color:#ffffff; color:#080808; font-family:'JetBrains Mono',monospace; font-size:9.8pt"><span style="color:#0033b3">kamailioegress</span>:<br>  <span style="color:#0033b3">build</span>: kamailio_egress<br>  <span style="color:#0033b3">image</span>: kamailioegress:latest<br>  <span style="color:#0033b3">container_name</span>: kamailioegress<br>  <span style="color:#0033b3">restart</span>: always<br>  <span style="color:#0033b3">environment</span>:<br>    - DATABASE=kamailioe<br>    - SIP_DOMAIN=XXX<br>    - DBHOST=kamailiodb<br>    - DBROOTUSER=root<br>    - DBROOTPASS=XXX<br>    - PUBLIC_IPV4=XXX<br>  <span style="color:#0033b3">depends_on</span>:<br>    - Kamailio-Base<br>    - kmdb<br>    - freeswitch<br>    - rtpengine<br>  <span style="color:#0033b3">expose</span>:<br>    - <span style="color:#067d17">"5060/udp"<br></span><span style="color:#067d17">    </span>- <span style="color:#067d17">"5060/tcp"<br></span><span style="color:#067d17">  </span><span style="color:#0033b3">ports</span>:<br>    - <span style="color:#067d17">"XXX:5060:5060/udp"<br></span><span style="color:#067d17">  </span><span style="color:#0033b3">networks</span>:<br>    <span style="color:#0033b3">private-net</span>:<br>      <span style="color:#0033b3">ipv4_address</span>: <span style="color:#067d17">"172.18.0.30"<br></span><span style="color:#067d17">  </span><span style="color:#0033b3">deploy</span>:<br>    <span style="color:#0033b3">mode</span>: replicated<br>    <span style="color:#0033b3">replicas</span>: 1<br>    <span style="color:#0033b3">restart_policy</span>:<br>      <span style="color:#0033b3">condition</span>: always<br>      <span style="color:#0033b3">delay</span>: 5s<br>      <span style="color:#0033b3">max_attempts</span>: 3<br>      <span style="color:#0033b3">window</span>: 120s<br></pre>
<pre style="background-color:#ffffff; color:#080808; font-family:'JetBrains Mono',monospace; font-size:9.8pt"><span style="color:#0033b3">networks</span>:<br>  <span style="color:#0033b3">private-net</span>:<br>    <span style="color:#0033b3">driver</span>: bridge<br>    <span style="color:#0033b3">ipam</span>:<br>      <span style="color:#0033b3">config</span>:<br>        - <span style="color:#0033b3">subnet</span>: 172.18.0.0/16<br>    <span style="color:#0033b3">driver_opts</span>:<br>      <span style="color:#0033b3">com.docker.network.bridge.name</span>: wrtcpriv<br>  <span style="color:#0033b3">public-net</span>:<br>    <span style="color:#0033b3">external</span>:<br>      <span style="color:#0033b3">name</span>: host</pre>
<pre style=""><span style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">​COMPOSE (HOST MODE VERSION)</span><br></pre>
<pre style=""><span style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)"><pre style="background-color:#ffffff; color:#080808; font-family:'JetBrains Mono',monospace; font-size:9.8pt"><span style="color:#0033b3">kamailioegress</span>:<br>  <span style="color:#0033b3">build</span>: kamailio_egress<br>  <span style="color:#0033b3">image</span>: kamailioegress:latest<br>  <span style="color:#0033b3">container_name</span>: kamailioegress<br>  <span style="color:#0033b3">network_mode</span>: host<br>  <span style="color:#0033b3">restart</span>: always<br>  <span style="color:#0033b3">environment</span>:<br>    - DATABASE=kamailioe<br>    - SIP_DOMAIN=XXX<br>    - DBHOST=172.18.0.10<br>    - DBROOTUSER=root<br>    - DBROOTPASS=XXX<br>    - PUBLIC_IPV4=XXX<br>    - EGPORT=5060<br>    - LINTE=ens224<br>    - LINTI=ens192<br>    - RTPENGINE=localhost<br>  <span style="color:#0033b3">depends_on</span>:<br>    - Kamailio-Base<br>    - kmdb<br>    - freeswitch<br>    - rtpengine<br>  <span style="color:#0033b3">expose</span>:<br>    - <span style="color:#067d17">"5060/udp"<br></span><span style="color:#067d17">  </span><span style="color:#0033b3">ports</span>:<br>    - <span style="color:#067d17">"213.8.76.13:5060:5060/udp"<br></span><span style="color:#067d17">  </span><span style="color:#0033b3">deploy</span>:<br>    <span style="color:#0033b3">mode</span>: replicated<br>    <span style="color:#0033b3">replicas</span>: 1<br>    <span style="color:#0033b3">restart_policy</span>:<br>      <span style="color:#0033b3">condition</span>: always<br>      <span style="color:#0033b3">delay</span>: 5s<br>      <span style="color:#0033b3">max_attempts</span>: 3<br>      <span style="color:#0033b3">window</span>: 120s</pre></span></pre>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span style="color:rgb(0,0,0); font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt">CONFIG FILE</span><br>
</div>
</div>
<div style="">
<pre style="color:rgb(8,8,8); font-family:"JetBrains Mono",monospace; font-size:9.8pt; background-color:rgb(255,255,255)">/* uncomment and configure the following line if you want Kamailio to<br> * bind on a specific interface/port/proto (default bind on all available) */<br><span style="color:#0033b3">listen</span>=udp:0.0.0.0:LPORT <span style="color:rgb(8,8,8); font-family:"jetbrains mono",monospace; font-size:9.8pt; background-color:rgba(0,0,0,0)">advertise PUBLIC_IP:LPORT</span></pre>
<pre style="color:rgb(8,8,8); font-family:"JetBrains Mono",monospace; font-size:9.8pt; background-color:rgb(255,255,255)"><span style="color:rgb(0,0,0); font-family:Calibri,Arial,Helvetica,sans-serif">KAMAILIO-LOCALE</span><br></pre>
<pre style="background-color:rgb(255,255,255)"><font color="#000000" face="Calibri, Arial, Helvetica, sans-serif"><pre style="background-color:#ffffff; color:#080808; font-family:'JetBrains Mono',monospace; font-size:9.8pt"><span style="color:#8c8c8c; font-style:italic">#!define DBURL "mysql://root:XXX@DBHOST/kamailioe"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!MY_DBURL!mysql://root:XXX@DBHOST/kamailioe!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!RTPENGINE!MY_RTPENGINE!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!SIP_DOMAIN!MY_SIP_DOMAIN!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!PUBLIC_IP!MY_PUBLIC_IP!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!PRIVATE_IP!MY_PRIVATE_IP!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!LPORT!MY_LPORT!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!LINT!MY_LINT!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!HOMER_IP!10.1.0.100!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "!API_URL!http://localhost:3000/v1/mock!g"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "/CCODES/972|380/"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "/NUM_TRANSLATE_OUT_RE/\\\\+?(CCODES)([0-9]+)/"<br></span><span style="color:#8c8c8c; font-style:italic">#!substdef "/NUM_TRANSLATE_IN_RE/0([0-9]+)/"</span></pre><pre style=""><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">​FIREWALL RULES</span><br></pre><pre style=""><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><span>-bash-4.2# firewall-cmd --list-all<br></span><div>public (active)<br></div><div>  target: default<br></div><div>  icmp-block-inversion: no<br></div><div>  interfaces: ens192 ens224<br></div><div>  sources: 192.168.1.39<br></div><div>  services: dhcpv6-client http https sip ssh<br></div><div>  ports: 9323/tcp 9323/udp<br></div><div>  protocols:<br></div><div>  masquerade: no<br></div><div>  forward-ports:<br></div><div>  source-ports:<br></div><div>  icmp-blocks:<br></div><div>  rich rules:<br></div><div>        rule family="ipv4" destination address="XXX" port port="5060" protocol="udp" accept<br></div><div>        rule family="ipv4" destination address="XXX" port port="5060" protocol="tcp" accept</div><div><br></div><div>NETSTAT OUTPUT</div><div><span>Active Internet connections (only servers)<br></span><div>Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name<br></div><div>udp        0      0 XXX:5060        0.0.0.0:*                           22479/kamailio<br></div><span></span><br></div></span></pre>Edward</font></pre>
</div>
</body>
</html>