К примеру:
Для первого сервера номера начинаются с 1, у 2-го сервера - с 2, у 3-го сервера -с 3.
В iax.conf пропишешь номера.
Создаем файл в основном сервере с настройками транка (лучше отдельным файлом).
[asterisk2]
host=IP_ADDRESS_1
type=friend
context=from-iax
qualify=yes
disallow=all
allow=alaw
allow=h261
allow=h263
allow=h263p
insecure=invite,port
canreinvite=no
nat=no
[asterisk3]
host=IP_ADDRESS_2
type=friend
context=from-iax
qualify=yes
disallow=all
allow=alaw
allow=h261
allow=h263
allow=h263p
insecure=invite,port
canreinvite=no
nat=no
На серверах 2 и 3 такой же файл но с другим набором соответственно, т.е для 1 сервера транк до 2-го и 3-го, для 2 сервера транк до 1-го и 3-го, для 3 сервера транк до 1-го и 2-го.
Контекст - from-iax (для примера)
В этом контексте прописываем правило для обработки входящего звонка для каждого сервера.
Для первого сервера extensions.conf:
[from-iax]
exten => _1XX,n,DIAL(SIP/${EXTEN},,m)
Для второго сервера extensions.conf:
[from-iax]
exten => _2XX,n,DIAL(SIP/${EXTEN},,m)
Для третьего сервера extensions.conf:
[from-iax]
exten => _3XX,n,DIAL(SIP/${EXTEN},,m)
Для исходящих 1-го сервера:
[external]
exten => _2XX,1,Dial(SIP/asterisk2/${EXTEN},,m)
exten => _3XX,1,Dial(SIP/asterisk3/${EXTEN},,m)
Для исходящих 2-го сервера:
[external]
exten => _1XX,1,Dial(SIP/asterisk1/${EXTEN},,m)
exten => _3XX,1,Dial(SIP/asterisk3/${EXTEN},,m)
Для исходящих 3-го сервера:
[external]
exten => _1XX,1,Dial(SIP/asterisk2/${EXTEN},,m)
exten => _2XX,1,Dial(SIP/asterisk3/${EXTEN},,m)