[ASL3] having issues with IAX2

I’m helping another ham with his ASL3 install and I’m trying to add an iax user but i’m getting registration failed and Call token failure.

i have marked requirecalltoken = no but it doesn’t seem to help.

any suggestiong on where i should look.

iax.conf

; Inter-Asterisk eXchange driver definition

[general]
; !!! IAX registration will be discontinued at some point !!!
; Setup rpt_http_registartions.conf instead.
; remove the leading ";"
register => 616491:redacted@register.allstarlink.org    ; This must be changed to your node number, password 
;register => 1998:12345@register.allstarlink.org

bindport = 4569                 ; bindport and bindaddr may be specified

; NOTE: bindport must be specified BEFORE
; bindaddr or may be specified on a specific
; bindaddr if followed by colon and port
;  (e.g. bindaddr=192.168.0.1:4569)

bindaddr = 0.0.0.0
; bindaddr = 192.168.0.1        ; more than once to bind to multiple
                                ; addresses, but the first will be the 
                                ; default

disallow = all                  ; The permitted codecs for outgoing connections 
;Audio Quality   Bandwidth
;allow = ulaw                   ; best      87 kbps
;allow = adpcm                  ; good      55 kbps
;allow = gsm                    ; medicore  36 kbps
allow = ulaw
allow = adpcm
allow = g722
allow = g726aal2
allow = gsm
allow = ilbc


jitterbuffer = yes                                                                
forcejitterbuffer = yes                                                           
dropcount = 2                                                                     
maxjitterbuffer = 4000                                                            
maxjitterinterps = 10                                                             
resyncthreshold = 1000                                                            
maxexcessbuffer = 80                                                              
minexcessbuffer = 10                                                              
jittershrinkrate = 1                                                              
tos = 0x1E                                                                  
autokill = yes                                                                    
delayreject = yes                                                                 
; iaxthreadcount = 30                                                              
; iaxmaxthreadcount = 150  
calltokenoptional = 0.0.0.0/0.0.0.0 
requirecalltoken = no


; Incoming radio connections

[radio]
type = user
disallow = all
allow = ulaw
allow = adpcm
allow = g722
allow = g726aal2
allow = gsm
allow = ilbc


codecpriority = host
context = radio-secure
transfer = no
calltokenoptional = 0.0.0.0/0.0.0.0 
requirecalltoken = no

[iaxrpt]                        	; Connect from iaxrpt Username field (PC AllStar Client)
username=iaxrpt
type = user                       	; Notice type is user here <---------------
context = iaxrpt					; Context to jump to in extensions.conf
auth = md5
secret = redacted
host = dynamic
disallow = all                    
allow = ulaw
allow = adpcm
allow = gsm                       
transfer = no
calltokenoptional = 0.0.0.0/0.0.0.0 
requirecalltoken = no

[iaxclient]                     	; Connect from iax client (Zoiper...)
type = friend                     	; Notice type here is friend <--------------
context = iax-client              	; Context to jump to in extensions.conf
auth = md5
secret = Your_Secret_Password_Here
host = dynamic
disallow = all
allow = ulaw
allow = adpcm
allow = gsm
transfer = no
calltokenoptional = 0.0.0.0/0.0.0.0 
requirecalltoken = no

[allstar-sys]
type = user
context = allstar-sys
auth = rsa
inkeys = allstar
disallow = all
allow = ulaw
calltokenoptional = 0.0.0.0/0.0.0.0 
requirecalltoken = no

[allstar-public]
type = user
context = allstar-public
auth = md5
secret = allstar
disallow = all
allow = ulaw
allow = gsm
calltokenoptional = 0.0.0.0/0.0.0.0 
requirecalltoken = no

[joe]
username = joe
type = friend
context = iaxrpt-WW4SC
auth = md5
secret = joe
host = dynamic
disallow = all
allow = ulaw
allow = gsm
transfer = yes
callerid = "WW4SC"
calltokenoptional = 0.0.0.0/0.0.0.0 
requirecalltoken = no

; The following should be un-commented to support Allstar Autopatch service
; [allstar-autopatch]
; type = peer
; host = register.allstarlink.org
; username = <One of the Node numbers on this server>
; secret = <The node password for the above node>
; auth = md5
; disallow = all
; allow = ulaw
; transfer = no

#tryinclude custom/iax.conf


extensions.conf

[general]

static = yes       ; These two lines prevent the command-line interface
writeprotect = yes ; from overwriting the config file. Leave them here.

[globals]
HOMENPA = 803   ; change this to your Area Code
NODE = 616491   ; change this to your node number

[default]
exten => i,1,Hangup

