<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">I realize that the heyday of DUNDi was about 2008, and that there’s less and less information online about it and lots of people don’t use it anymore and use static IAX trunks instead. But we have 53 asterisk phone systems connecting our
 locations, and so creating static IAX trunks (even with a regional hub and spoke model) is a significant undertaking.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We’ve had issues with DUNDi peers disconnecting in the past and with Elastix used to have to do an amportal restart on the PBX to have it reconnect again. But the new issue that we’re seeing is that the peer refuses to reconnect again,
 even after changing the long secret key in dundi_general, the MAC address of the VM the PBX is running on, the IP of the PBX and recreating the public/private keypair. The PBX that disconnected will not reconnect to any DUNDi peers at all, even to a completely
 new VM that we stand up at the same site on the same virtual switch on the same host. We are only trying to do inter-site extension dialing, not routing external calling between sites using DUNDi.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m also okay with giving up on DUNDi if anybody else has a less labour intensive way of routing extension dialing between that many PBXes than a web of static IAX trunks.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here are the config files. I removed all the ; commented lines in dundi.conf to save space.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Iax_custom.conf<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[dundi]<o:p></o:p></p>
<p class="MsoNormal">type=user<o:p></o:p></p>
<p class="MsoNormal">dbsecret=dundi/secret<o:p></o:p></p>
<p class="MsoNormal">context=ext-local<o:p></o:p></p>
<p class="MsoNormal">disallow=all<o:p></o:p></p>
<p class="MsoNormal">allow=ulaw<o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in">allow=g726<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">dundi.conf<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[general]<o:p></o:p></p>
<p class="MsoNormal">#include dundi_general_custom.conf<o:p></o:p></p>
<p class="MsoNormal">ttl=32<o:p></o:p></p>
<p class="MsoNormal">autokill=yes<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[mappings]<o:p></o:p></p>
<p class="MsoNormal">#include dundi_mappings_custom.conf<o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in">#include dundi_peers_custom.conf<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">dundi_mappings.conf<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">priv => dundi-priv-canonical,0,IAX2,dundi:${SECRET}@PBX_IP/${NUMBER},nopartial<o:p></o:p></p>
<p class="MsoNormal">priv => dundi-priv-customers,100,IAX2,dundi:${SECRET}@PBX_IP/${NUMBER},nopartial<o:p></o:p></p>
<p class="MsoNormal">priv => dundi-priv-via-pstn,400,IAX2,dundi:${SECRET}@PBX_IP/${NUMBER},nopartial<o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">dundi_general.conf<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">organization=<o:p></o:p></p>
<p class="MsoNormal">locality=<o:p></o:p></p>
<p class="MsoNormal">stateprov=<o:p></o:p></p>
<p class="MsoNormal">country=<o:p></o:p></p>
<p class="MsoNormal">email=<o:p></o:p></p>
<p class="MsoNormal">phone=<o:p></o:p></p>
<p class="MsoNormal">department=<o:p></o:p></p>
<p class="MsoNormal">secret=secret key<o:p></o:p></p>
<p class="MsoNormal">entityid=MAC address<o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">dundi_peers.conf<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[server A MAC]<o:p></o:p></p>
<p class="MsoNormal">model=symmetric<o:p></o:p></p>
<p class="MsoNormal">host=<o:p></o:p></p>
<p class="MsoNormal">inkey=<o:p></o:p></p>
<p class="MsoNormal">outkey=<o:p></o:p></p>
<p class="MsoNormal">his_status=connected<o:p></o:p></p>
<p class="MsoNormal">include=priv<o:p></o:p></p>
<p class="MsoNormal">permit=priv<o:p></o:p></p>
<p class="MsoNormal">qualify=yes<o:p></o:p></p>
<p class="MsoNormal">order=primary<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[server B MAC]<o:p></o:p></p>
<p class="MsoNormal">model=symmetric<o:p></o:p></p>
<p class="MsoNormal">host=<o:p></o:p></p>
<p class="MsoNormal">inkey=<o:p></o:p></p>
<p class="MsoNormal">outkey=<o:p></o:p></p>
<p class="MsoNormal">his_status=connected<o:p></o:p></p>
<p class="MsoNormal">include=priv<o:p></o:p></p>
<p class="MsoNormal">permit=priv<o:p></o:p></p>
<p class="MsoNormal">qualify=yes<o:p></o:p></p>
<p class="MsoNormal">order=primary<o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">extensions_custom.conf<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[from-internal]<o:p></o:p></p>
<p class="MsoNormal">include => from-internal-noxfer<o:p></o:p></p>
<p class="MsoNormal">include => from-internal-xfer<o:p></o:p></p>
<p class="MsoNormal">include => dundi-priv-lookup<o:p></o:p></p>
<p class="MsoNormal">include => bad-number ; auto-generated<o:p></o:p></p>
<p class="MsoNormal">exten => h,1,Macro(hangupcall)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">; ********************************************<o:p></o:p></p>
<p class="MsoNormal">; CONFIGURACION PARA DUNDi<o:p></o:p></p>
<p class="MsoNormal">[dundi-priv-canonical]<o:p></o:p></p>
<p class="MsoNormal">; Here we include the context that contains the extensions.<o:p></o:p></p>
<p class="MsoNormal">exten => _9999X,1,Macro(stdexten,${EXTEN})<o:p></o:p></p>
<p class="MsoNormal">;include => ext-local<o:p></o:p></p>
<p class="MsoNormal">; Here we include the context that contains the queues.<o:p></o:p></p>
<p class="MsoNormal">; include => ext-queues<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[dundi-priv-customers]<o:p></o:p></p>
<p class="MsoNormal">; If you have customers (or resell services) we can list them here<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[dundi-priv-via-pstn]<o:p></o:p></p>
<p class="MsoNormal">; Here we include the context with our trunk to the PSTN,<o:p></o:p></p>
<p class="MsoNormal">; if we want the other teams can use our trunks<o:p></o:p></p>
<p class="MsoNormal">;include => outbound-allroutes<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[dundi-priv-local]<o:p></o:p></p>
<p class="MsoNormal">; In this context we unify the three contexts, we can use this as<o:p></o:p></p>
<p class="MsoNormal">; context of the trunks of dundi iax<o:p></o:p></p>
<p class="MsoNormal">include => dundi-priv-canonical<o:p></o:p></p>
<p class="MsoNormal">include => dundi-priv-customers<o:p></o:p></p>
<p class="MsoNormal">include => dundi-priv-via-pstn<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[dundi-priv-lookup]<o:p></o:p></p>
<p class="MsoNormal">; This context is responsible for making the search for a number of dundi<o:p></o:p></p>
<p class="MsoNormal">; Before you do the search properly define our caller id.<o:p></o:p></p>
<p class="MsoNormal">; because if not we have a caller id as 'device<0000>'.<o:p></o:p></p>
<p class="MsoNormal">exten => _X.,1,Macro(user-callerid)<o:p></o:p></p>
<p class="MsoNormal">exten => _X.,n,Macro(dundi-priv,${EXTEN})<o:p></o:p></p>
<p class="MsoNormal">exten => _X.,n,GotoIf($['${DIALSTATUS}' = 'BUSY']?100)<o:p></o:p></p>
<p class="MsoNormal">exten => _X.,n,Goto(bad-number,${EXTEN},1)<o:p></o:p></p>
<p class="MsoNormal">exten => _X.,100,Playtones(congestion)<o:p></o:p></p>
<p class="MsoNormal">exten => _X.,101,Congestion(10)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[macro-dundi-priv]<o:p></o:p></p>
<p class="MsoNormal">; This is the macro is called from the context [dundi-priv-lookup]<o:p></o:p></p>
<p class="MsoNormal">; It also avoids having loops in the consultations dundi.<o:p></o:p></p>
<p class="MsoNormal">exten => s,1,Goto(${ARG1},1)<o:p></o:p></p>
<p class="MsoNormal">switch => DUNDi/priv<o:p></o:p></p>
<p class="MsoNormal">; ********************************************<o:p></o:p></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;padding:0in 0in 1.0pt 0in">
<p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you, <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Court Campbell<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>