[SR-Users] Wrong src-adress in packets sent from Kamailio when using listen=

Johan Wilfer lists at jttech.se
Thu Jun 27 15:50:25 CEST 2013


Hi!

I've the following setup: Teleco <-> Kamailio <-> Asterisk(s)

The proxy has one public IP (say 1.2.3.4) and one private (10.0.0.1).
The asterisk-pbx:es has private adresses (10.0.0.2 in this example)

I noticed that if I bind like this in kamilio.cfg
listen=tcp:1.2.3.4:5060
listen=udp:1.2.3.4:5060
listen=tcp:10.0.0.1:5060
listen=udp:10.0.0.1:5060

Then if a call comes in from the Telco to Kamailio (1.2.3.4), kamailio 
should forward the SIP-packet from it's private address (10.0.0.1) to 
asterisk (10.0.0.2)

However, the source address of the packets sent from Kamilio to Asterisk 
is wrong - it uses the public ip. Like this (tcpdump output):

15:02:08.999642 IP 1.2.3.4.sip > 10.0.0.1.5060: SIP, length: 1346
15:02:09.474525 IP 1.2.3.4.sip > 10.0.0.1.5060: SIP, length: 1346
15:02:10.474524 IP 1.2.3.4.sip > 10.0.0.1.5060: SIP, length: 1346
15:02:12.474525 IP 1.2.3.4.sip > 10.0.0.1.5060: SIP, length: 1346

Obviously kamailio doesn't get any answers here. The packet goes out of 
the right interface, but with the wrong src-address.

However, if I remove the lines with "listen=" in kamailio.cfg to allow 
kamilio to bind to all interfaces the src-address is correct and 
everything works!

(I've also done some tests with icmp and telnet and the src-addr seems 
right in all these cases.)

Is this a bug or am I missing something here?



-- 
Johan Wilfer



More information about the sr-users mailing list