login | register
Sun 12 of Oct, 2008 [08:57 UTC]

voip-info.org

History

A more complete example

Created by: miguelrvs,Last modification on Tue 12 of Apr, 2005 [21:38 UTC]

Extended example


Asterisk IAX - a Newbies Struggle Produces a How-To
IRC: Hubguru@irc.freenode.net/room:#Asterisk
E-mail: Jr.richardson@cox.net

Overview

Intrigued by the proposition of an Open Source PBX, I
jumped into Asterisk waters with a summersault. I have
years of experience in telecommunications, transport
(layer 1, 2&3), PSTN, Routers, Switches, OSS, ATM, TDM,
TCP/IP, etc. This was certainly to be an asset in getting
a working system up and running in no-time. That notion
couldnt have been farther from the truth. All of my
pre-conceptions of how I thought this system actually
works were used against me in my own mind. The sparse and
emergent documentation was not in a format I was used to
seeing and therefore made little sense when bringing
together the concepts of the dial plan or IAX setup. I
finally managed to get 2 *s up and running with an IAX
connection and successfully completed 4-digit call
connections between them. This only after hours of trial
and error, reading and re-reading documentation, searching
wiki pages http://voip-info.org/wiki-Asterisk and conversing
with friendly IRC users: kram, blitzrage & jtodd (thanks guys).

Scope

The scope of this document is to provide my own interpretation
of setting up a dial plan to route calls between 2 *s servers
with a 4 digit dial scheme. Included will be example configurations
files sip.conf, iax.conf and extentions.conf from each Asterisk
server and some explanatory notes within the pertinent context.
This document is supplementary to existing documents. Other
documentation referenced is a must-read.

Test Setup

Hardware:
2 Dell GXas, Pentium III 600, 256 Meg Ram, on-board video,
 sound, NIC.  Not using any Zaptel/Digium cards at this time.
1 Cisco 7960 w/SIP ver 4.4 image
1 Cisco ATA-186 w/ver 2.16 image

Software:
Sjphone and X-Lite softphones, Redhat Linux 9, Asterisk
(downloaded current version mid June 03)


The 2 computers are loaded with Linux and Asterisk using the
following how-to:
http://www.automated.it/guidetoasterisk.htm (Andy Powell)

Both computers/servers were on the same LAN segment with a
flat IP scheme.
Server 1 name Asterisk, IP Address 192.168.1.30
Server 2 name Asterisk2, IP Address 192.168.1.31

