To resolve such an issue I switched to use IPv6 on internal SIP servers for signaling and IPv4 for RTPmedia.
For me works like a charm. On Mon, Sep 7, 2020 at 9:58 AM Olle E. Johansson <[email protected]> wrote: > You need to define another listen= without the advertise for communication > with internal servers. Either another IP or another port. > > /O > > On 6 Sep 2020, at 17:34, Moshe Katz <[email protected]> wrote: > > Hello all, > > (Note: I previously posted a more detailed version of this question on > StackOverflow at https://stackoverflow.com/q/63760506/829970 . This > version is simplified to fit better in an email.) > > I have Kamailio 5.4.1 (and RTPEngine) running on an internal server with a > private IP address 172.31.7.96 and One-to-one NAT to an external IP > address. The external IP is 192.0.2.100. (Note: The internal IP addresses > are all unedited, but the public IPs have been replaced with TEST-NET-1 and > TEST-NET-2 example addresses.) I will eventually be doing transcoding with > RTPEngine, but for now this is a simple SIP Proxy. > > Kamailio is installed on Ubuntu 18.04 using the DEB packages from > dev.kamailio.org/kamailio54 and is using the stock configuration that > comes with those packages, except for the following changes: > > #!define WITH_NAT > #!define WITH_RTPENGINE > #!define WITH_MYSQL > #!define WITH_AUTH > #!define WITH_IPAUTH > > listen=udp:0.0.0.0:5060 advertise 192.0.2.100:5060 > > #!define DBURL "mysql://kamailio:[email protected]/kamailio" > > > I have internal SIP servers with private IP addresses in the 172.31.7.0/24 > range that I want to have send all SIP traffic through the Kamailio server. > The internal servers are running a Java SIP client with the > `OUTBOUND_PROXY` setting set to 172.31.7.96. > > The problem I have is that the SIP `200 OK` message sent by Kamailio to my > SIP server has its `Record-Route` header set to the public IP address > `192.0.2.100` instead of the private address `172.31.7.96`. The SIP client > therefore tries to send the `ACK` message back to the public address, but > it has no route to the public address so the ACK never gets sent. > > How can I configure Kamailio to use the public IP for external traffic but > the private IP for communicating with internal machines on the same subnet? > > I tried setting `mhomed=1`, but the machine isn't actually multi-homed so > that didn't work. > > I thought of adding a second listen line `listen=udp:172.31.7.96:5061` > and having the internal servers talk to port 5061, but that doesn't work > because Kamailio uses the 5061 definition for the external side too. > > I see in the docs that it is possible to name the listener lines, but I > don't understand how to use those names in a way that would be relevant to > my issue. > > Thank you very much for your help, > > Moshe > _______________________________________________ > Kamailio (SER) - Users Mailing List > [email protected] > https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users > > > _______________________________________________ > Kamailio (SER) - Users Mailing List > [email protected] > https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users >
_______________________________________________ Kamailio (SER) - Users Mailing List [email protected] https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
