Krok za krokem s Trixboxem


Miroslav Vozňák, http://homel.vsb.cz/~voz29/miroslav.voznak@vsb.cz 

Tento návod je jednak výsledkem osobních zkušeností s Trixboxem získaných v rámci aktivit kolem IP telefonie na Cesnetu, zkušeností studentů, kteří absolvovali předmět Voice over IP v rámci studia na Katedře telekomunikační techniky FEI VŠB-TU v Ostravě, zkušeností mých kolegů (kamarádů) a z části je překladem různých jiných návodů publikovaných na internetu (viz. literatura).

poslední aktualizace:
5.4.2007

O Trixboxu
Trixbox je IP PBX založená na Asterisku  s webovým konfiguračním rozhraním z projektu FreePBX .  Trixbox je ke stažení ve firmě CD-ISO obrazu s předpřipraveným Linux CentOS a hotovou distribucí Asterisku. Výhodou je rychlá a snadná instalace, velké množství přístupných funkcí Asterisku a komfortní administrace, přitom zůstává zachována možnost i přímo upravovat konfigurační soubory Asterisku. Trixbox je vhodný nejen k telefonování, ale obsahuje i řadu zajímavých nadstaveb jako např. FOP, ARIMuninCRM , HUDlite a spoustu dalších.


Obsah


1 Stažení a instalace
1.1 Nastavení sítě
1.2 Instalace ISDN PRI karty
1.3 Zabezpečení
1.4 Přihlášení

2 Konfigurace systému
2.1 Konfigurace pro Sendmail
2.2 Administrace modulů
2.3 Voicemail
2.4 Konfigurace vedení a odchozího směru


3 Konfigurace poboček
3.1 Základní konfigurace SIP a IAX2 pobočky
3.2 Možnosti nastavení parametrů pobočky

4 SIP a ENUM Trunk
4.1 Konfigurace propojení přes SIP Trunk
4.2 Nastavení odchozích pravidel přes Outbound Routes
4.3 Konfigurace propojení přes ENUM

5 Rozšiřující možnosti nastavení
5.1 Oprávnění volání, kategorie uživatelů

6 Tipy a triky
6.1 Změna loga

7 Klienti

8 Troubleshooting
            8.1 Registrace

 9 Literatura

1 Stažení a instalace

Domovská stránka Trixboxu  je http://www.trixbox.org/ ,kde najdete i poslední verzi.Postup je následující:

1.1 Nastavení sítě

K nastavení sítě se dostaneme příkazem netconfig

[root@asterisk1 ~]# netconfig

Následující obrázek snad nepotřebuje komentář.

Netconfig - Nastavení sítě

Restart síťových služeb docílíte příkazem service network restart.