2 X-Lite soft phones installed on Win2K Workstations.
These are registered to Asterisk2 (Server #2), IP Address 192.168.1.3
extension 2001 and 192.168.1.4 extension 2002

Cisco 7960 phone is configured with 6 lines, 3 registered to
Asterisk and 3 registered to Asterisk2. IP Address 192.168.1.56
line 1 2010, line 2 2011, line 3 2012, line 4 1010, line 5
1011, line 6 1012

Cisco ATA-186 configured using:
http://www.loligo.com/asterisk/Cisco/ATA-186-guide.v20030628.txt
(John Todd)
Both analog ports have POTS phones attached. The device is registered
to Asterisk with 2 lines. IP Address 192.168.1.55 line 1 1861,
line 2 1862

Sample Configuration Files & Existing Documentation

These configuration files and existing documents are set forth with
experienced literature but when it comes to IAX, the example of
providing what is needed on the otherpeer, user or friend
server (the mate) is unclear, at least for me. Attempted below is
a reconciliation of such examples, offering configurations for both
servers.

Client Phone Registration
Here is the above mentioned configuration file for both asterisk and
asterisk2 denoting successful registration of the above mentioned
hardware and software SIP clients.

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
 ; SIP Configuration for Asterisk
 ;
 [general]
 port = 5060  
 bindaddr = 0.0.0.0   
 context = sip       ;x changed from default to sip 
 ;srvlookup = yes   
 ;pedantic = yes    
 ;tos=lowdelay
 ;tos=184
 ;maxexpirey=3600     
 ;defaultexpirey=120   
 ;notifymimetype=text/plain  
 ;videosupport=yes    
 ;disallow=all      
 ;allow=ulaw       
 ;allow=ilbc
 ;
 ;register => 1234@mysipprovider.com
 ;register => 2345@mysipprovider.com/1234
 
 
 [1861] ; line 1 of ATA-186
 type=friend
 username=1861
 secret=1945
 canreinvite=no
 host=dynamic
 dtmfmode=rfc2833
 qualify=200
 mailbox=1861
 nat=1
 
 [1862] ; line 2 of ATA-186
 type=friend
 username=1862
 secret=1945
 canreinvite=no
 host=dynamic
 dtmfmode=rfc2833
 qualify=200
 mailbox=9999
 nat=1
 
 [1003]  ; Laptop 1, X-Lite over WiFi
 type=friend
 username=1003
 secret=1945
 canreinvite=no
 host=dynamic
 dtmfmode=rfc2833
 qualify=200
 mailbox=1003
 nat=1
 
 [1004]  ; Laptop 2, X-Lite over WiFi
 type=friend
 username=1004
 secret=1945
 canreinvite=no
 host=dynamic
 dtmfmode=rfc2833
 qualify=200
 mailbox=1004
 nat=1
 
 
 [1010] ; 7960 line 4
 type=friend
 username=1010
 secret=1945
 nat=yes
 host=dynamic
 dtmfmode=rfc2833
 canreinvite=no
 qualify=200
 mailbox=1010
 
 [1011] ; 7960 line 5
 type=friend
 username=1011
 secret=1945
 nat=yes
 host=dynamic
 dtmfmode=rfc2833
 canreinvite=no
 qualify=200
 
 [1012] ; 7960 line 6
 type=friend
 username=2012
 secret=1945
 nat=yes
 host=dynamic
 dtmfmode=rfc2833
 canreinvite=no
 qualify=200
 
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
 ; SIP Configuration for Asterisk2
 ;
 [general]
 port = 5060       
 bindaddr = 0.0.0.0   
 context =  sip       ;x changed from default to sip 
 ;srvlookup = yes    
 ;pedantic = yes   
 ;tos=lowdelay
 ;tos=184
 ;maxexpirey=3600    
 ;defaultexpirey=120        
 ;notifymimetype=text/plain
 ;videosupport=yes      
 ;disallow=all      
 ;allow=ulaw         
 ;allow=ilbc
 ;
 ;register => 1234@mysipprovider.com    
 ;register => 2345@mysipprovider.com/1234 
 
 [2001] ; X-Lite Client
 type=friend
 username=2001
 secret=1945
 canreinvite=no
 host=dynamic
 dtmfmode=rfc2833
 qualify=200
 mailbox=2001
 nat=1

 
 [2002] ; X-Lite Client
 type=friend
 username=2002
 secret=1945
 canreinvite=no
 host=dynamic
 dtmfmode=rfc2833
 qualify=200
 mailbox=2002
 nat=1
 
  2010 ; 7960 line 1
 type=friend
 username=2010
 secret=1945
 nat=yes
 host=dynamic
 dtmfmode=rfc2833
 canreinvite=no 
 qualify=200   
 mailbox=2010
 
 [2011] ; 7960 line 2
 type=friend
 username=2011
 secret=1945
 nat=yes
 host=dynamic
 dtmfmode=rfc2833
 canreinvite=no 
 qualify=200   
 
 [2012] ; 7960 line 3
 type=friend
 username=2012
 secret=1945
 nat=yes
 host=dynamic
 dtmfmode=rfc2833
 canreinvite=no 
 qualify=200   
 [root@Asterisk2 asterisk]#
 
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
 IAX Configuration
 
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
 ; Inter-Asterisk eXchange driver definition (asterisk)
 ;
 
 [general]
 port=5036
 ;bindaddr=192.168.0.1
 ;amaflags=default
 ;accountcode=lss0101
 bandwidth=low
 ;allow=all               
 ;allow=g723.1           
 disallow=lpc10            
 allow=gsm          ;x uncommented to allow gsm       
 ;jitterbuffer=no
 ;dropcount=3
 ;maxjitterbuffer=500
 ;maxexccessbuffer=100
 ;trunkfreq=20               
 
 register => asterisk:1945@192.168.1.31:5036
 
 ;x Above is the entry to establish an IAX register (connection) 
 ;x with a remote IAX server, i.e. another Asterisk server.  This 
 ;x is not necessary unless this server is dynamic, the IP Address 
 ;x changes. Notice: register => name:password@192.168.1.31:5036.
 ;x This local asterisk is registering with remote asterisk2.  
 ;x Asterisk2 must have an entry in its iax.conf to recognize this 
 ;x server and authenticate it (allow it to pass traffic).
 
 ;register => joe@remotehost:5656
 ;register => marko:torkey@tormenta.linux-support.net
 tos=lowdelay
 
 ;x Below is the entry to allow asterisk2 to connect to asterisk 
 ;x with the IAX protocol. The context is local, allowing asterisk2 
 ;x to contact, call or use any client or interface within the local 
 ;x context in this server (asterisk) depicted within the dial plan.
 
 [asterisk2]
 type=friend
 auth=md5
 secret=1945
 context=local
 host=dynamic
 defaultip=192.168.1.31
 qualify=yes
 ;trunk=yes
 
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
 ;Inter-Asterisk eXchange driver definition (asterisk2)
 ;
 
 [general]
 port=5036
 ;bindaddr=192.168.0.1
 ;amaflags=default
 ;accountcode=lss0101
 bandwidth=low
 ;allow=all            
 ;allow=g723.1    
 disallow=lpc10     
 allow=gsm          ;x uncommented to allow gsm
 ;jitterbuffer=no
 ;dropcount=3
 ;maxjitterbuffer=500
 ;maxexccessbuffer=100
 ;trunkfreq=20            
 
 register => asterisk2:1945@192.168.1.30:5036
 
 ;x Above is the entry to establish an IAX register (connection) 
 ;x with a remote IAX server, i.e. another Asterisk server.  This 
 ;x is not necessary unless this server is dynamic, the IP Address 
 ;x changes. Notice: register => name:password@192.168.1.30:5036.
 ;x This local asterisk2 is registering with remote asterisk.  
 ;x Asterisk2 must have an entry in its iax.conf to recognize this 
 ;x server and authenticate it (allow it to pass traffic).
 
 ;register => joe@remotehost:5656
 ;register => marko:torkey@tormenta.linux-support.net
 tos=lowdelay
 
 ;x Below is the entry to allow asterisk to connect to asterisk2 
 ;x with the IAX protocol. The context is local, allowing asterisk 
 ;x to contact, call or use any client or interface within the local 
 ;x context in this server (asterisk2) depicted within the dial plan.
 
 
 [asterisk]
 type=friend
 auth=md5
 secret=1945
 context=local
 host=dynamic
 defaultip=192.168.1.30
 qualify=yes
 ;trunk=yes
 
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
 Extension Configuration
 
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 ; This file is from asterisk server #1
 ;x Included are the only entries added or altered from the 
 ;x original sample file.
 ; 
 [local]
 ;
 ; Master context for local, toll-free, and iaxtel calls only
 ;
 ignorepat => 9
 include => default
 include => parkedcalls
 include => trunklocal
 include => iaxtel700
 include => trunktollfree
 include => iaxprovider
 include => sip ;x included sip
 
 ;x include sip here because the iax.conf entry of context 
 ;x was (local) so if any inbound call from IAX wants to 
 ;x contact a sip extension, it must be included here.  For 
 ;x security reasons, you may want to specify sip in the 
 ;x (context =) portion in iax.conf.
 
 
 [sip]
 exten => 55,1,VoicemailMain
 
 exten => 1861,1,Dial(SIP/1861,20,tr)
 exten => 1861,2,VoiceMail,u1861
 exten => 1861,102,VoiceMail,b1861
 
 exten => 1862,1,Dial(SIP/1862,20,tr)
 exten => 1862,2,VoiceMail,u9999
 exten => 1862,102,VoiceMail,b9999
 
 exten => 1001,1,Dial(SIP/1001,20,tr)
 exten => 1001,2,VoiceMail,u1001
 exten => 1001,102,VoiceMail,b1001
 
 exten => 1002,1,Dial(SIP/1002,20,tr)
 exten => 1002,2,VoiceMail,u1002
 exten => 1002,102,VoiceMail,b1002
 
 exten => 1003,1,Dial(SIP/1003,20,tr)
 exten => 1003,2,VoiceMail,u1003
 exten => 1003,102,VoiceMail,b1003
 
 exten => 1004,1,Dial(SIP/1004,20,tr)
 exten => 1004,2,VoiceMail,u1004
 exten => 1004,102,VoiceMail,b1004
 
 exten => 1010,1,Dial(SIP/1010,20,tr)
 exten => 1010,2,VoiceMail,u1010
 exten => 1010,102,VoiceMail,b1010
 
 exten => 1011,1,Dial(SIP/1011,20,tr)
 
 exten => 1012,1,Dial(SIP/1012,20,tr)
 
 exten => _2XXX,1,Dial(IAX/asterisk:1945@192.168.1.31/${EXTEN}@local)
 
 ;x This statement above tells the local server  if any SIP 
 ;x extension dials a pattern of 2XXX, then forward that request 
 ;x to the IAX channel interface called asterisk. When the call 
 ;x request gets to the other asterisk server (in this case 
 ;x asterisk2), register with username (asterisk) and password 
 ;x (1945).  The desired asterisk server (asterisk2) is @ IP 
 ;x Address 192.168.1.31.  When the request for connection is 
 ;x authenticated and established from asterisk to asterisk2, 
 ;x asterisk2 forwards the request for connection to extension 
 ;x 2XXX within the local context.
 
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 ; This file is from asterisk2 server #2
 ;x Included are the only entries added or altered from the 
 ;x original sample file.
 
 [local]
 ;
 ; Master context for local, toll-free, and iaxtel calls only
 ;
 ignorepat => 9
 include => default
 include => parkedcalls
 include => trunklocal
 include => iaxtel700
 include => trunktollfree
 include => iaxprovider
 include => sip ;x included sip
 
 ;x include sip here because the iax.conf entry of context 
 ;x was (local) so if any inbound call from IAX wants to 
 ;x contact a sip extension, it must be included here.  For 
 ;x security reasons, you may want to specify sip in the 
 ;x (context =) portion in iax.conf.
 
 [sip]
 exten => 55,1,VoicemailMain
 
 exten => 2001,1,Dial(SIP/2001,20,tr)
 exten => 2001,2,VoiceMail,u2001
 exten => 2001,102,VoiceMail,b2001
 
 exten => 2002,1,Dial(SIP/2002,20,tr)
 exten => 2002,2,VoiceMail,u2002
 exten => 2002,102,VoiceMail,b2002
 
 exten => 2003,1,Dial(SIP/2003,20,tr)
 exten => 2003,2,VoiceMail,u2003
 exten => 2003,102,VoiceMail,b2003
 
 exten => 2004,1,Dial(SIP/2004,20,tr)
 exten => 2004,2,VoiceMail,u2004
 exten => 2004,102,VoiceMail,b2004
 
 exten => 2010,1,Dial(SIP/2010,20,tr)
 exten => 2010,2,VoiceMail,u2010
 exten => 2010,102,VoiceMail,b2010
 
 exten => 2011,1,Dial(SIP/2011,20,tr)
 
 exten => 2012,1,Dial(SIP/2012,20,tr)
 
 exten => _1XXX,1,Dial(IAX/asterisk2:1945@192.168.1.30/${EXTEN}@local)
 
 ;x This statement above tells the local server  if any SIP 
 ;x extension dials a pattern of 1XXX, then forward that request 
 ;x to the IAX channel interface called asterisk2. When the call 
 ;x request gets to the other asterisk server (in this case 
 ;x asterisk), register with username (asterisk2) and password 
 ;x (1945).  The desired asterisk server (asterisk) is @ IP 
 ;x Address 192.168.1.30.  When the request for connection is 
 ;x authenticated and established from asterisk2 to asterisk, 
 ;x asterisk forwards the request for connection to extension 
 ;x 1XXX within the local context.
 
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 


Closing

All that is left is to reload both servers with the added
configurations and proceed to test 4-digit dialing between 2 * servers

through an IAX link.

Another good document to read is the /usr/src/asterisk/README.iax file
located on the asterisk server.

I encourage those with pre-conceptions embedded from years of working
with Nortel, Cisco and the like to shed them prior to diving into the
documents, have an open mind and keep things simple, because it really
is simple to setup IAX. Hope this helps.

JR

Comments