Andreas Sikkema wrote:
Hi,
Yesterday I noticed something strange happenign one on of our servers. Calls were being sent to servers within our VoIP platform by OpenSER without (as far as I can see) really being handled according to our OpenSER configuration.
When I looked into it, I found that the Request-URI contained the IP address of the internal server, instead of the IP address of our OpenSER machine or our SIP domain.
Maybe someone sent a SIP message with the local IP address in the R-URI to your proxy. According to your config this should not matter as you rewrite the domain for every incoming SIP request - except for loose-route.
For loose-route I would suggest to check for a to-tag too. Then, the called SIP UA should reject the call. You could also use dialog module to see if a dialog exists before forwarding in loose_route.
regards klaus
How can I check that the Request-URI contains only the SIP domain or the IP address of the OpenSER server?
Might this have something to do with the loose_route() block?
Here's (heavily edited) basically our INVITE handling code from openser.cfg:
if (loose_route()) { use_media_proxy();
t_relay(); exit; };
if (method=="INVITE") { t_on_reply("1");
rewritehost("SIP_DOMAIN");
# Check if it is international number format if (uri=~"^sip:00") { strip(2); };
if ( (method == "INVITE") ) { if (!proxy_authorize("SIP_DOMAIN", "subscriber")) { proxy_challenge("SIP_DOMAIN", "0"); exit; };
# let's check from=id ... avoids accounting confusion if (!check_from()) { sl_send_reply("403", "That is ugly -- use
From=id next time (gw)"); exit; }; };
if (is_uri_host_local()) { log("ATS: incoming message is for a local host ($tu)");
route(3);
};