<div dir="ltr"><div dir="ltr">On Fri, Aug 18, 2023 at 10:09 AM Mark Murawski <<a href="mailto:markm-lists@intellasoft.net">markm-lists@intellasoft.net</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I've seen this happen three times in the wild now.  I've been trying to <br>
isolate the source of the issue, but so far it seems like there's not <br>
enough debug output to know why this occurs.<br>
<br>
Long story short:<br>
- Start Asterisk<br>
- PJSIP Handles receiving INVITE from ITSP via WAN (Asterisk is behind <br>
NAT).  SIP is handled correctly, Asterisk responds OK with RTP media <br>
address of external_media_address<br>
- After 30 minutes to an hour or sometimes months later after startup, <br>
upon receiving INVITE from ITSP via WAN, Asterisk responds OK with <br>
INTERNAL LAN IP instead of external_media_address<br>
- I've observed this occur after 30 minutes from startup with no <br>
configuration changes that were made or any pjsip reloads done during <br>
this period<br></blockquote><div><br></div><div>Any network change activity going on at the time?  VPN coming up or down?  Network interface flapping? DNS availability issue (could still be an issue even though you're using ip addresses for local_net)?  </div><div><br></div><div>One way to get more information would be to modify that ast_sip_transport_is_local block in res_pjsip_session:session_outgoing_nat_hook to print more debug info if the ast_sip_transport_is_local check fails and the destination is your itsp.  If you want really detailed info, you could compile with DONT_OPTIMIZE and put an abort() in there then run ast_coredumper when asterisk crashes to get the backtrace.  That's a service disruption of course.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
pjsip<br>
-------------<br>
[global]<br>
endpoint_identifier_order = username,ip,anonymous<br>
<br>
[system]<br>
type=system<br>
threadpool_initial_size=30<br>
threadpool_auto_increment=5<br>
threadpool_idle_timeout=0<br>
threadpool_max_size=100<br>
<br>
[transport-udp]<br>
type                       = transport<br>
symmetric_transport        = yes<br>
protocol                   = udp<br>
bind                       = <a href="http://0.0.0.0:5060" rel="noreferrer" target="_blank">0.0.0.0:5060</a><br>
external_media_address     = 152.X.Y.Z<br>
external_signaling_address = 152.X.Y.Z<br>
external_signaling_port    = 5060<br>
allow_reload               = no<br>
tos                        = cs3<br>
cos                        = 3<br>
local_net                  = <a href="http://127.0.0.1/24" rel="noreferrer" target="_blank">127.0.0.1/24</a><br>
local_net                  = <a href="http://192.168.50.0/24" rel="noreferrer" target="_blank">192.168.50.0/24</a><br>
local_net                  = <a href="http://192.168.1.0/24" rel="noreferrer" target="_blank">192.168.1.0/24</a><br>
local_net                  = <a href="http://10.3.2.0/24" rel="noreferrer" target="_blank">10.3.2.0/24</a><br>
local_net                  = <a href="http://10.20.1.0/24" rel="noreferrer" target="_blank">10.20.1.0/24</a><br>
local_net                  = <a href="http://10.10.41.0/24" rel="noreferrer" target="_blank">10.10.41.0/24</a><br>
local_net                  = <a href="http://10.5.1.0/24" rel="noreferrer" target="_blank">10.5.1.0/24</a><br>
<br>
pjsip_wizard<br>
-------------<br>
<br>
[isoft-sr-in-1]<br>
type = wizard<br>
transport = transport-udp<br>
remote_hosts = 192.81.237.20<br>
aor/max_contacts = 1<br>
aor/remove_existing = yes<br>
aor/qualify_frequency = 60<br>
aor/qualify_timeout = 2000<br>
endpoint/ice_support = no<br>
endpoint/disallow = g723,slin,ilbc,lpc10,g729,speex,g726aal2,g722<br>
endpoint/allow = ulaw,alaw,adpcm,gsm<br>
endpoint/direct_media = no<br>
endpoint/force_rport = yes<br>
endpoint/rewrite_contact = yes<br>
endpoint/rtp_keepalive = 30<br>
endpoint/rtp_symmetric = yes<br>
endpoint/rtp_timeout = 60<br>
endpoint/rtp_timeout_hold = 60<br>
endpoint/send_pai = yes<br>
endpoint/send_rpid = yes<br>
endpoint/trust_id_inbound = yes<br>
endpoint/trust_id_outbound = yes<br>
endpoint/trust_connected_line = no<br>
endpoint/send_connected_line = no<br>
endpoint/context = trunkhandler_pbx-sip-t1<br>
<br>
<br>
Attached sip sessions and debug log... the only thing I found <br>
interesting was finding a lack of a log item<br>
We SHOULD be seeing:<br>
DEBUG[XXXXX] res_pjsip_session.c: (null session): Setting external media <br>
address to 152.X.Y.Z<br>
This message is clearly lacking from the debug session where the <br>
incorrect media address is sent.  But there's not enough detail in the <br>
debugs to see why this decision was not made to use external_media_address<br>
<br>
By default we use nat settings for all our endpoints, but obviously it's <br>
not required here for an ITSP that has trustworthy media ports in the <br>
SDP.  Maybe a bandaid is turning off rewrite_contact for this endpoint?  <br>
Going to try that as soon as possible.<br>
<br>
Why is external_media_address not being used all of a sudden?  Has <br>
anyone else seen this... is this a bug?-- <br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a> --<br>
<br>
Check out the new Asterisk community forum at: <a href="https://community.asterisk.org/" rel="noreferrer" target="_blank">https://community.asterisk.org/</a><br>
<br>
New to Asterisk? Start here:<br>
      <a href="https://wiki.asterisk.org/wiki/display/AST/Getting+Started" rel="noreferrer" target="_blank">https://wiki.asterisk.org/wiki/display/AST/Getting+Started</a><br>
<br>
asterisk-users mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-users" rel="noreferrer" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-users</a></blockquote></div></div>