[root@asterisk1 ~]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Setting network parameters:                                [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
 
Pokud chcete vložit adresu sekundární DNS, tak jej přidejte do /etc/resolv.conf

            [root@asterisk1 ~]# nano /etc/resolv.conf

Textový editor nano opustíte volbou CTRL+X a po výzvě k uložení změn v souboru zadejte Y..

1.2 Instalace  ISDN karty 

Téměř každá pobočková ústředna (PBX) je dnes vybavena ISDN rozhraním pro připojení do PSTN (veřejné tel. sítě). Osobně považuji ISDN za archaickou technologii, která splnila svůj úkol a její dny budou v několika následujících letech sečteny, alespoň v technologicky vyspělých zemích. Perspektivní způsobem propojování je SIP trunk na poskytovatele tel. služeb přes SIP a v kombinaci s ENUMem (využití DNS pro mapování tel. čísel a URI) se stane převažujícím způsobem propojování v přicházející generaci komunikačních systémů .

Každopádně ISDN zde stále je a od PBX se očekává možnost propojení na ISDN. Prozatím mám zkušenosti s moduly Digium TE410P PCI (4xT1/E1),  Digium TE110P PCI (1xT1/E1),  Sangoma A101 PCI (1xT1/E1) a ISDN BRI kartami HFC-PCI.

Následující postup platí pro Digium Wildcard TE110P T1/E1. Tento modul je do PCI slotu, jedná se o rozhraní T1 (24 kanálů) nebo E1 (32 kanálů) zakončené na RJ45 (PINy 1-2 a 4-5). Na webu se dá pořídit za cenu od 430 U$  a výše, což je výrazně míň než koncová cena výrobce Digium. V ČR je řada prodejců těchto karet.

Karta TE110P
V prvé řadě je nutné po rozbalení karty zapnout switch na kartě (jumper), karta je standardně od výrobce dodávaná s nastavením v režimu T1. Pokud zapomenete switch nastavit, tak se to dá udělat i parametrem ovladače wct11xp

insmod wct11xp t1e1override=0xFF     # pro E1,
insmod wct1xxp t1e1override=0xFF     # pro T1

anebo v jednom z návodů  se píše, že je možné přidat do /etc/modprobe.conf

options wct4xxp t1e1override=0xFF.

Jelikož je Trixbox postaven na CentOS (100% kompatibilní s Redhat Enterprise Linuxem), používá Kudzu pro detekci nového HW.  Digium Wildcard TE110P je automaticky detekován a v /etc se objeví soubor zaptel.conf, který byl automaticky vytvořen při instalaci. Tento soubor musíme nastavit. Otevřeme tedy oblíbený editor v linuxu např.

 [root@asterisk1 ~]# nano /etc/zaptel.conf

Následující soubor je ukázkou zaptel.conf pro případ, že připojujeme ISDN PRI jako Slave/UserSide (tedy k veřejné tel. ústředně některého z operátorů).

span=1,1,0,ccs,hdb3,crc4
bchan=1-15
dchan=16
bchan=17-31
loadzone        = de
defaultzone     = de

definice parametrů je následující:
span=<spannum>,<timing>,<LBO>,<framing>,<coding>

kde spannum definuje číslo portu (1 - pro první port, 2 - druhý port na víceportové kartě, atd ..., ale máte-li  TE110P a zároveň TE410P, tak pokud TE110P používá 1, tak pro první port TE410P je číslo 2, pro druhý 3, atd ....).

Timing určuje způsob synchronizace E1/T1, v zásadě máme pouze možnost synchronizace z vnitřních hodin (internal clocking) anebo z E1 (external clocking, synchronizujeme vnitřní hodiny dle protější strany), pokud selžou externí hodiny, tak se automaticky přechází na interní.  Možnosti jsou následujícící:
0.... znamenají interní hodiny,
1.... znamená, že se synchronizuje prioritně z tohoto portu,
2.... znamená, že se synchronizuje prioritně z tohoto portu, pokud synchronizace z portu s prioritou 1 selže

LBO (Line Build Out) je výkonová úroveň signálu v dB, kterou je možné nastavit v závislosti na vzdálenosti propojovaných zažízení, doporučené hodnoty LBO jsou následující:
0 .... do 400 m,
1 .... od 400 do 800m,
2 .... od 800 do 1,2 km,
3 .... od 1,2 km do 1,6 km,
4 .... od 1,6 km do 2 km.

Pro T1 se mů že Framing nastavit na hodnoty D4 nebo ESF, pro E1 na CAS nebo CCS, tzn. buď je signalizace kanálově orientovaná (CAS) anebo soustředěná společným kanálem (CCS).

Coding určuje typ použitého linkového kódu, který může být AMI, B8ZS anebo HDB3, za typem kódování obvykle  na E1 ještě následuje zabezpečení rámce metodou CRC4.

Konfigurace kanálů vychází z typu použitého rozhraní, čili pro T1:
bchan=1-23
dchan=24

a v případě E1 to bude:
bchan=1-15,17-31
dchan=16

pokud budeme mít čtyřportovou E1, tak konfigurace kanálů bude vypadat následovně:
bchan=1-15,17-31
dchan=16
bchan=32-46,48-62
dchan=47
bchan=63-77,79-93
dchan=78
bchan=94-108,110-124
dchan=109


Poněvadž téměř v každé zemi je nějaké specifické nastavení kontrolních tónů (oznamovací, vyzváněcí, obsazovací, odkazovací, ..), tak pomocí loadzone a defaultzone lze nastavit typ tónu, pokud zvolíme de, tak se jedná o Německo.

Po editaci /etc/zaptel.conf je nutné nahrát konfiguraci. Buď Trixbox zrestartujete anebo použijete příkaz  ztcfg -vv , kterým se načte nová konfigurace uložená v /etc/zaptel.conf .  Nakonec se podíváme na aktuální stav rozhraní podporovaného ovladačemi Zaptel pomocí příkazu cat /proc/zaptel.

[root@asterisk1 ~]# cat /proc/zaptel/*  
Span 1: WCT1/0 "Digium Wildcard TE110P T1/E1 Card 0" HDB3/CCS/CRC4

           1 WCT1/0/1 Clear (In use)
           2 WCT1/0/2 Clear (In use)
           3 WCT1/0/3 Clear (In use)
           4 WCT1/0/4 Clear (In use)
           5 WCT1/0/5 Clear (In use)
           6 WCT1/0/6 Clear (In use)
           7 WCT1/0/7 Clear (In use)
           8 WCT1/0/8 Clear (In use)
           9 WCT1/0/9 Clear (In use)
          10 WCT1/0/10 Clear (In use)
          11 WCT1/0/11 Clear (In use)
          12 WCT1/0/12 Clear (In use)
          13 WCT1/0/13 Clear (In use)
          14 WCT1/0/14 Clear (In use)
          15 WCT1/0/15 Clear (In use)
          16 WCT1/0/16 HDLCFCS (In use)
          17 WCT1/0/17 Clear (In use)
          18 WCT1/0/18 Clear (In use)
          19 WCT1/0/19 Clear (In use)
          20 WCT1/0/20 Clear (In use)
          21 WCT1/0/21 Clear (In use)
          22 WCT1/0/22 Clear (In use)
          23 WCT1/0/23 Clear (In use)
          24 WCT1/0/24 Clear (In use)
          25 WCT1/0/25 Clear (In use)
          26 WCT1/0/26 Clear (In use)
          27 WCT1/0/27 Clear (In use)
          28 WCT1/0/28 Clear (In use)
          29 WCT1/0/29 Clear (In use)
          30 WCT1/0/30 Clear (In use)
          31 WCT1/0/31 Clear (In use)

Pokud chcete nastavit kartu pomocí autokonfigurace Trixboxem, tak k tomu slouží příkaz:

genzaptelconf         /*   autoconfig Zaptel cards

Pokud přece jen chcete  inicializovat ovladače manuálně, tak nejdříve si připravte /etc/zaptel.conf  a použijte modprobe k zavedení ovladače karty:

[root@asterisk1 ~]# modprobe
[root@asterisk1 ~]# modprobe wcte11xp
[root@asterisk1 ~]# ztcfg -vv

Zaptel.conf pracuje na úrovni modulu a řeší fyzickou vrstvu (Master, Slave, synchronizaci), po spuštění Asterisku se zavádí další parametry pro vyšší vrstvy z konfiguráku /etc/asterisk/zapata.conf .

[root@asterisk1 ~]# cat /etc/asterisk/zapata.conf
; Zapata telephony interface
; Configuration file
[trunkgroups]

[channels]
language=de
context=default
switchtype=qsig
;If you connect to a hicom PBX set your ISDN Numbering Plan Identifier to unknown.
pridialplan=unknown
prilocaldialplan=unknown
signalling=pri_cpe
callerid=asreceived
usecallerid=yes
hidecallerid=no
facilityenable = yes
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
overlapdial=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
immediate=no
;callprogress=no

channel => 1-15
channel => 17-31



1.3 Zabezpečení

Prvním krokem v nastavení zabezpečení je změna všech  default-hesel, tyto hesla jsou známa a pokud nebudou změněna, tak je riziko jejich využití poměrně vysoké. Je nutné projet následující příkazy:

passwd admin
passwd-maint

passwd-amp

passwd-meetme


a nakonec můžeme ještě změnit heslo uživatele  root :

    passwd

Pokud se chystáte Trixbox jen vyzkoušet, tak můžete další část přeskočit. Tato část řeší nastavení SSL a iptables. Jelikož většina konfigurace bude probíhat přes web, tak si doinstalujeme SSL a zrestartujeme  HTTP službu pomocí příkazů:  

yum -y install mod_ssl
service httpd restart

Update CentOS se provádí příkazem yum -y update. Vytvoříme si certifikát, na který se bude odkazovat konfigurační soubor apache.

openssl genrsa 1024 > pcn211f.vsb.cz.key    # privátní klíč
openssl req -new -key pcn211f.vsb.cz.key -out pcn211f.vsb.cz.csr    # požádáme CA (sami sebe) o zaslání certifikátu
openssl req -x509 -days 700 -key pcn211f.vsb.cz.key -in pcn211f.vsb.cz.csr -out ast1.vsb.cz.crt    #  podepíšeme cert., platí 700 dnů

[root@asterisk1 ~]# cd /root

[root@asterisk1 ~]# openssl genrsa 1024 > pcn211f.vsb.cz.key
Generating RSA private key, 1024 bit long modulus
............................................++++++
..........++++++
e is 65537 (0x10001)
[root@asterisk1 ~]#  openssl req -new -key pcn211f.vsb.cz.key -out pcn211f.vsb.cz.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:42
State or Province Name (full name) [Berkshire]:Morava
Locality Name (eg, city) [Newbury]:Ostrava
Organization Name (eg, company) [My Company Ltd]:VSB TU
Organizational Unit Name (eg, section) []:k454
Common Name (eg, your name or your server's hostname) []:Voznak Miroslav
Email Address []:miroslav.voznak@vsb.cz

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@asterisk1 ~]# openssl req -x509 -days 700 -key pcn211f.vsb.cz.key -in pcn211f.vsb.cz.csr -out ast1.vsb.cz.crt
[root@asterisk1 ~]#

Teď v ssl.conf nastavíme cesty k vytvořeným souborům key a crt, které jsme vytvořili
        SSLCertificateFile /etc/httpd/conf/ssl.crt/ast1.vsb.cz.crt
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/pcn211f.vsb.cz.key

Teď zabezpečíme Trixbox na úrovni firewallu (dále jen FW), což vyžaduje konfiguraci iptables. Nastavení iptables doporučuji provést dle tohoto článku. Do pravidel nezapomeňte povolit SIP, SSH, HTTPS a případně další protokoly.

# SSH, HTTPS
-A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

# případně  HTTP z konkrétní sítě nebo neomezený přístup z konkrétní IP
-A INPUT -s 158.196.81.0/24 -p tcp -m tcp --dport 80 -j ACCEPT                                                         
-A INPUT -s 147.32.253.251 -j ACCEPT                                                                                               
                           
# SIP, H323, IAX2
-A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
-A INPUT -p udp -m udp --dport 4569 -j ACCEPT
-A INPUT -p udp -m udp --dport 5060 -j ACCEPT
-A INPUT -p udp -m udp --dport 1719 -j ACCEPT
-A INPUT -p udp -m udp --dport 1718 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1720 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1721 -j ACCEPT

Možnosti iptables jsou rozsáhlé a pokud s FW nemáte zkušenosti, tak Vám doporučuji nejdříve získat aspoň elementární zkušenosti se základním nastavením a potom pokračovat dál.

[root@asterisk1 ~]# /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
[root@asterisk1 ~]# /sbin/iptables -A INPUT -j DROP
[root@asterisk1 ~]# iptables-save > /etc/iptables.conf
[root@asterisk1 ~]# iptables -F

/*  poeditovat  
/etc/iptables.conf  a vyzkoušet

[root@asterisk1 ~]# iptables-restore < /etc/iptables.conf
[root@asterisk1 ~]# iptables -L -vn

/*  poeditovat  /etc/rc3.d/S99local

[root@asterisk1 etc]# nano /etc/rc3.d/S99local

# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

/sbin/iptables -F
/sbin/iptables-restore < /etc/iptables.conf
touch /var/lock/subsys/local
/etc/trixbox/runonce
/usr/local/sbin/motd.sh > /etc/motd
/usr/sbin/fxotune -s
/usr/sbin/amportal start

Nakonec ještě doporučuji drobnou úpravu ve /var/www/html/index.php ,aby jako default najížděla stránka pro uživatelskou administraci Trixboxu :

nano /var/www/html/index.php

<?php^
/* $location = 'http://'.$_SERVER['HTTP_HOST'].'/user/'; */
$location = 'https://'.$_SERVER['HTTP_HOST'].'/recordings/index.php'; ^

header("location:".$location);^
?>

Po doinstalování modulů 2.2 Administrace modulů bude úprava aktivní.

1.4 Přihlášení

Konfigurace Trixboxu bude probíhat přes SSH. Pro přidání uživatele, nastavení hesla a smazání uživatele můžeme použití příkazy:

            # adduser jmeno
            # passwd jmeno
            # userdel jmeno

Pro přihlášení použijeme oblíbeného ssh klienta. Pro konfiguraci trixboxu https://IPadresa/maint , pokud jste si neneastavili heslo, tak default je

user: maint
password: password

okno po přihlášení


2 Konfigurace systému

Ze všeho nejdříve by měl být proveden update Trixboxu na poslední verzi pomocí  trixbox-update.sh:

[root@asterisk1 ~]# trixbox-update.sh                  # zjištění aktuální verze
[root@asterisk1 ~]# trixbox-update.sh  update     # provedení update

Pro update CentOS použijeme:

[root@asterisk1 ~]# yum -y update

Asterisk  můžeme zastavit, pustit nebo restartovat příkazem amportal, pro restart použijeme:

[root@asterisk1 log]# amportal restart

V dalším kroku je nutné zadat FQDN (Fully Qualified Domain Name) do souboru /etc/hosts.
 
[root@asterisk1 ~]# nano /etc/hosts 
158.196.81.132    asterisk.vsb.cz
# neodstraňujte řádky pro localhost

2.1 Konfigurace pro Sendmail

Nainstalujeme sendmail:

[root@asterisk1 mail]# yum install sendmail-cf

Nastavíme jméno SMTP pro odesílání pošty v   /etc/mail/sendmail.mc 

[root@asterisk1 mail]# nano /etc/mail/sendmail.mc
# najdeme dnl define(`SMART_HOST',`smtp.yourprovider')
# smtp.provider nahradíme názvem našeho SMTP,
# výsledná úprava teda může vypadat podobně - dnl define(`SMART_HOST',`smtp.vsb.cz')

Pomocí make vyrobíme nový sendmail.cf

[root@asterisk1 mail]# make -C /etc/mail

A nakonec sendmail zrestartujeme:

[root@asterisk1 etc]# /etc/init.d/sendmail restart

Shutting down sendmail:                            [  OK  ]
Shutting down sm-client:                            [  OK  ]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                         [  OK  ]

Pro vyzkoušení odešleme zkušební mail:

[root@asterisk1 etc]# echo "Tak co, funguje ?" | sendmail -v miroslav.voznak@vsb.cz 

Pokud jste nezadali svůj email,  tak zkušební zpráva skončila v mé poště. Činnost sendmailu se zapisuje do logu, který nám může pomoci při lokalizaci problému:

[root@asterisk1 mail]# cd /var/log 
[root@asterisk1 log]# tail -200 maillog

2.2 Administrace modulů

Přihlásíme se do Trixboxu  https://IPadresa/maint/ a přes Asterisk -> FreePBX -> Tools se dostaneme k menu Module Admin. Po rozkliknutí se dostaneme k možnosti doinstalovat další moduly.

Module Admin

Jako výchozí bude nainstalováno jen jádro systému a další moduly musíme zvolit, rozklikneme a zvolíme Install.

Instalace modulu

Ke každému modulu si můžeme přečíst krátký popis funkce. Pro prvotní instalaci Trixboxu doporučuji zvolit následující moduly:
Po vybrání modulu zvolíme Procees a potvrdíme instalaci.
Update modulů

Teď je vhodné provést update nainstalovaných modulů na aktuální verzi. Zvolíme Check for updates online a zaškrtneme položku Show only upgradable.

Upgrade modulů

Opět vybereme jednotlivé moduly, kde zvolíme download and upgrade, odešleme ke zpracování přes Process a potvrdíme Confirm.  

Další možností je stáhnout upgrade přímo z freePBX.org, kde je poslední verze 2.2:1. Pro přímé stažení a instalaci:
cd /usr/src/
wget http://mirror.freepbx.org/freepbx-2.2.1.tar.gz
tar zxvf freepbx-2.2.1.tar.gz
cd freepbx-2.2.1
./install_amp

Anebo namísto výše popsaného je možné stáhnout všechny moduly najednou s využitím balíčku  'withmodules' :

cd /usr/src/
wget http://mirror.freepbx.org/freepbx-2.2.1-withmodules.tar.gz
tar zxvf freepbx-2.2.1-withmodules.tar.gz
cd freepbx-2.2.1
./install_amp

2.3 Voicemail

Základním předpokladem je, že jsme úspěšně prošli částí 2.1 Konfigurace pro Sendmail  a pokud ne, tak nebudeme mít možnost posílat zprávy do emailu. Nejdříve nastavíme několik užitečných parametrů v části  Setup-> General Settings, jde o parametry:
obecné parametry pro VM

Teď je vhodné upravit etc/asterisk/vm_general.inc , především nastavit mailové jméno odesílatele zprávy a omezit délku záznamu.

[root@asterisk1 asterisk]# nano /etc/asterisk/vm_general.inc

; 1st listed format gets emailed 

format=wav|wav49
 
attach=yes 
pbxskip=yes
serveremail=vms@vsb.cz
fromstring=Voicemail System
maxmessage=180 ; max. délka zprávy 
minmessage=3 ; min. délka zprávy 
maxsilence=5 ; po pěti sekundách ticha ukončit
silencethreshold=128
skipms=3000
review=yes
operator=yes


Obsah textu zprávy odesílané emailem můžeme upravit v souboru etc/asterisk/vm_email.inc

[root@asterisk1 ~]# cat /etc/asterisk/vm_email.inc
; Change the email body and subject, variables: VM_NAME, VM_DUR, VM_MSGNUM, VM_MAILBOX, VM_CALLERID, VM_DATE

emailsubject=New message ${VM_MSGNUM} in mailbox ${VM_MAILBOX} from ${VM_CALLERID}

emailbody=${VM_NAME},\n\nThere is a new voicemail in mailbox ${VM_MAILBOX}:\n\n\tFrom:\t${VM_CALLERID}\n\tLength:\t${VM_DUR} seconds\n\tDate:\t${VM_DATE} \n\nOpen an email attachement or visit https://pbx-a-ast1.vsb.cz/recordings/ to check the settings of Your extension.\n Contact mailto:miroslav.voznak@vsb.cz for resolving technical issues.

Výsledek výše popsané úpravy vidíme v emailu

-------- Původní zpráva --------
Předmět: New message 1 in mailbox 7101 from "Jiri Jirout" <7200>
Datum: Sun, 25 Feb 2007 22:40:35 +0100
Od: Voicemail System <vms@vsb.cz>
Komu: Miroslav Voznak <miroslav.voznak@vsb.cz>

Miroslav Voznak,

There is a new voicemail in mailbox 7101:

    From:    "Jiri Jirout" <7200>
    Length:    0:09 seconds
    Date:    Sunday, February 25, 2007 at 10:40:35 PM

Open an email attachement or visit https://pbx-a-ast1.vsb.cz/recordings/ to check the settings of Your extension.
Contact mailto:miroslav.voznak@vsb.cz for resolving technical issues.


2.4 Konfigurace ISDN vedení a odchozího směru

Prvním krokem je přidání ZAP Trunk v menu Trunks. Tím se přidá další vedení a protože jsme si  v části  1.2 Instalace ISDN PRI karty ukázali instalaci  ISDN PRI  karty a v /etc/asterisk/zapata.conf jsme toto ISDN PRI vedení zařadili do skupiny group=1 , tak stačí přidat přes Add Trunk další vedení s identifikací g1 (group=1).
Zap Trunk

Teď nastavíme odchod přes Zap/g1 v Outbound Routes , kde označíme pravidla volby.

Odchozi smer



3 Konfigurace poboček

Pobočky vytváříme přes menu Setup -> Extensions , kde můžeme přidat pobočku typu SIP, IAX2, ZAP anebo Custom. Příklad níže ukazuje vytvoření pobočky (SIP), Trixbox nepodporuje jmenné identifikátory uživatelů a vyplňujeme především tři údaje, kterými jsou User Extension, Display Name a Secret.

SIPextension_a

Ihned při zakládání nového uživatele můžeme vyplnit parametry pro Voice Mail.

SIPextension_b
Pokud je nainstalován modul Print Extensions, tak máme přehledný seznam uživatelů, kde jsou jména a pobočky.

seznamp


3.1 Základní konfigurace SIP a IAX2 pobočky

Při přidání pobočky jsou nám nabídnuty k vyplnění následující dvě povinné položky :

User Extension
se vždy zadává tel. číslo nově zřizované pobočky,

Display Name
je jméno volajícího (nevyplňovat číslo), vždy je odesíláno zadané jméno, bez ohledu na to, co si sám nastaví uživatel.


3.2 Možnosti nastavení parametrů pobočky

Všechny ostatní položky jsou nepovinné a následující sada je označována jako Extension Options a patří zde:
 
Direct DID
což je provolba přiřazená pobočce, pokud je posílána a měla by být zadaná ve stejném formátu jak je poskytována operátorem a standardně je pole nevyplněné,

DID Alert Info
Alert Info může být využíváno pro rozlišení vyzvánění na SIP telefonech. Pokud bude voláno konkrétní DID (provolba), tak bude posláno Alert-Info, což je pole v SIP hlaviččce specifikující odlišné vyzvánění, bez nastaveného Direct DID nemá význam. Použití např.  Alert-Info: <http://www.example.com/sounds/moo.wav>

Outbound CID
Přepisuje id volajícího, když se volá ven přes trunk. Jakékoliv nastavení zde bude přepisovat odchozí id volajícího nastavené v Trunks. Formát je
"caller name" <#######>

Emergency CID
Zadané id v této položce bude vždy nastaveno, pokud bude odchozí volání označeno jako nouzové. Emergency CID přepisuje všechny ostatní id volajícího.

Další položky jsou označeny jako Device Options a zde patří:

secret    
je heslo uživatele, lze i bez hesla, což pochopitelně představuje bezpečnostní riziko,

dtmfmode
podporuje tři možnosti, inband, rfc2833 nebo info (pomocí metody INFO), pokud je DTMF volba posílána v pásmu, tak je funkční pouze s kodekem G.711, mimo pásmo se používá info anebo rfc2833, doporučený mód je rfc2833,

canreinvite
tady je možné vyplnit "yes" anebo "no", Asterisk se standardně chová jako B2BUA (vše přeposílá, reinicalizuje) a dokáže tak výborně pomáhat i klientům za NATem, jelikož na sebe zakončuje tok signalizace i tok hovoru a znovu reinicializuje v novém spojení k cílovému uživateli, pokud není tato funkce žádoucí a z nějakého důvodu je potřebné přímé RTP spojení označované mnohdy jako "payload switching" anebo "direct RTP patch", tak je možné zadat "yes",

context
je velmi důležitý, podle příslušnosti k určítému "context" můžu řídí procesy spojování, standardně from-internal (povoleno volit jakékoliv číslo), případně from-restricted viz, kapitola 5.1 (omezím pouze do povolených směrů, na VŠB-TUO jsou zařazeny v tomto kontextu všechny volání zdarma v rámci PBX a Cesnetu)

host
pokud je host nastaven na "dynamic", tak je vyžadována registrace a Asterisk získává aktuální IP adresu uživatele, na které je dosažitelný, pokud vyplníme "static", tak registrace není vyžadována

type
každé spojení může být definováno jako user, peer anebo friend, zatímco user je pro příchozí volání a peer pro odchozí, tak friend je zároveň pro příchozí i odchozí, standardně vyplňujeme "friend".

nat
pokud je volba "yes", tak Asterisk ignoruje IP adresu v poli Contact a vezme IP adresu, ze které paket přišel.

port
je port služby, standardně 5060

qualify
pokud je "yes" , tak monitoruje zpoždění, jestli je menší než 2000ms, pokud splňuje, tak je klient dosažitelný, v případě změny se "yes"  nahrazuje časem v milisekundách, který mý býti kontrolován

callgroup    
se používá pro přiřazení jedné nebo více skupinám, ve které bude volání vyzvánět,

pickupgroup    
obdobně jako v předchozím případě se používá pro přiřazení jedné nebo více skupinám, ve které bude možné volání převzít, pro tento účel slouží kód *8

disallow    
specifikuje kodek, který má býti zakázán (all pro všechny)

allow
specifikuje povolené kodeky (jinak se řídí pomocí sip.conf)

dial
syntaxe je SIP/tel.c anebo IAX2/tel.c.

accountcode    
zadává se jako text alfanumerických znaků a je to zůčtovací kód (projeví se v CDR)

mailbox
má syntaxi telc.@default a určuje hlasovou schránku uživatele, pro zadání více schránek se odděluje čárkou, např. 2221@deault,2224@default,2289@default a zprávy se vybírají přes *98

Další sekce nastavení nese označení Fax Handling a řeší se zde příjem a odesílání faxů na email:

FaxExtension
pro odesílání a příjem faxů systémem má být vybrána položka "system", pro funkčnost je nutné nastavení v General settings

Fax Email
emailová adresa, pokud není zadána,t ak platí nastavení z General settings

Fax DetectionType
Zaptel nebo  NVFax bude okamžitě odpovídat na volání po vyzvávění trvající dle položky uvedené níže. NVfax se používá na SIP nebo IAX trunky.

Pause after answer
je počet sekund do automatického vyzvednutí.

Další sekce má název Privacy:

Privacy Manager
pokud není poslána identifikace volajícího, tak volající bude vyzván k zadání svého tel.č. a dostane tři pokusy

Následuje sekce, která řeší nahrávání Recording Options:

Record IncomingRecord
nahrávání příchozích hovorů na vyžádání, vždy a nikdy (On demand, always, never)

Record OutgoingRecord
nahrávání odchozích hovorů na vyžádání, vždy a nikdy (On demand, always, never)

Poslení sekce má název Voicemail & Directory:

Status    
stav povoleno nebo zakázáno (enabled | disabled)

voicemail password
heslo uživatele pro vstup do vlastní schránky hlasové pošty, může obsahovat pouze čísla

pager email address
emailová adresa pro zaslání krátkých upozornění na nový vzkaz

email attachment
volba, zda k emailu rovnou připojit zanechanou zprávu v příloze

Play CID
volba, zda přečíst číslo volajícího před přehráním zprávy

Play Envelope
volba, zda přehrát datum a čas  kdy byla zpráva zanechána

Delete Vmail
volba, zda smazat zprávu po odeslání na email

vm options
další možnosti, oddělené přes ( | ), např. review=yes|maxmessage=60

vm context    
standardně default

4 SIP a ENUM Trunk

Trunk chápeme jako propojení s okolním světem, přes trunk bude odcházet volání mimo náš Trixbox a rovněž přes trunk budou volání přicházet. Jelikož je zapotřebí rozhodnout, přes který trunk budeme směrovat konkrétní volbu, tak musíme vytvořit soubor pravidel pro určení směru, čili filtr. Tento filtr volby nese označení dial pattern a má následující možnosti:

X — znak X znamená jakékoliv číslo z rozsahu 0 až 9
N — znamená jakékoliv číslo z rozsahu 2 až 9
Z — znamená jakékoliv číslo z rozsahu 1 až 9
[] — zastupuje jeden znak ze seznamu v závorkách, např. [02-68*#] vyhovuje 0, čísla z rozsahu 2 až 6, 8, * a #
. - tečka je zástupný symbol pro jakýkoliv znak
| - znaky před tímto symbolem nejsou voleny do trunku, používá se k oříznutí prefixu
+ - znaky před tímto symbolem budou přidány, např. 420+  znamená přidání 420 před číslo, znak + se může kombinovat se znakem |, např. 0|420+NXXXXXXXX zareaguje na vytočené číslo 0603565999 tak, že přes trunk odešle 420603565999, stejný efekt bude mít zadání 420+0|NXXXXXXXX

4.1  Konfigurace propojení přes SIP Trunk

Přes  Setup -> Trunks přidáme  Add SIP trunk.  Nastavení má tyto sekce:
  • General Settings (obecná nastavení),
  • Outgoing Dial Rules (pravidla odchozí volby),
  • Outgoing Settings (odchozí nastavení),
  • Incomming Settings (příchozí nastavení),
  • Registrations (registrace).
General Settings se může nastavit:

Outbound Caller ID
ID volajícího, které je nahrazeno na odchodu přes trunk. Formát je "caller name" <#######> a pokud se napíše "hiden", tak to ID volajícího bude potlačeno, potlačení funguje na PRI/BRI/SIP/IAX.

Never Override CallerID
někteří VoIP poskytovatelé nepovolují volání, pokud je posláno neplatné CallerID. Použije se k tomu, aby nebyly posílány CallerID, které nejsou explicitně zadány v trunku nebo v poli "outbound callerid" pobočky. Výsledným efektem zaškrtnutí políčka je zakázání cizích callerid odcházejících přes trunk.

Maximum channels
maximální počet použitých kanálů (současných hovorů) pro trunk, zahrnující příchozí i odchozí

V další sekci Outgoing Dial Rules se řeší pravidla volby:

Dial Rules
pravidlo řídí volbu čísla přes trunk, jednotlivé pravidla se zapisují pod sebe, jejich formát je uveden v začátku kapitoly

Dial rules wizard
pomáhá vytvořit pravidlo a jelikož zohledňuje především nastavení v USA, tak nelze doporučit jeho používání !!!

Outbound Dial Prefix
je prefix pro odchozí směr, pokud je Trixbox za jinou PBX, tak vložíme 0, která se automaticky přidá do všech odchodů

Další sekce má název Outgoing Settings:

Trunk Name
jedinečné jméno pro trunk
    
PEER Details
zde se nastaví parametry spojení, standardně se jedná o:
host=195.113.113.131
secret=696999
type=peer
username=8775097342

Další sekce má název Incoming Settings:

USER Context
název účtu (může být i číslo), jeho parametry se definují níže

USER Details
zde se upraví parametry spojení, standardně jsou k vyplnění připravené tři parametry, ale můžou se přidat další:
context=from-internal
secret=696999
type=user

Poslední sekcí je Registration:

Register String
jelikož většina VoIP poskytovatelů vyžaduje registraci, tak zde je možné zadat registrační řetězec, např. username:password@host   (8775097342:696999@sip.iptel.org), pokud je vyžadována i provolba (DID), tak se zadává formát username:password@host/DID

Pokud jsme založili nový trunk, tak je nutné ještě nastavit Outbound Routes a zde můžeme nastavit také pravidla Outgoing dial rules a není nutné je nastavovat v menu Trunks, což je vidět na příkladu níže, kde nasatvení pravidel není vyplněno a vyplňujeme Outgoing,Incomming setttings a Registrations.

Trunks

4.2  Nastavení odchozích pravidel přes Outbound Routes

Přes  Setup -> Outbound Routes přidáme  Add route.  Nastavení má tyto položky:

Route Name
v položce se zadává název směru, je používáno k popisu, jaký typ volání odchází přes směr (ČR, mezinárodní, atd ...)

Route Password
do této položky může být zadáno číselné heslo a ke jeho zadání je vyzván uživatel, který chce směr použít

Emergency Dialing
zvolením této položky se uplatní nastavení "Emergency CID", pokud je nastaveno, může být např. použito, pokud je směr využíván pro nouzová volání (např. 112)

Intra Company Route
zaškrtnutím položky bude tento směr chápán jako vnitřní propojení mezi pobočkami společnosti, zachovají se interní informace "Caller ID" a nebude se uplatňovat "outbund CID" nastevné pro trunk.

Dial Patterns se řídí pravidly uvedenými v úvodu kapitoly 4.

Trunk Sequence
pomocí této položky se řídí pořadí obsazování trunků, obvykle nejprve zkusí levnější trunk (třeba ENUM) a potom dražší (třeba SIP nebo ZAP).

Na obrázku níže je příklad vyplnění Outbound Route.
outbound route



4.3  Konfigurace propojení přes ENUM


Přes  Setup -> Trunks přidáme  Add ENUM trunk.

        bude doplněno ...


5 Rozšiřující možnosti nastavení


5.1  Oprávnění volání, kategorie uživatelů

Často se potkáváme u PBX s požadavkem restrikce volání do určitách směrů a na PBX bývají snadardně vytvářeny kategorie uživatelů, kteří jsou oprávněni volat pouze interně, v rámci ČR a mezinárodně, častěji bývá nastaveno ještě podrobnější rozdělení. Pochopitelně i s Trixboxem je možné vytvářet kategorie, které přidělíme uživatelům. Princip spočívá ve vytvoření různých kontextů, které pobočkám přidělujeme.

V následujícím příkladu budou použity dva typy kontextů [from-internal] a [from-restricted]. Postup se skládá z následujících kroků:

1.
Zkopírujeme obsah sekce  [outbound-allroutes] ze souboru /etc/asterisk/extensions_additional.conf  a odložíme si jej do jiného souboru, který si za tím účelem vytvoříme (obsah sekce označím jako F1), v našem případě vypadá následovně:

[outbound-allroutes]
include => outbound-allroutes-custom
include => outrt-001-9_outside
include => outrt-002-PBX VSB
exten => foo,1,Noop(bar)
; end of [outbound-allroutes]

2. Zkopírujeme obsah sekce [from-internal-additional] ze souboru /etc/asterisk/extensions_additional.conf , v našem případě vypadá následovně:

[from-internal-additional]
include => from-internal-additional-custom
include => app-dialvm
include => app-vmmain
include => app-cf-busy-off
include => app-cf-busy-off-any
include => app-cf-busy-on
include => app-cf-off
include => app-cf-off-any
include => app-cf-on
include => app-cf-unavailable-off
include => app-cf-unavailable-on
include => app-userlogonoff
include => app-pickup
include => app-zapbarge
include => app-chanspy
include => ext-test
include => ext-local
include => outbound-allroutes
exten => h,1,Hangup
; end of [from-internal-additional]

3. Vytvoříme novou sekci [from-restricted] v souboru /etc/asterisk/extensions_custom.conf  a do ní vložíme obsah zkopírovaný v předchozím kroku 2. a hned za něj obsah (F1) uložený v kroku 1. a nakonec přidáme

exten => h,1,Hangup
exten => s,1,Macro(hangupcall)
exten => h,1,Macro(hangupcall)

 v  našem případě výsledek v souboru  /etc/asterisk/extensions_custom.conf vypadá následovně:

[from-restricted]
include => from-internal-additional-custom
include => app-dialvm
include => app-vmmain
include => app-cf-busy-off
include => app-cf-busy-off-any
include => app-cf-busy-on
include => app-cf-off
include => app-cf-off-any
include => app-cf-on
include => app-cf-unavailable-off
include => app-cf-unavailable-on
include => app-userlogonoff
include => app-pickup
include => app-zapbarge
include => app-chanspy
include => ext-test
include => ext-local
include => outbound-allroutes-custom
;include => outrt-001-9_outside
include => outrt-002-PBX VSB
exten => foo,1,Noop(bar)
exten => h,1,Hangup
exten => s,1,Macro(hangupcall)
exten => h,1,Macro(hangupcall)

4. Nakonecv /etc/asterisk/extensions_custom.conf   zakomentujeme ";" směry, které budeme chtít v kontextu [from-restricted] zakázat, což je už provedeno v kroku 3.

;include => outrt-001-9_outside

Směry se nastavují přes menu SETUP -> OUTBOUND ROUTES , v našem případě měly směry názvy PBX VSB a 9_outside. Pobočku omezíme nastavením položky context na [from-restricted] v menu SETUP -> EXTENSIONS

6 Tipy a triky


6.1  Změna loga


Při přihlášení admina je logo v levém rohu v souboru  /var/www/html/maint/skin/default/header.gif

header.gif

Při přihlášení uživatele je logo v levém rohu v souboru  /var/www/html/recordings/theme/logo.gif

logo


7 Klienti


Praktické zkušenosti s nastavením několika klientů můžete najít  v tomto článku.

7.1 Nokia

V současné době (rok 2007) má Nokia na trhu následující typy mobilních telefonů vybavených SIP klientem:
Nokia E60, E61, E70, N80 a E61PR3

Nastavení:

Navigate to Tools->Settings->Connection->SIP settings.

Open the Options menu and select Add new->Use default profile:
Profile name:    to be defined
Service profile:    IETF
Default access point:    your wifi access point
Public user name:    sip:SIPuser@host (usually "host" is IP address or name of  your SIP Server)
Use compression:    No
Regristration:    Always on
Use security:    No

Proxy server:
Proxy server address:    sip:IP address of your asterisk
Realm:    asterisk (or realm of your asterisk)
User name:    SIP user
Password:    secret
Allow loose routing:    Yes
Transport type:    UDP
Port:    5060

Registrar server:
Registrar serv.addr.:    sip:Asterisk
Realm:    -
User name:     -
Password:    -
Transport type:    UDP
Port:    5060

Now, navigate to Tools->Settings->Connection->Internet tel.settings: and create a New profile in the Options menu with the following settings:
Name:    Default
SIP profiles:    previously defined profile


Název profilu: dle libosti (např. asterisk)
Profil služby: IETF
výchozí přístupový bod: dle nastavení WiFi (výběrem z nakonfigurovaných přístupů k AP)
veřejné už. jméno: sip:user@host  (user=uživatel, host=doména,což je většinou IPadresa SIP Proxy)
použít kompresi: NE
registrace: vždy zapnuto
zabezpečení: NE
Proxy server: tady stačí nastavit pouze typ přenosu na  UDP a port na 5060
Registrar server:  sip:IPadresanebonazevregistrarserveru (obvykle stejná jako SIP Proxy)
oblast: neboli realm , na všb je to asterisk
už. jméno: tím se registruje na Registrar
heslo: přidělené heslo

8 Troubleshooting

8.1 Registrace


<-- SIP read from 158.196.78.84:5062:
REGISTER sip:158.196.81.132;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 158.196.78.84:5060;branch=z9hG4bKpfv40qm0l5hc66klhs21qo8;rport
From: <sip:7000@158.196.81.132>;tag=r3040qndv1hc7om5hs21
To: <sip:7000@158.196.81.132>
Contact: <sip:7000@158.196.78.84;transport=UDP>;expires=3600
CSeq: 1163 REGISTER
Call-ID: 1Dx0qDjvoIcEyUY47g3lBSeh4cQEl0
User-Agent: Nokia RM-89 3.0633.09.04
Max-Forwards: 70
Content-Length: 0


---> Transmitting to 158.196.78.84:5062:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 158.196.78.84:5060;branch=z9hG4bKpfv40qm0l5hc66klhs21qo8;received=158.196.78.84;rport=5062
From: <sip:7000@158.196.81.132>;tag=r3040qndv1hc7om5hs21
To: <sip:7000@158.196.81.132>
Call-ID: 1Dx0qDjvoIcEyUY47g3lBSeh4cQEl0
CSeq: 1163 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Contact: <sip:7000@158.196.81.132>
Content-Length: 0


---> Transmitting (NAT) to 158.196.78.84:5062:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 158.196.78.84:5060;branch=z9hG4bKpfv40qm0l5hc66klhs21qo8;received=158.196.78.84;rport=5062
From: <sip:7000@158.196.81.132>;tag=r3040qndv1hc7om5hs21
To: <sip:7000@158.196.81.132>;tag=as74977999
Call-ID: 1Dx0qDjvoIcEyUY47g3lBSeh4cQEl0
CSeq: 1163 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="7b578464"
Content-Length: 0

<-- SIP read from 158.196.78.84:5062:
REGISTER sip:158.196.81.132;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 158.196.78.84:5060;branch=z9hG4bK245k1ga0o7jhuo1481l5j3j;rport
From: <sip:7000@158.196.81.132>;tag=r3040qndv1hc7om5hs21
To: <sip:7000@158.196.81.132>
Contact: <sip:7000@158.196.78.84;transport=UDP>;expires=3600
CSeq: 1164 REGISTER
Call-ID: 1Dx0qDjvoIcEyUY47g3lBSeh4cQEl0
User-Agent: Nokia RM-89 3.0633.09.04
Max-Forwards: 70
Authorization: Digest realm="asterisk",nonce="7b578464",algorithm=MD5,username="7000",uri="sip:158.196.81.132;transport=UDP",response="a1119d71b908a45e9dd953bbe0c462e6"
Content-Length: 0


---> Transmitting (NAT) to 158.196.78.84:5062:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 158.196.78.84:5060;branch=z9hG4bK245k1ga0o7jhuo1481l5j3j;received=158.196.78.84;rport=5062
From: <sip:7000@158.196.81.132>;tag=r3040qndv1hc7om5hs21
To: <sip:7000@158.196.81.132>
Call-ID: 1Dx0qDjvoIcEyUY47g3lBSeh4cQEl0
CSeq: 1164 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Contact: <sip:7000@158.196.81.132>
Content-Length: 0


---> Transmitting (NAT) to 158.196.78.84:5062:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 158.196.78.84:5060;branch=z9hG4bK245k1ga0o7jhuo1481l5j3j;received=158.196.78.84;rport=5062
From: <sip:7000@158.196.81.132>;tag=r3040qndv1hc7om5hs21
To: <sip:7000@158.196.81.132>;tag=as74977999
Call-ID: 1Dx0qDjvoIcEyUY47g3lBSeh4cQEl0
CSeq: 1164 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Expires: 3600
Contact: <sip:7000@158.196.78.84;transport=UDP>;expires=3600
Date: Fri, 09 Mar 2007 17:24:52 GMT
Content-Length: 0

9 Literatura