Hello!
I got the following problem. My 200 OK with SDP sends the private ip
of the B-Leg party.
Kamailio is multihomed (pulic/private address) in front of an ivr system.
222.222.222.222 public ip kamailio
172.20.100.74 private ip kamailio
172.20.100.61 private ip ivr
217.217.217.217 public ip uac
172.20.100.203 private ip uac
U 2012/04/13 13:56:57.307314 222.222.222.222:5060 -> 217.217.217.217:42885
SIP/2.0 200 Ok.
Via: SIP/2.0/UDP
172.20.100.103:28472;rport=42885;branch=z9hG4bK-d8754z-824b81ca678a7de4-1---d8754z-;received=217.217.217.217.
From: <sip:4horsmann@222.222.222.222>;tag=e9d1124c.
To: <sip:kalkbrenner@222.222.222.222>;tag=ds-1c78ac-2ca01e29.
Call-ID: NjQ5YWU0NGYxZjM3YWJhYmE5ZWYxYmQzZjYzYzQyMzI..
CSeq: 2 INVITE.
Content-Length: 202.
Content-Type: application/sdp.
Record-Route: <sip:172.20.100.74;r2=on;lr=on;ftag=e9d1124c;nat=yes>.
Record-Route: <sip:222.222.222.222;r2=on;lr=on;ftag=e9d1124c;nat=yes>.
Supported: replaces.
Supported: 100rel.
Allow: INVITE.
Allow: ACK.
Allow: BYE.
Allow: CANCEL.
Allow: OPTIONS.
Allow: NOTIFY.
Allow: REFER.
Allow: PRACK.
Allow: INFO.
Allow: UPDATE.
Allow: MESSAGE.
Contact: <sip:172.20.100.61:5060>.
P-hint: NATMANAGE WITH SDP.
.
v=0.
o=aculab-04246C01 2060618394 2060618394 IN IP4 212.59.42.189.
s=-.
c=IN IP4 222.222.222.222.
t=0 0.
m=audio 40390 RTP/AVP 0 101.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=nortpproxy:yes.
##############################################################
# RTPProxy control
route[NATMANAGE] {
#!ifdef WITH_NAT
xlog("NATMANAGE M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
if(has_body("application/sdp")) {
xlog("NATMANAGE M=$rm with SDP\n");
append_hf("P-hint: NATMANAGE WITH SDP\r\n");
fix_nated_contact();
}
if (is_request()) {
if(has_totag()) {
if(check_route_param("nat=yes")) {
setbflag(FLB_NATB);
}
}
}
if (isbflagset(FLB_NATB))
return;
if (dst_ip == 212.59.42.189) {
xlog("rtpproxy_manage extern zu intern\n");
#rtpproxy_manage("OCFEI","172.20.10.74");
rtpproxy_manage("FWCEI","172.20.10.74");
#xlog("e->i Body vor fix: $rb\n");
#fix_nated_contact();
#xlog("e->i Body nach fix: $rb\n");
} else {
xlog("rtpproxy_manage intern zu extern\n");
#rtpproxy_manage("OCFIE","222.222.222.222");
rtpproxy_manage("FWCIE","222.222.222.222");
xlog("i->e Body vor fix: $rb\n");
fix_nated_contact();
xlog("i->e Body nach fix: $rb\n");
}
if (is_request()) {
if (!has_totag()) {
add_rr_param(";nat=yes");
}
}
if (is_reply()) {
if(isbflagset(FLB_NATB)) {
fix_nated_contact();
}
}
#!endif
return;
}
--
Mit freundlichen Grüßen
*Karsten Horsmann*