I've configured ser to listen on two ports, in the ser.cfg:
listen=a.b.c.d:5060 listen=a.b.c.d:5062
The idea is that 'normal' public traffic and traffic that can be handled by normal 'nat' detectors will be directed to port 5060, but traffic that I know is difficult is directed to register and use a.b.c.d:5062 as the SIP server.
This all works great in the NAT (inside) -> SER -> somewhere direction, but I've discovered that when any device which registers to the 5062 port, the fact that it arrived on an alternative port doesnt seem to be remembered.
Therefore, when I have a somewhere -> SER -> NAT (inside) call, (on a 5062 registered device) although SER remembers the port on the NAT device to forward the INVITE to, it sends it from port 5060 - which at least on my test nat router is enough for it to reject the packet and not pass it inside.
Any thoughts? Is this a configuration item I've missed, or is this a current issue with SER?
Linus
(* The other reason for using port 5062 is that it 'SIP aware' but possibily broken NAT routers won't rewrite the traffic if its not on port 5060)