[SR-Users] Help with rewriting headers for NAT manually

Chad ccolumbu at hotmail.com
Fri Jan 14 16:26:50 CET 2022

We are looking for some help (possibly a paid consultant) to help us with our Kamailio setup.
To keep this as short as possible: we use Kamailio as a NAT proxy to bridge our external IP and our private IP asterisk 
servers (via dispatcher).
However both the external IP and the internal IP that the Kamailio server uses are virtual IPs created by keepalived.
Because of that neither mhomed nor fix_nated_contact work, and we use force_send_socket to direct the traffic.
We run linux Debian 10 for the OS.
Also we do not use a DB at all, everything is done with local config files.

The problem is that when traffic goes out the Contact header has a private IP in it, like:
Contact: <sip:##########@10.10.10.###]:5060>

There are 2 possible solutions to this:
1. Make changes to linux, keepalived and/or Kamailio so that Kamailio recognize the virtual IPs so that mhomed and 
fix_nated_contact work as usual.

2. Create a manual header rewrite system.

If solution #2:
What we need to do is create a way to rewrite the contact header to the external IP on the way out, and on the way back 
rewrite it back to the internal server that the call is already connected to.

Not sure if we will need to store those paths on the server or if we can do some kind of cheat with another persistant 
header like P-Preferred-Identity or P-Asserted-Identity (i.e. store the internal IP in the name field or something).

If anyone out there know of a way to do this or wants to give it a try please reach out to me.

Thank you all for your time.


More information about the sr-users mailing list