Voice Infrastructure

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.

Requirement: An operational instance of Vanilla Asterisk or FreePBX is required for office code trunking.
Default Protocol PortUDP 4569

Provisioning Workflow

01

Verify System Requirements

Ensure you have a fully deployed and accessible instance of Vanilla Asterisk or FreePBX ready for IAX2 trunking configuration.

02

Submit Your Trunk Request

Send an email to operations@nodesystems.org with your target office code preference, public IP/hostname, and system specifications.

03

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.

/etc/asterisk/globals_custom.conf
; ================================================
; Node Systems — globals_custom.conf
; ================================================
nodekey=(api key here)
nodenum=(office code)
/etc/asterisk/iax_custom.conf
; ================================================
; Node Systems — iax_custom.conf
; ================================================
[from-node]
type=user
username=from-node
secret=(iax secret)
auth=md5
encryption=yes
context=from-node
/etc/asterisk/extensions_custom.conf
; ================================================
; 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.

Request Trunk Credentials