IAX HOSTING & TRUNKING
High-performance Inter-Asterisk eXchange (IAX2) trunking, private node hosting, and switchboard interconnectivity designed for telecom enthusiasts, home labs, and production voice networks.
Provisioning Workflow
Verify System Requirements
Ensure you have a fully deployed and accessible instance of Vanilla Asterisk or FreePBX ready for IAX2 trunking configuration.
Submit Your Trunk Request
Send an email to operations@nodesystems.org with your target office code preference, public IP/hostname, and system specifications.
Interconnect & Provision
Receive your trunk authentication credentials and dialplan routing configuration to establish your connection to the Node backbone.
Global XML Directory Registration
To list your extensions on the global XML directory accessible by all network endpoints, reply directly to your provisioning email with your desired extension routing targets.
Dialplan & Trunk Configuration Files
Insert these custom configuration blocks into your Asterisk system files to route calls through the Node Systems API backbone.
; ================================================
; Node Systems — globals_custom.conf
; ================================================
nodekey=(api key here)
nodenum=(office code); ================================================
; Node Systems — iax_custom.conf
; ================================================
[from-node]
type=user
username=from-node
secret=(iax secret)
auth=md5
encryption=yes
context=from-node; ================================================
; Node Systems — extensions_custom.conf
; ================================================
[from-node]
exten => _NNNXXXX,1,NoOp(Replace NNN with your office code)
same => n,Goto(from-internal,${EXTEN:3},1)
[from-internal-additional-custom]
exten => _XXXXXXX,1,NoOp(Node Systems Outbound Routing)
same => n,Set(CALLERID(num)=223${CALLERID(num)})
same => n,Set(lookup=${CURL(https://api.nodesystems.org/index.php?auth=${nodekey}&number=${EXTEN}&ani=${CALLERID(num)})})
same => n,GotoIf($["${lookup}" = "Unauthorized"]?auth-fail)
same => n,GotoIf($["${lookup}" = "Block suspended"]?block-fail)
same => n,GotoIf($["${lookup}" = "Destination block suspended"]?block-fail)
same => n,GotoIf($["${lookup}" = "Unknown destination"]?dest-fail)
same => n,Dial(${lookup},60)
same => n,Hangup()
same => n(auth-fail),Log(ERROR, Node Systems API returned Unauthorized - Check Keys!)
same => n,Playback(ss-noservice)
same => n,Hangup()
same => n(block-fail),Log(WARNING, Node Systems: Block is suspended)
same => n,Playback(service-unavailable)
same => n,Hangup()
same => n(dest-fail),Log(WARNING, Node Systems: Unknown destination prefix)
same => n,Playback(ss-noservice)
same => n,Hangup()Ready to Connect Your PBX?
Submit your trunk request to receive your office code credentials and routing specifications.