Τα αρχεία αυτά είναι μπορούμε να τα δούμε κάνοντας ένα ls στον φάκελο /etc/asterisk
Όλες οι λειτουργίες του Asterisk καθορίζονται μέσα σε αυτά τα αρχεία με μοναδική εξαίρεση να αποτελεί το αρχείο zaptel.conf που βρίσκεται στο φάκελο /etc και παρέχει ρυθμίσεις για το υλικό Zaptel.
Αρχικές ενέργειες
Τα παραπάνω πρότυπα .conf αρχεία δημιουργήθηκαν με την εντολή make samples κατά την εγκατάσταση του πακέτου asterisk(-1.2). Τα σχόλια που περιέχονται σε αυτά τα αρχεία καθώς επίσης και τα σενάρια χρήσης που υλοποιούνται, θα μας χρησιμεύσουν ως σημείο αναφοράς για την πληθώρα των ρυθμίσεων που μπορούμε να υλοποιήσουμε στο Asterisk. Επειδή στα παραδείγματα που θα αναπτύξουμε παρακάτω, θα αναλύσουμε κάποιες έννοιες και λειτουργίες του Asterisk, οι οποίες θα πρέπει να αναπτυχθούν απ’ την αρχή, είναι καλή πρακτική να κρατήσουμε αντίτυπα των αρχείων που θα αλλάζουμε στην πορεία. Για το λόγο αυτό θα δημιουργήσουμε ένα φάκελο /backup όπου θα αντιγράψουμε όλα τα πρότυπα αρχεία.
# cd /etc/asterisk
# mkdir backup
# cp * backup/
Το πιο απλό PBX (mini-PBX)
Για να κατανοήσουμε στην πράξη το πως ακριβώς συνδέονται τα .conf αρχεία και πώς συντάσσονται θα δημιουργήσουμε μία απλή υλοποίηση ενός PBX γενικής χρήσεως, το οποίο θα αναπτύσσεται στις επόμενες δημοσιεύσεις. Στο συγκεκριμένο παράδειγμα θα διαμορφώσουμε το Asterisk και δύο softphones[1] έτσι ώστε να μπορέσουν να μιλήσουν μεταξύ τους, μέσω του Asterisk. Τα softphones που επιλέχτηκαν είναι το kiax και το x-lite. Το kiax χρησιμοποιεί το πρωτόκολλο ΙΑΧ2 ενώ το x-lite χρησιμοποιεί το SIP, το Asterisk χειρίζεται και τα δύο αυτά πρωτόκολλα λειτουργώντας ως VoIP Gateway μεταξύ των δύο.
Τα αρχεία με τα οποία θα ασχοληθούμε είναι τα sip.conf, iax.conf και extensions.conf. Στα αρχεία sip.conf και iax.conf θα ορίσουμε τους χρήστες που θα επιτρέπουμε να συνδεθούν στο Asterisk. Στη δική μας περίπτωση δηλαδή, στο αρχείο sip.conf θα ορίσουμε το χρήστη sip-user και στο iax.conf θα ορίσουμε το χρήστη iax-user. Τέλος, στο αρχείο extensions.conf θα ορίσουμε τον τρόπο με τον οποίο θα συνδεθούν οι χρήστες.
sip.conf
Διαμορφώνουμε το αρχείο etc/asterisk/sip.conf με κάποιον επεξεργαστή κειμένου της επιλογής μας έτσι ώστε να περιέχει τις παρακάτω γραμμές:
[general]
bindport=5060
bindaddr=0.0.0.0
context=default
[sip-user]
type=friend
secret=qwerty
callerid=”sip-user” <111>
qualify=yes
nat=yes
host=dynamic
canreinvite=no
context=mini-pbx-internal
Το αρχείο ξεκινάει με το γενικό περιεχόμενο [general], το οποίο περιέχει ρυθμίσεις του καναλιού και προκαθορισμένες επιλογές για όλους τους χρήστες που ορίζονται στο αρχείο. Οι ρυθμίσεις αυτές μπορούν να παρακαμφθούν ανά χρήστη, αρκεί να δηλωθεί στον ορισμό του χρήστη.
Συγκεκριμένα στο context [general], ορίσαμε τον αριθμό θύρας για τις SIP συνδέσεις στο 5060 (προεπιλεγμένη τιμή). Η γραμμή bindaddr=0.0.0.0 λέει στο Asterisk να ακούει για SIP συνδέσεις και να τις επιτρέπει σε όλες τις διευθύνσεις ΙP[2] που διαθέτει το σύστημά μας.
Το context (περιεχόμενο) ενός χρήστη ορίζεται με το όνομα του μέσα σε τετραγωνικά άγκιστρα [ ] και τελειώνει εκεί που ξεκινάει το επόμενο. Η έννοια του context είναι αρκετά σημαντική για τη λειτουργία του Asterisk και γι’ αυτό θα αναλυθεί περεταίρω σε επόμενα κεφάλαια. Στο παράδειγμα του mini-PBX θα μπορούσαμε να πούμε ότι το [sip-user] αντιστοιχεί με το όνομα του χρήστη του οποίου θα ορίσουμε τις παραμέτρους.
O τύπος του χρήστη (type=friend) μας λέει ότι ο sip-user μπορεί να δεχθεί και να πραγματοποιήσει κλήσεις. Αν θέλουμε ο χρήστης μόνο να δέχεται κλήσεις τότε αλλάζουμε τον τύπο του σε peer (type=peer) και αν θέλουμε μόνο να πραγματοποιεί σε type=user.
H γραμμή secret=qwerty μας δείχνει ότι το συνθηματικό που θα χρησιμοποιηθεί για την αυθεντικοποίηση του χρήστη sip-user, είναι η λέξη qwerty.
Στο callerid βάζουμε το όνομα που επιθυμούμε οι άλλοι να βλέπουμε όταν τους καλούμε. Θεωρείται καλό να περιέχεται και το extension (π.χ. <111>) του χρήστη έκτος του ονόματός του, για ευκολότερη αναγνώριση.
Με την επιλογή qualify=yes μπορούμε να παρακολουθήσουμε την καθυστέρηση της επικοινωνίας και να καταλάβουμε αν το άλλο άκρο είναι προσβάσιμο. Η προεπιλεγμένη τιμή είναι τα 2000 msec, αλλά μπορούμε να την αλλάξουμε αντικαθιστώντας το yes με κάποια αριθμητική τιμή σε msec (π.χ. qualify=3000).
Αν ο χρήστης είναι πίσω από κάποια συσκευή NAT (Network Address Translation) όπως firewall ή router, η επιλογή αυτή λέει στο Asterisk να αγνοήσει τις πληροφορίες που δέχεται μέσα από το κανάλι της κλήσης (π.χ. source ip) και να χρησιμοποιήσει για επικοινωνία, τη διεύθυνση από την οποία λαμβάνει τα δεδομένα.
Στη γραμμή host=dynamic λέμε στο Asterisk ότι τα τερματικά μας, δεν έχουν σταθερή διεύθυνση IP και ότι χρειάζεται να τη μαθαίνει κάθε φορά που εγγραφόμαστε σε αυτόν. Εναλλακτικά μπορούμε να ορίσουμε μία στατική IP στο χρήση π.χ. host=192.168.1.7 ή ακόμη και κάποιο domain name.
Η γραμμή canreinvite=no λέει στο Asterisk να μην επιτρέπει στους χρήστες να συνδεθούν απευθείας μεταξύ τους, αλλά πάντα να παρεμβάλεται στην επικοινωνία.
Τέλος, το context=mini-pbx-internal αναφέρεται στη θέση των οδηγιών του αρχείου extensions.conf που θα χρησιμοποιηθούν για τον έλεγχο των εισερχόμενων και εξερχόμενων κλήσεων του συγκεκριμένου χρήστη ή ακόμη σωστότερα της συγκεκριμένης extension. Για το συγκεκριμένο χρήστη, παρακάμψαμε τη γενική τιμή του context=default που θέσαμε στο generals και ορίσαμε κάποια νέα που θα ισχύσει για το συγκεκριμένο χρήστη.
iax.conf
Παρακάτω ακολουθεί η διαμόρφωση του αρχείου iax.conf όπου ορίζεται ο χρήστης iax-user. Με κάποιον επεξεργαστή κειμένου, διαμορφώνουμε το αρχείο /etc/asterisk/iax.conf ώστε να περιέχει τα παρακάτω:
[general]
bandwidth=low
context=default
[iax-user]
type=friend
secret=qwerty
callerid=”iax-user” <222>
qualify=yes
host=dynamic
context=mini-pbx-internal
Παρόλο που το ΙΑΧ και το SIP έχουν σημαντικές διαφορές στον τρόπο υλοποίησης τους, βλέπουμε ότι στο συγκεκριμένο παράδειγμα οι χρήστες ορίζονται παρόμοια.
Μια σημαντική διαφορά που φαίνεται αμέσως είναι η έλλειψη της γραμμής nat. Αυτό συμβαίνει επειδή τo πρωτόκολλο ΙΑΧ έχει σχεδιαστεί με τέτοιο τρόπο ώστε να μην επηρεάζεται σοβαρά από την τοπολογία του δικτύου κάνοντας έτσι πιο εύκολη τη διαδικασία της εγγραφής του πελάτη στον εξυπηρετητή.
Άλλη μία διαφορά που προκύπτει από τα παραπάνω αρχεία είναι η επιλογή bandwidth=low που περιέχεται στο [general] context. Η επιλογή αυτή αφορά τους codecs που θα χρησιμοποιηθούν στην επικοινωνία. Επιβάλουμε δηλαδή στο Asterisk να μη χρησιμοποιήσει codecs που χρειάζονται μεγάλο εύρος ζώνης. Άλλες διαθέσιμες επιλογές είναι οι: medium και high.
Αφού τελειώσουμε την επεξεργασία των δύο παραπάνω αρχείων, θα πρέπει να φορτώσουμε τις καινούργιες ρυθμίσεις στο Asterisk. Αυτό επιτυγχάνεται μέσω της εντολής reload στην κονσόλα του Asterisk.
*CLI> reload
Το Asterisk είναι πλέον έτοιμο να επιτρέψει στους δύο πελάτες να συνδεθούν.
Διαμόρφωση των προγραμμάτων πελατών
Για τις ανάγκες του παραδείγματος χρησιμοποιήθηκαν ενδεικτικά δύο softphones από τα πολλά διαθέσιμα δωρεάν στο διαδίκτυο. Θα πρέπει να τα παραμετροποιήσουμε έτσι ώστε να μπορούν να συνδεθούν με το Asterisk.
Διαμόρφωση x-lite
Το x-lite είναι ένα SIP softphone για το λειτουργικό MS Windows και είναι διαθέσιμο από την ιστοσελίδα της counterpath. Αφού κατεβάσουμε και εγκαταστήσουμε το x-lite, προχωράμε στη διαμόρφωση του προγράμματος με τις απαραίτητες ρυθμίσεις.
Με δεξί click πάνω στην επιφάνεια του προγράμματος και επιλογή του “Sip Accounts Settings…” βλέπουμε το παράθυρο διαχείρισης των SIP λογαριασμών μας. Επιλέγουμε το “Add…” και συμπληρώνουμε τα πεδία:
User name: sip-user
Password: qwerty
Domain: H IP που βρίσκεται το Asterisk (local ή external) ή το
πλήρες Domain Name, για παράδειγμα 192.168.1.5.
Αν δεν γνωρίζουμε την IP του Asterisk server μας,
μπορούμε να γράψουμε στη γραμμή εντολών του λειτουργικού
την εντολή ifconfig | grep Bcast | sed s/Bcast.*//
Αφήνουμε όλα τα υπόλοιπα πεδία κενά και πατάμε ΟΚ. Βεβαιωνόμαστε ότι ο λογαριασμός είναι ενεργοποιημένος (enabled tickbox) και κλείνουμε το παράθυρο διαχείρισης των SIP λογαριασμών.
Μετά από λίγη ώρα θα πρέπει να δούμε στο x-lite το μήνυμα
Ready
Your username is: sip-user
όπως φαίνεται στην παρακάτω εικόνα.
Διαμόρφωση kiax
Το kiax είναι ένα softphone που χρησιμοποιεί το πρωτόκολλο IAX2 για να πραγματοποιεί VoIP κλήσεις. Είναι διαθέσιμο δωρεάν (άδεια χρήσης GPL) για τα λειτουργικά συστήματα Ms Windows, Linux, FreeBSD, netBSD.
Αφού κατεβάσουμε το πρόγραμμα και το εγκαταστήσουμε προχωράμε στην παραμετροποίηση του. Στην κεντρική οθόνη του προγράμματος επιλέγουμε File→Settings και στο παράθυρο που μας εμφανίστηκε πατάμε το κουμπί New Account και συμπληρώνουμε τα πεδία:
Account Name: iax-user
IAX Server: H IP που βρίσκεται το Asterisk (local ή external) ή
το πλήρες Domain Name, για παράδειγμα 192.168.1.5.
Username: iax-user
Password: qwerty
CallerID Name: <κενό>
CallerID Number: <κενό>
extensions.conf
Μέχρι στιγμής τα δύο τερματικά μας μπορούν να εγγραφούν στο Asterisk. Δεν μπορούν ακόμα όμως ούτε να δεχθούν, ούτε να πραγματοποιήσουν κλήσεις. Ο χειρισμός και η δρομολόγηση των κλήσεων που περνάνε από το Asterisk υλοποιείται στο αρχείο etc/asterisk/extensions.conf. Για συνδεθούν οι δύο πελάτες μεταξύ τους μέσω του Asterisk διαμορφώνουμε το αρχείο extensions.conf έτσι ώστε να περιέχει μόνο τις παρακάτω γραμμές:
[general]
[mini-pbx-internal]
exten => 111,1,Dial(SIP/sip-user)
exten => 222,1,Dial(IAX2/iax-user)
Για να διαβάσει το Asterisk τις αλλαγές μας, γράφουμε στην κονσόλα του, την εντολή reload.
*CLI> reload
To απλό μας PBX είναι πλέον έτοιμο και λειτουργικό μέσα σε λίγες μονάχα γραμμές. Οι αλλαγές που κάναμε στο extensions.conf είναι στοιχειώδεις, και ενω μας δίνουν ένα λειτουργικό σύστημα δεν παρέχουν κανέναν μηχανισμό χειρισμού των κλήσεων, αλλά ούτε και σύνδεση με το δημόσιο τηλεφωνικό δίκτυο. Παρόλα αυτά, για λόγους ευκολίας θα παραμείνουμε σε αυτήν την υλοποίηση μέχρι να αναλύσουμε τις δυνατότητες που μας παρέχονται στο αρχείο extensions.conf στο επόμενο κεφάλαιο.
Στο αρχείο extensions.conf λοιπόν, δημιουργήσαμε το context [mini-pbx-internal], που χρησιμοποιήθηκε στον ορισμό των πελατών sip-user (στο sip.conf) και iax-user (στο iax.conf). Μέσα στο context [mini-pbx-internal], ορίσαμε δύο extensions, την 111 και την 222. Όταν κάποιος πελάτης συνδεδεμένος στο Asterisk με πρόσβαση στo [mini-pbx-internal] πληκτρολογήσει 111, τότε η εφαρμογή Dial(), θα καλέσει τον πελάτη sip-user χρησιμοποιώντας τον ορισμό του στο αρχείο sip.conf. Με την ίδια λογική, όταν κάποιος πελάτης συνδεδεμένος στο Asterisk πληκτρολογήσει 222, τότε μέσω της Dial(), θα κληθεί ο πελάτης iax-user που έχει οριστεί στο αρχείο iax.conf. Μπορούμε να παρατηρήσουμε ότι στην Dial() υπάρχει το πρωτόκολλο ΙΑΧ2 και όχι IAX όπως το αναφέρουμε έως τώρα. Η σωστή ονομασία είναι η ΙΑΧ2 αφού βρίσκεται πλέον στη δεύτερη έκδοσή του. Παρόλα αυτά, για λόγους συντομίας, στη βιβλιογραφία αναφέρεται ως ΙΑΧ.
Γενικά το Asterisk ελέγχει σε ποιο context (π.χ. [mini-pbx-internal]) ανήκει αυτός που πραγματοποιεί την κλήση από το .conf (SIP, IAX, κ.λ.π.) αρχείο που αυτός έχει οριστεί και χρησιμοποιεί αυτό το context για να καταλάβει ποιους κανόνες θα ακολουθήσει στο αρχείο extensions.conf.
Τα παραπάνω φαίνονται και στην πράξη στις εικόνες που ακολουθούν
Κλήση: sip-user → iax-user
Κλήση: iax-user → sip-user





Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου