Hello,
you have to use rtpproxy in bridge mode, to route packets between the
two local network interfaces. There are many examples out there, one
shows even how to bridge between ipv4 and ipv4 networks -- you can use
it as reference:
-
I have Kamailio on OpenSUSE with static real Public IP (WAN), for ex.
1.1.1.1. I have LAN IP 2.2.2.2. Asterisk as KVM virtual machine with
LAN IP 2.2.2.101 and default GW not the SuSe (2.2.2.2), but 2.2.2.1
pfsense LAN with PUB IP 1.1.1.2) I am configured Registration of UA on
Kamailio DB, and on Asterisk side create a static peers with Kamailio
LAN ip (host=2.2.2.2).
RTP Proxy question.
/usr/sbin/rtpproxy -u daemon -l 1.1.1.1 -s udp:127.0.0.1 12221
.... kamailio.cfg ...
# RTPProxy control
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;
rtpproxy_manage();
if (is_request()) {
if (!has_totag()) {
add_rr_param(";nat=yes");
}
}
if (is_reply()) {
if(isbflagset(FLB_NATB)) {
fix_nated_contact();
}
}
#!endif
return;
}
Testing call:
Whe User 1-100 calling User 1-101, on Asterisk side I see:
-- Called SIP/1-100(a)sip1.somedomain.com.ua
<mailto:1-100@sip1.somedomain.com.ua>
-- SIP/sip1.somedomain.com.ua-000004cf is ringing
-- SIP/sip1.somedomain.com.ua-000004cf answered SIP/1-101-000004ce
0x15bc370 -- Probation passed - setting RTP
source address to
1.1.1.1:50868 <http://1.1.1.1:50868>
0x7f2b6044bd10 -- Probation passed - setting RTP
source
address to 1.1.1.1:35082 <http://1.1.1.1:35082>
Got RTP packet from 1.1.1.1:50868 <http://1.1.1.1:50868> (type 00,
seq 027109, ts 000160, len 000160)
Sent RTP packet to 1.1.1.1:35082 <http://1.1.1.1:35082> (type 00, seq
037469, ts 000160, len 000160)
Got RTP packet from 1.1.1.1:50868 <http://1.1.1.1:50868> (type 00,
seq 027110, ts 000320, len 000160)
Sent RTP packet to 1.1.1.1:35082 <http://1.1.1.1:35082> (type 00, seq
037470, ts 000320, len 000160)
Got RTP packet from 1.1.1.1:50868 <http://1.1.1.1:50868> (type 00,
seq 027111, ts 000480, len 000160)
Sent RTP packet to 1.1.1.1:35082 <http://1.1.1.1:35082> (type 00, seq
037471, ts 000480, len 000160)
Got RTP packet from 1.1.1.1:50868 <http://1.1.1.1:50868> (type 00,
seq 027112, ts 000640, len 000160)
Sent RTP packet to 1.1.1.1:35082 <http://1.1.1.1:35082> (type 00, seq
037472, ts 000640, len 000160)
Voice transfers OK.
But why not Kamailio LAN ip I receiving on the Asterisk side with the
same LAN?
And Kamailio log grep:
skynet:~ # tail -f /var/log/messages | grep rtpproxy
2013-08-05T19:18:17.508760+03:00 skynet kamailio[25462]: 3(25481)
DEBUG: rtpproxy [rtpproxy_funcs.c:148]: check_content_type(): type
<application/sdp> found valid
2013-08-05T19:18:17.508875+03:00 skynet kamailio[25462]: 3(25481)
DEBUG: rtpproxy [rtpproxy.c:2624]: force_rtp_proxy(): proxy reply:
63566 1.1.1.1
2013-08-05T19:18:17.530765+03:00 skynet kamailio[25462]: 6(25484)
DEBUG: rtpproxy [rtpproxy_funcs.c:148]: check_content_type(): type
<application/sdp> found valid
2013-08-05T19:18:17.530876+03:00 skynet kamailio[25462]: 6(25484)
DEBUG: rtpproxy [rtpproxy.c:2624]: force_rtp_proxy(): proxy reply:
41958 1.1.1.1
2013-08-05T19:18:18.625815+03:00 skynet kamailio[25462]: 4(25482)
DEBUG: rtpproxy [rtpproxy_funcs.c:148]: check_content_type(): type
<application/sdp> found valid
2013-08-05T19:18:18.627131+03:00 skynet kamailio[25462]: 4(25482)
DEBUG: rtpproxy [rtpproxy.c:2624]: force_rtp_proxy(): proxy reply:
39876 1.1.1.1
2013-08-05T19:18:18.632649+03:00 skynet kamailio[25462]: a=nortpproxy:yes
2013-08-05T19:18:18.648075+03:00 skynet kamailio[25462]: 6(25484)
DEBUG: rtpproxy [rtpproxy_funcs.c:148]: check_content_type(): type
<application/sdp> found valid
2013-08-05T19:18:18.649615+03:00 skynet kamailio[25462]: 6(25484)
DEBUG: rtpproxy [rtpproxy.c:2624]: force_rtp_proxy(): proxy reply:
43500 1.1.1.1
2013-08-05T19:18:18.653948+03:00 skynet kamailio[25462]: a=nortpproxy:yes
2013-08-05T19:18:18.688603+03:00 skynet kamailio[25462]: 4(25482)
DEBUG: rtpproxy [rtpproxy_funcs.c:148]: check_content_type(): type
<application/sdp> found valid
2013-08-05T19:18:18.689762+03:00 skynet kamailio[25462]: 4(25482)
DEBUG: rtpproxy [rtpproxy.c:2624]: force_rtp_proxy(): proxy reply:
63566 1.1.1.1
2013-08-05T19:18:18.701062+03:00 skynet kamailio[25462]: 6(25484)
DEBUG: rtpproxy [rtpproxy_funcs.c:148]: check_content_type(): type
<application/sdp> found valid
2013-08-05T19:18:18.701405+03:00 skynet kamailio[25462]: 6(25484)
DEBUG: rtpproxy [rtpproxy.c:2624]: force_rtp_proxy(): proxy reply:
43500 1.1.1.1
2013-08-05T19:18:18.705506+03:00 skynet kamailio[25462]: a=nortpproxy:yes
My goal is using Asterisk boxes behind Kamailio with the same LAN or
even OpeVPN Lan2Lan, with Public IP on Kamailio WAN for users
registration and RTP routing. So is strange to my, why RTPproxy not
rewrite source of RTP traffic from PUBLIC Kamailio IP to LAN Kamailio
IP when user A calls B via Asterisk?
_______________________________________________
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