Hi,
Looking at an issue with SIP-Cisco and a Barracuda firewall, I've come across something I need to know more about.
The setup is as follows: CLIENT -> KAMAILIO -> ASTERISK CLIENT <- KAMAILIO <- ASTERISK
Client sends INVITE, Kamailio forwards to Asterisk, SIP 100 and SIP 183 are being sent and finally a 200 OK. We now expect the Client to send back an ACK packet, but that never reaches us.
In this case the SIP 183 is the first packet that contains the full record route of the path, the 200 OK contain the same record-routes being:
Record-Route: sip:192.168.0.200;r2=on;lr;ftag=12D1120C-1C4;did=4c8.9203;nat=yes Record-Route: sip:1.2.3.4;r2=on;lr;ftag=12D1120C-1C4;did=4c8.9203;nat=yes Record-Route: sip:4.3.2.1;r2=on;lr;did=4c8.3f471377 Record-Route: sip:10.0.0.101;r2=on;lr;did=4c8.3f471377
192.168.0.200 is the private address of Kamailio 1.2.3.4 is the public address of Kamailio 4.3.2.1 is the public address of the Client 10.0.0.101 is some private addres of the Client
What we're seeing is that the Client is sending his ACK message to our 192.169.200 private address, which he will never reach. So me question in this case is; is the order of the Record-route headers relevant and do I have any say in which order Kamailio outputs these headers?
To be clear, the Kamailio config only contains one reference to record_route which is caught for INVITE messages, which only fires when all things like NAT and transaction checks haven't already picked it up.
Kind regards, Dirk