Apart from topoh module (an experimental hack in my opinion)
Why experimental? It is used in production in many places.
How it can be used? Mask IP must be different than SIP server local IP, so it looks like impossible to rewrite public IP address to server local IP address :(