[radio-secure]
;exten => ${NODE},1,rpt(${EXTEN})
exten => _XXXX!,1,NoOp(Connect from node: ${CALLERID(num)})
	same => n,NoOp(Connect to: ${EXTEN})
	;same => n,NoOp(The IAXPEER is ${IAXPEER(CURRENTCHANNEL)})
	same => n,NoOp(The Channel IP is ${CHANNEL(peerip)})

	;If channel IP eq localhost go to connect
	same => n,GotoIf($["${CHANNEL(peerip)}" = "127.0.0.1"]?connect)

	;If allowlist/extension dosen't exist check the denylist
	same => n,GotoIf($[${DB_KEYCOUNT(allowlist/${EXTEN})} = 0]?denylist) ;goto denylist
	;If allowlist/extension/callerid exists go to connect
	same => n,GotoIf(${DB_EXISTS(allowlist/${EXTEN}/${CALLERID(num)})}?connect) ;goto connect
	same => n,NoOp(${EXTEN} not in allowlist, Hangup)
	same => n,Hangup

	;If denylist/extension/callerID doesn't exist goto connect
	same => n(denylist),GotoIf(${DB_EXISTS(denylist/${EXTEN}/${CALLERID(num)})}?:connect) ;don't goto connect
	same => n,NoOp(${EXTEN} is in denylist, Hangup)
	same => n,Hangup

	same => n(connect),rpt(${EXTEN})
	same => n,Hangup
		
[radio-iaxrpt]
; Entered from iaxrpt in iax.conf
; Info: The X option passed to the Rpt application
; disables the normal security checks.
; Because incoming connections are validated in iax.conf,
; and we don't know where the user will be coming from in advance,
; the X option is required.
;exten => ${NODE},1,rpt(${EXTEN}|X)       ; NODE is the Name field in iaxrpt
exten=616491,1,Rpt,616491|X

[iax-client]                            ; for IAX VoIP clients.
exten => ${NODE},1,Ringing()
	same => n,Wait(10)
	same => n,Answer()
	same => n,Set(CALLSIGN=${CALLERID(name)})
	same => n,NoOp(Caller ID name is ${CALLSIGN})
	same => n,NoOp(Caller ID number is ${CALLERID(number)})
	same => n,GotoIf(${ISNULL(${CALLSIGN})}?hangit)
	same => n,Playback(rpt/connected-to&rpt/node)
	same => n,SayDigits(${NODE})
	same => n,rpt(${NODE}|P|${CALLSIGN}-P)
	same => n(hangit),NoOp(No Caller ID Name)
	same => n,Playback(connection-failed)
	same => n,Wait(1)
	same => n,Hangup

; Comment-out the following clause if you want Allstar Autopatch service
[pstn-out]
exten => _NXXNXXXXXX,1,playback(ss-noservice)
	same => n,Congestion

; Un-comment out the following clause if you want Allstar Autopatch service
;[pstn-out]
;exten => _NXXNXXXXXX,1,Dial(IAX2/allstar-autopatch/\${EXTEN})
; same => n,Busy

[invalidnum]
exten => s,1,Wait(3)
	same => n,Playback(ss-noservice)
	same => n,Wait(1)
	same => n,Hangup

[radio]
exten => _X11,1,Goto(check_route,${EXTEN},1);
exten => _NXXXXXX,1,Goto(check_route,1${HOMENPA}${EXTEN},1)
exten => _1XXXXXXXXXX,1,Goto(check_route,${EXTEN},1)
exten => _07XX,1,Goto(parkedcalls,${EXTEN:1},1)
exten => 00,1,Goto(my-ip,s,1)

[check_route]
exten => _X.,1,Noop(${EXTEN})
; no 800
exten => _1800NXXXXXX,2,Goto(invalidnum,s,1)
exten => _1888NXXXXXX,2,Goto(invalidnum,s,1)
exten => _1877NXXXXXX,2,Goto(invalidnum,s,1)
exten => _1866NXXXXXX,2,Goto(invalidnum,s,1)
exten => _1855NXXXXXX,2,Goto(invalidnum,s,1)
; no X00 NPA
exten => _1X00XXXXXXX,2,Goto(invalidnum,s,1)
; no X11 NPA
exten => _1X11XXXXXXX,2,Goto(invalidnum,s,1)
; no X11
exten => _X11,2,Goto(invalidnum,s,1)
; no 555 Prefix in any NPA
exten => _1NXX555XXXX,2,Goto(invalidnum,s,1)
; no 976 Prefix in any NPA
exten => _1NXX976XXXX,2,Goto(invalidnum,s,1)
; no NPA=809
exten => _1809XXXXXXX,2,Goto(invalidnum,s,1)
; no NPA=900
exten => _1900XXXXXXX,2,Goto(invalidnum,s,1)

; okay, route it
exten => _1NXXXXXXXXX,2,Goto(pstn-out,${EXTEN:1},1)
exten => _X.,2,Goto(invalidnum,s,1)

