Οδηγός DUNDi
Από AWMN-WiKi
Αυτό ο οδηγός περιγράφει τις ρυθμίσεις που πρέπει να κάνετε στον asterisk ώστε να συμμετέχετε σε δίκτυο DUNDi.
Πίνακας περιεχομένων |
Κανόνες για συμμετοχή σε δίκτυο DUNDi
Επειδή η υπηρεσία είναι distributed, οι peers θα πρέπει απαραίτητα να συμφωνούν σε κάποιες αρχές για να διασφαλίζεται η σωστή λειτουργία του δικτύου. Τη συμφωνία peering για το AWMN DUNDi μπορείτε να την βρείτε στη σελίδα Δίκτυο DUNDi (υπό διαμόρφωση). Η αριθμοδότηση θα πρέπει να ακολουθεί κατά γράμμα την Πανελλαδική Αριθμοδότηση.
Δημιουργία κλειδιών
Το πρώτο βήμα για να συνδέσετε τον asterisk σας στο δίκτυο DUNDi είναι να δημιουργήσετε ένα ζευγάρι κλειδιών. Αυτό γίνεται με το εργαλείο astgenkey.
cd /var/lib/asterisk/keys # μετάβαση σε φάκελο κλειδιών asterisk astgenkey -n asterisk.acinonyx.awmn # δημιουργία κλειδιού για DUNDi # ΠΡΟΣΟΧΗ: το hostname πρέπει να αντιστοιχεί στην IP του μηχανήματος που τρέχει ο asterisk! chown asterisk:asterisk asterisk.acinonyx.awmn.* # προσαρμογή ownership αν τρέχετε τον asterisk χωρίς προνόμια χρήστη root chmod o-r asterisk.acinonyx.awmn.* # προσαρμογή modes ώστε τα κλειδιά να μη διαβάζονται από άλλους χρήστες του μηχανήματος
Θα πρέπει να ανεβάσετε το δημόσιο κλειδί (κατάληξη .pub) σε κάποιο διαδικτυακό χώρο. Τα κλειδιά για τους asterisk στο DUNDi του AWMN μπορείτε να τα ανεβάσετε στη σελίδα Δίκτυο DUNDi
iax.conf
Δεύτερο βήμα είναι η ρύθμιση του asterisk ωστε να δέχεστε IAX2 κλήσεις προερχόμενες από το δίκτυο DUNDi
Αρχικά ρυθμίστε τα διαθέσιμα codecs ώστε να έχετε καλύτερη ποιότητα ήχου:
bandwidth=medium # ενεργοποίηση codec υψηλότερης ποιότητας
Ύστερα δημουργήστε το IAX2 context ως εξής:
[awmn] type=user # ορισμός τύπου συσκευής dbsecret=dundi/secret # ορισμός dbsecret σε dundi/secret (γίνεται rotate αυτόματα από τον asterisk) context=dundi-awmn-local # context για εισερχόμενες κλήσεις μέσω DUNDi
dundi.conf
Τρίτο βήμα είναι η ρύθμιση του ίδιου του DUNDi
Πληροφορίες επαφής
Αρχικά ορίζετε τις πληροφορίες επαφής του asterisk που θέλετε να συνδέσετε στο δίκτυο AWMN DUNDi:
[general] department=Node #1979 - Acinonyx organization=AWMN locality=Athens stateprov=Attica country=Greece email=admin@acinonyx.awmn phone=5410019791
Δημιουργία DUNDi context
Στη συνέχεια δημιουργείτε το DUNDi context. Από εδώ θα ανταλλάσονται όλοι οι διαθέσιμοι αριθμοί απο και προς το δίκτυο DUNDi.
awmn => dundi-awmn-local,0,IAX2,awmn:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
Οι παράμετροι που χρησιμοποιούνται:
- local_context (= dundi-awmn-local) - To context στο dialplan οι αριθμοί του οποίου θα διαφημίζονται στο DUNDi δίκτυο.
- weigth (= 0) - Το βάρος που θα έχουν οι απαντήσεις που θα στέλνονται από αυτό το DUNDi context. Αυτό χρησιμοποιείται ώστε να ορίζεται η σειρά προτίμισης σε περίπτωση που ένας αριθμός εξυπηρετείται και μέσω άλλου καναλιού. Οι αριθμοί με απαντήσεις με το μικρότερο βάρος δοκιμάζονται πρώτα από τον DUNDi peer.
- tech (= IAX2) - Η τεχνολογία του καναλιού που θα χρησιμοποιηθεί για την κλήση. Προς το παρόν, το DUNDi μπορεί να χρησιμοποιηθεί μόνο με IAX2 κανάλια.
- dest (= awmn:${SECRET}@${IPADDR}/${NUMBER}) - O προορισμός που θα αποσταλεί ως απάντηση σε ένα DUNDi request από κάποιον peer.
- options (= nounsolicited,nocomunsolicit,nopartial) - Άλλες επιλογές που στέλνονται μαζί με την απάντηση DUNDi (δείτε τεκμηρίωση asterisk).
Ορισμός DUNDi peers
Ύστερα ορίζετε τους DUNDi peers με του οποιούς θέλετε να συνδεθείτε. Θα πρέπει να έχετε ήδη κατεβάσει το δημόσιο κλειδί τους και να το έχετε σώσει στον κατάλογο /var/lib/asterisk/keys. Τα δημόσια κλειδιά για του asterisk του DUNDi στο AWMN μπορείτε να τα βρείτε στη σελίδα Δίκτυο DUNDi:
[00:11:09:65:5e:19] # Μοναδικό DUNDi peer context (προτιμάται η MAC μιας σταθερής κάρτας δικτύου του peer) model = symmetric # Μοντέλο σύνδεσης μεταξύ peers host = koukouroukou.spooky.awmn # Ορισμός υπολογιστή inkey = koukouroukou.spooky.awmn # Το κλειδί του peer για authentication (public) outkey = asterisk.acinonyx.awmn # Το δικό μας κλειδί για authentication (private) permit = awmn # DUNDi context που επιτρέπεται στον peer να ψάξει για αριθμούς include = awmn # DUNDi context για το οποίο θα ρωτάμε αυτόν τον peer qualify = yes # Να ελέγχεται αν ο peer αυτός είναι σε λειτουργία
extensions.conf
Τελευταίο βήμα είναι η ρύθμιση του dialplan. Καλό είναι να ρυθμίσετε το dialplan έτσι ώστε να δοκιμάζεται πρώτα το δίκτυο DUNDi για τον αριθμό και να δεν υπαρχει να γίνεται fallback στον sip server.
Ακολουθεί ένα παράδειγμα:
Παρακάτω ορίζεται ένα context το οποίο θα έχει τους αριθμούς που θέλετε να διαφημίστούν στο AWMN DUNDi:
[dundi-awmn-local] exten => 5410019791,1,Dial(SIP/Acinonyx,30,mtx) exten => 5410019791,n,Voicemail(19791,u) ; If unavailable, send to voicemail w/ unavail announce exten => 5410019791,n,Hangup() exten => 5410019799,1,MeetMe(1,cMo) exten => 5410019799,n,Hangup()
Παρακάτω ορίζεται ένα context το οποίο θα χρησιμοποιείται για να ψάξει ο asterisk έναν αριθμό μέσω του δικτύου AWMN DUNDi. Πρώτα δοκιμάζονται τα τοπικά DUNDi νούμερα και ύστερα γίνεται swtich στους άλλους DUNDi peers:
[dundi-awmn-lookup] include => dundi-awmn-local include => dundi-awmn-switch
Παρακάτω ορίζεται ένα context το οποίο θα κάνει switch στο DUNDi awmn context:
[dundi-awmn-switch] switch => DUNDi/awmn
Όλα τα παραπάνω γίνονται ένα macro:
[macro-dundi-awmn]
exten => s,1,Goto(${ARG1},1)
include => dundi-awmn-lookup
Παρακάτω ορίζεται το dialplan με βάση την Πανελλαδική Αριθμοδότηση. Αρχικά ρυθμίζεται το CALLERID και κάποιες επιλογές για κλήσεις μέσω DUNDi. Ύστερα χρησιμοποιείται το macro dundi-awmn για την έυρεση αριθμού και αν δεν βρεθεί τότε γίνεται fallback στο macro trunkdial που χρησιμοποιεί τον κατάλογο του SIP.
[wirelesshellas]
exten => _54XXXXXXXX,1,Set(CALLERID(all)=Acinonyx <5410019791>)
exten => _54XXXXXXXX,n,Set(DUNDIDIALARGS=",TX")
exten => _54XXXXXXXX,n,Macro(dundi-awmn,${EXTEN})
exten => _54XXXXXXXX,n,Macro(trunkdial,SIP/${EXTEN}@5410019791)

