Hi Henning,
Here is an example where I call set_advertised_address() and
set_advertised_port() before relaying to the B2BUA:
route
{
...
...
t_on_reply("REPLY_FROM_B2BUA");
if (!add_contact_alias()) {
xlog("L_ERR", "sip_call_id=$ci; Failed aliasing contact
$ct
");
send_reply("400", "Bad request");
exit;
}
rewritehostport("<%= @ipaddr %>:1024");
set_advertised_address("<%= @ipaddr %>");
set_advertised_port(5060);
if (!t_relay_to_udp("<%= @ipaddr %>", "1024")) {
xlog("L_ERR", "sip_call_id=$ci; Failed relaying $rm to
b2bua");
sl_reply_error();
}
}
The SIP message sent from kamailio to B2BUA after that looks like:
IP (tos 0x10, ttl 64, id 53886, offset 0, flags [none], proto UDP (17),
length 1509)
10.99.8.107.5060 > 10.99.8.107.1024: [bad udp cksum 0x2b7e -> 0xf867!]
UDP, length 1481
E....~..@.|.
c.k
c.k......+~INVITE sip:301@10.99.8.107:1024 SIP/2.0
Record-Route: <sip:18.156.22.8;lr=on;ftag=51c5ba2b8447498798a4e630dca6c17a>
Via: SIP/2.0/UDP 10.99.8.107:5060
;branch=z9hG4bKa09f.30a09da6e92bdfa999ccb517ecba6f97.0
Via: SIP/2.0/UDP 10.9.18.77:50342
;received=37.202.8.10;rport=50342;branch=z9hG4bKPj888cd8a8501547fc851e5724ef3f7b1a
Max-Forwards: 69
From: <sip:74807310@18.156.22.8>;tag=51c5ba2b8447498798a4e630dca6c17a
To: <sip:301@18.156.22.8>
Contact: <sip:74807310@10.9.18.77:50342
;alias=37.202.8.10~50342~1;alias=37.202.8.10~50342~1;ob>
Call-ID: f92450e6fad14d59bfea70100358bd05
CSeq: 232 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY,
REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: MicroSIP/3.19.28
Authorization: Digest username="74807310", realm="
hpbx200-1.euc1.telecomsvc.com", nonce="Xt3p017d6KfFSpRngRjuDCInFYIAVnPB",
uri="sip:301@18.156.22.8",
response="5e8f6a54064aba0d703c62dcbc746807"
Content-Type: application/sdp
Content-Length: 386
P-Debug-header: advertized local
where 18.156.22.8 in the *'Record-Route'* header is an external IP set by
the '*advertise*' setting in the '*listen*' block:
listen=udp:<%= @ipaddr %>:5060 advertise <%= node['hpbx'][
'nat_public_ipaddr'] %>:5060
and 10.99.8.107:5060 in the *'Via'* header is an internal IP:port replaced
by *set_advertised_address*() and *set_advertised_port*() functions before
relaying to B2BUA. So, I need '*Record-Route*' to be having internal IP
just as in the '*Via*' header.
The functions such enable_double_rr() and record_route_advertised_address()
did not help here.
Any ideas?
Thanks,
Andrey
вс, 7 июн. 2020 г. в 12:35, Henning Westerholt <hw(a)skalatan.de>de>:
Hello,
not know the details of your cfg, but did you tried already to deactivate
this parameter:
https://kamailio.org/docs/modules/devel/modules/rr.html#rr.p.enable_double_…
Another option could be not not use record_route() but this function
instead:
https://kamailio.org/docs/modules/devel/modules/rr.html#rr.f.record_route_a…
Cheers,
Henning
--
Henning Westerholt –
https://skalatan.de/blog/
Kamailio services –
https://gilawa.com
*From:* sr-dev <sr-dev-bounces(a)lists.kamailio.org> *On Behalf Of *Andrey
Deykunov
*Sent:* Friday, June 5, 2020 2:33 PM
*To:* Kamailio (SER) - Development Mailing List <sr-dev(a)lists.kamailio.org
*Subject:* [sr-dev] Removing Record-Route
header
Hi guys,
I'm using Kamailio 5.3.1 in the AWS cloud. For this purpose I'm setting up
a 'nat_public_ipaddr' in the 'advertise' feature:
listen=tls:<%= @ipaddr %>:5061 advertise <%= node['hpbx'][
'nat_public_ipaddr'] %>:5061
listen=tcp:<%= @ipaddr %>:5060 advertise <%= node['hpbx'][
'nat_public_ipaddr'] %>:5060
listen=udp:<%= @ipaddr %>:5060 advertise <%= node['hpbx'][
'nat_public_ipaddr'] %>:5060
When I need relaying an incoming message to one of our internal services
(for example B2BUA, VMAIL etc) I'm setting up an internal address
'@ipaddr' in the Via header instead of 'nat_public_ipaddr' :
set_advertised_address("<%= @ipaddr %>");
set_advertised_port(5060);
All works fine, but Kamailio adds a 'Record-Route' header containing
'nat_public_ipaddr' automatically into such messages. How can I remove this
header or insert my internal address instead before relaying the message?
Is it possible?
Thanks,
Andrey