[my-ip]
exten => s,1,Wait(1)
	same => n,SayAlpha(${CURL(http://myip.vg)})
	same => n,Hangup

[allstar-sys]
exten => _1.,1,Rpt(${EXTEN:1}|Rrpt/node:NODE:rpt/in-call:digits/0:PARKED|120)
exten => _1.,n,Hangup

exten => _2.,1,Ringing
exten => _2.,n,Wait(3)
exten => _2.,n,Answer
exten => _2.,n,Playback(rpt/node)
exten => _2.,n,Saydigits(${EXTEN:1})
exten => _2.,n,Rpt(${EXTEN:1}|P|${CALLERID(name)}-P)
exten => _2.,n,Hangup

exten => _3.,1,Ringing
exten => _3.,n,Wait(3)
exten => _3.,n,Answer
exten => _3.,n,Playback(rpt/node)
exten => _3.,n,Saydigits(${EXTEN:1})
exten => _3.,n,Rpt(${EXTEN:1}|Pv|${CALLERID(name)}-P)
exten => _3.,n,Hangup

exten => _4.,1,Ringing
exten => _4.,n,Wait(3)
exten => _4.,n,Answer
exten => _4.,n,Playback(rpt/node)
exten => _4.,n,Saydigits(${EXTEN:1})
exten => _4.,n,Rpt(${EXTEN:1}|D|${CALLERID(name)}-P)
exten => _4.,n,Hangup

exten => _5.,1,Ringing
exten => _5.,n,Wait(3)
exten => _5.,n,Answer
exten => _5.,n,Playback(rpt/node)
exten => _5.,n,Saydigits(${EXTEN:1})
exten => _5.,n,Rpt(${EXTEN:1}|Dv|${CALLERID(name)}-P)
exten => _5.,n,Hangup

[allstar-public]

exten => s,1,Ringing
	same => n,Set(RESP=${CURL(https://register.allstarlink.org/cgi-bin/authwebphone.pl?${CALLERID(name)})})
	same => n,Set(NODENUM=${CALLERID(number)})
	same => n,GotoIf($["${RESP:0:1}" = "?"]?hangit)
	same => n,GotoIf($["${RESP:0:1}" = ""]?hangit)
	same => n,GotoIf($["${RESP:0:5}" != "OHYES"]?hangit)
	same => n,Set(CALLSIGN=${RESP:5})
	;exten => s,n,GotoIf($[${DB_EXISTS(whitelist/${CALLSIGN})}]?:hangit)  ; Not in whitelist
	same => n,Wait(3)
	same => n,Playback(rpt/node,noanswer)
	same => n,Saydigits(${NODENUM})
	same => n,Set(CALLERID(name)=${CALLSIGN})
	same => n,Set(CALLERID(num)=0)
	same => n,Rpt(${NODENUM}|X)
	same => n,Hangup
	same => n(hangit),Answer
	same => n,Wait(1)
	same => n,Hangup


[iaxrpt-WW4SC]
exten => 1,1,Set(JITTERBUFFER(adaptive)=default)
exten => 616491,1,Answer()
exten => 616491,n,Set(CALLSIGN=${CALLERID(name)})
exten => 616491,n,Rpt(616491|P|${CALLSIGN})
exten => 616491,1,Rpt,616491|P

#tryinclude custom/extensions.conf

Can you try:

calltokenoptional=0.0.0.0/0.0.0.0
requirecalltoken=no

You might want to double check the password.
Perhaps change it to something simple and short ‘for a test’ with only letters.

I added this but no luck.

I changed the password again but no luck.

I edited the OP with the modified IAX.conf

Any more suggestions to try?

Maybe someone can ping me their working iax and extensions file so i can compare.
someone using an iax acct logon from dvswitch mobile?

iax.conf:

[CALLSIGN]
type=friend
context=iax-client
auth=md5
username=CALLSIGN
secret=PASSWORD
host=dynamic
disallow=all
allow=ulaw
allow=gsm
transfer=no
calltokenoptional=0.0.0.0/0.0.0.0
callerid=CALLSIGN
codecpriority=Caller

I’m pretty sure this is stock config, but extensions.conf:

[iax-client]                            ; for IAX VoIP clients.
exten => ${NODE},1,Ringing()
        same => n,Wait(10)
        same => n,Answer()
        same => n,Set(CALLSIGN=${CALLERID(name)})
        same => n,NoOp(Caller ID name is ${CALLSIGN})
        same => n,NoOp(Caller ID number is ${CALLERID(number)})
        same => n,GotoIf(${ISNULL(${CALLSIGN})}?hangit)
        same => n,Playback(rpt/connected-to&rpt/node)
        same => n,SayDigits(${NODE})
        same => n,rpt(${NODE}|P|${CALLSIGN}-P)
        same => n(hangit),NoOp(No Caller ID Name)
        same => n,Playback(connection-failed)
        same => n,Wait(1)
        same => n,Hangup

You might want to check the DVS mobile app if you are not getting anywhere.
Test it on a similar server. A quick way to divide the issue.

Is the connection Inside or outside of the NAT ?

This is resolved now, iax port 4569 was not open. once i did, it connected right up.

I appreciate the help and suggestions, just talking through it was very helpful!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.