Hi all,
I'm trying to run a kamailio DMQ node inside a docker container. All works fine but i have one issue with DMQ. Since the kamailio process inside the container is behind a nat i have set the advertise address to the external ip, this works fine for the via headers but DMQ keeps sending the internal interface in the KDMQ notification_peer messages. The external ip is in there as well. Example:
SIP/2.0 200 OK Via: SIP/2.0/UDP 10.10.10.13;branch=z9hG4bK2dcb.c6326de2000000000000000000000000.0 To: sip:notification_peer@10.10.10.94:5060;tag=616b7acb681ed5e9cbc485b3faa09d62.0a3d From: sip:notification_peer@10.10.10.13:5060;tag=e8f29c06c4b85a188f6533f08d60feb6-ff29 CSeq: 10 KDMQ Call-ID: 17042656602ca532-23367@x.x.x.x Content-Type: text/plain Server: kamailio (5.1.4 (x86_64/linux)) Content-Length: 222
sip:10.10.10.13:5060;status=active sip:10.10.10.12:5060;status=active sip:10.10.10.92:5060;status=active sip:10.10.10.93:5060;status=active sip:10.10.10.94:5060;status=active <-- entry for container external ip sip:172.17.0.2:5060;status=disabled <-- entry for container internal ip
I tried to strip this entry using the replace_body_atonce in the tm:local-request route. This works fine for the KDMQ request, but when i try to remove the same line from 200OK responses that are send out as a response to incomming KDMQ messages this seems to fail. I use the following code:
# Working code (for outgoing KDMQ requests): event_route [tm:local-request] { if(is_method("KDMQ") && $rU == "notification_peer") replace_body_atonce("sip:172.17.0.*:5060;status=.*", ""); }
# Failing code (for 200OK responses): reply_route { xlog("L_ALERT", "REPLY: Sending out reply, tU is $tU rs is $rs\n"); if ($rs == "200" && $tU == "notification_peer") { replace_body_atonce("sip:172.17.0.*:5060;status=.*", ""); } }
I'm running kamailio 5.1.4. Is there a way to strip a line from the body of a local generated 200OK response? Or is there a way to avoid that DMQ inserts the internal container ip in the first place.
Thanks,
Jan Hazenberg