Hello Klaus,
I have changed the rtpproxy_manage() in the route(NATMANAGE) to no avail. The c= in the
Invite that arrives to Asterisk still points to the public IP of the Phone1.
Code is as follows:
route[NATMANAGE] {
#!ifdef WITH_NAT
if (is_request()) {
if(has_totag()) {
if(check_route_param("nat=yes")) {
setbflag(FLB_NATB);
}
}
}
if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB)))
return;
if (src_ip == ip.pbx.priva.te) {
rtpproxy_manage();
} else {
rtpproxy_manage("","ip.kamailio.priva.te");
}
if (is_request()) {
if (!has_totag()) {
add_rr_param(";nat=yes");
}
}
if (is_reply()) {
if(isbflagset(FLB_NATB)) {
fix_nated_contact();
}
}
The next test has been to comment out the rtpproxy_manage at NATMANAGE function and to put
it both at route[RELAY] and onreply(route) following your post in this list from January
2013:
.
Now the media flows from Phone1 to Kamailio, from Kamailio to Asterisk and back, but it
gets stuck at Kamailio. I cannot see it flow towards the public IP of the Phone2.
The force_send_socket you used could be of any use here?
Thank you
----- Original Message -----
From: Klaus Darilion
Sent: 01/21/14 07:25 AM
To: Kamailio (SER) - Users Mailing List
Subject: Re: [SR-Users] Kamailio behind NAT
Yes, when calling rtpproxy (whatever function you use,
manage/offer/answer/force), every function accepts as second parameter
the IP address which should be written into the SDP c=... line.
So, detect the direction (eg based on source-ip) and put the respective
internal or external IP address into the SDP.
Of course the NAT must be a static 1:1 NAT without any PAT.
Btw: you have the same problem with some SIP headers, like Record-Route
or Via. Kamailio has to insert the respective public/private IP,
depending on where to send the message. If Kamailio uses only a single
socket, then you have to do this manually. The automatic approach is to
configure 2 listen=... sockets. One for the internal side, and one for
the external side. On the "external" socket you add the "advertise"
option - then Kamailio will automatically put the correct IP addresses
in RR and Via, eg:
# public IP address of Kamailio/rtpproxy: 3.3.3.3
# internal socket
listen=udp:10.10.0.2
# external socket
listen=udp:10.10.0.3 advertise 3.3.3.3:5060
mhomed=0
You could use separate subnets for the 2 sockets, or you could also use
only a single IP address with 2 different ports for the 2 sockets.
regards
Klaus
On 21.01.2014 14:50, John Smith wrote:
The intended setup is as you described in option
a.
And the behaviour of rewriting SDP using private/public ports is what I understood the
rtpproxy_manage was tasked to do.
As it is not working the way I expected, what is the best way to proceed? To check if the
IP is from the outside and then rewrite via rtpproxy_offer in the NATMANAGE block?
Thank you
----- Original Message -----
From: Klaus Darilion
Sent: 01/21/14 05:25 AM
To: Kamailio (SER) - Users Mailing List
Subject: Re: [SR-Users] Kamailio behind NAT
On 21.01.2014 13:24, John Smith wrote:
I might be making wrong assumptions regarding
this traffic flow. Is that correct?
That depends on your policy. It is up to you to define how RTP should be
routed. There are basically 2 choices:
a) RTP from clients is handled by rtpproxy:
phone1 <-nat-> rtpproxy <--> Asterisk <--> rtpproxy <-nat->
phone2
In this case, only the private IP of Kamailio and rtpproxy (can be the
same IP address) must be mapped to a public IP address.
b) RTP directly to Asterisk:
phone1 <-nat-> Asterisk <-nat-> phone2
In this case, the private IPs of Kamailio and Asterisk must be mapped to
a public IP address.
When using version a) you have to make sure to set the proper IP address
in the SDP. For example, SDPs in messages from Kamailio to the phone
must contains the PUBLIC IP of rtpproxy in the c=... line. SDPs in
messages from Kamailio to Asterisk must contain the PRIVATE IP of
rtpproxy in the c=... line.
regards
Klaus
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users