Ở bài viết này, tôi chỉ nói về cách để lấy file, biên dịch và cài đặt Asterisk. Kế tiếp, chúng ta sẽ tiến hành vài cấu hình đầu tiên liên quan đến giao thức SIP.
SIP
Session Initiation Protocol (SIP), thường được dùng trong VoIP phone (cả softphone và hard phone), SIP chỉ quan tâm đến việc nhận và thoát cuộc gọi. Kênh thoại không được truyền trong giao thức SIP mà truyền trong giao thức RTP.
SIP và RTP
SIP là tín hiệu ở tầng application và dùng port 5060. SIP có thể truyền trong giao thức TCP hoặc UDP. SIP được dùng để “thiết lập, hiệu chỉnh, và ngắt cuộc gọi”. SIP không chứa dữ liệu thoại.
RTP được dùng để truyền âm thanh (ví dụ như thoại) giữa các điểm đầu cuối (endpoint). Mô hình sau sẽ giúp bạn hiểu rõ hơn về SIP và RTP
Cài đặt Asterisk
Vào trang web www.asterisk.org để download gói asterisk.
Giải nén gói tin bằng lệnh tar –xzvf tênfile.tar
Vào thư mục vừa giải nén, và nhập các lệnh sau để cài Asterisk
# cd /user/src/asterisk-version
# make clean
# make
# make install
# make samples
Mặc nhiên, Asterisk được cài ở thư mục /usr/sbin/asterisk. Nếu bạn nhập lệnh /usr/sbin/asterisk thì nó sẽ chạy ở deamon (services). Tuy nhiên bạn có thể vào chế độ dòng lệnh để theo dõi chi tiết.
Trong trường hợp bạn muốn khám phá tất cả các tham số của Asterisk, bạn dùng lệnh asterisk –h.
Dưới đây là vài tham số:
-c : Vào chế độ cosole
-v : Tăng mức độ thông báo chi tiết để kiểm tra hoạt động của Asterisk
-r : Remote. Dùng để kết nối lại Asterisk nếu Asterisk đang chạy ở dạng deamon.
Một vài lệnh cơ bản ở chế độ Console:
Sip show peers: xem trạng thái kết nối của các điện thoại SIP.
Stop now: dừng và thoát Asterisk
Reload: nạp lại dịch vụ Asterisk
Vài thư mục mà Asterisk sử dụng
/etc/asterisk : chứa các file cấu hình
/usr/lib/asterisk/modules/ được dùng để chứa các loadable modules như là codec, format, channels được dùng bởi Asterisk. Mặc định, Asterisk sẽ load tất cả các module này. Bạn có thể tắt bớt trong tệp modules.conf
/var/lib/asterisk chứa tệp astdb và một số thư mục con. Tệp astdb chứa các thông tin database, tương tự như Microsoft Windows Registry. Asterisk database dựa trên v1 của Barkeley database. Nó dùng version 1 vì lý do bản quyền.
Các thư mục con như sau:
* agi-bin/ chứa các custom scripts và có thể được dùng với nhiều ứng dụng AGI.
* Firmware/ chứa nhiều phiên bản firmware của asterisk devices
* Images/ chứa nhiều kênh hỗ trợ hình ảnh được chứa trong thư mục images/.
* Keys/ chứa các public hoặc private key
* Mohmp3/ chứa music on hold
* Sounds
/var/spool/asterisk chứa nhiều thành phần liên quan đến chi tiết cuộc gọi.
/var/run chứa process ID của tất cả các active process trên máy, bao gồm cả asterisk.
/var/log/asterisk
/var/log/asterisk/cdr-csv được dùng để chứa CDR theo định dạng CSV. Theo mặc định thì nó chứa trong file Master.csv, nhưng các account riêng lẻ có thể cất trong từng file riêng biệt theo accountcodem
Vài tệp cơ bản cần nhớ để cấu hình Asterisk
Extensions.conf là file chứa dial plan
Sip.conf dùng để cấu hình giao thức SIP.
Iax.conf dùng cấu hình các kênh truyền của giao thức IAX.
Cấu hình SIP
Dưới đây là file sip.conf cơ bản:
[general]
context=default
srvlookup=yes
[john]
type=friend
secret=welcome
qualify=yes ; Qualify peer is no more than 2000 ms away
nat=no ; This phone is not natted
host=dynamic ; This device registers with us
canreinvite=no ; Asterisk by default tries to redirect
context=internal ; the internal context controls what we can do
Cấu hình SIP bắt đầu với phần [general] , phần này chứa các thiết lập mặc định cho tất cả các user và peer trong cho tệp sip.conf. Tuy nhiên bạn có thể cấu hình đè lên tùy trong từng phần nhỏ.
Mỗi kết nối được xác định là 1 user, per hoặc friend. Loại user được dùng để authen incoming calls, loại peer được dùng cho các outgoing call, và loại friend được dùng cho cả 2. Tên của extension được định nghĩa trong dấu ngoặc vuông. ([]). Trong ví dụ này, chúng ta định nghĩa john là friend
Secret là phần chứa password dùng cho việc authentication. Theo ví dụ trên, password của user john là welcome. Chúng ta có thể theo dõi độ trễ giữa Asterisk server và điện thoại với qualify=yes. Theo mặc định, Asterisk sẽ cho rằng một extension là hiện diện nếu độ trễ nhỏ hơn 2000ms (2 giây).
Nếu thiết bị được đặt ở sau firewall hoặc router, nó thường bị NAT, nên bạn cần cấu hình tham số nat=yes để ép Asterisk bỏ qua thông tin cho các extension và dùng địa chỉ từ firewall hoặc router. Thiết lập host=dynamic để yêu cầu điện thoại đăng ký cho Asterisk biết IP điện thoại cho mục đính security. Để giới hạn mỗi endpoint chỉ dùng 1 địa chỉ IP, thay thế chữ dynamic với địa chỉ IP của điện thoại.
Chúng ta cũng thiết lập canreinvite=no. Trong SIP, invite được dùng để thiết lập cuộc gọi và chuyển sang các media khác (redirect media).
Cấu hình Client
Dĩ nhiên không thể hướng dẫn cấu hình cho tất cả các trường hợp cho tất cả các thiết bị đầu cuối. Chúng tôi chọn sản phẩm X-lite của X-ten, và bạn có thể download từ website: www.xten.com .
Hình dưới đây sẽ chỉ dẫn cách cấu hình X-lite client.
IAX.conf
Xem thêm ở file iax.conf.sample
DIAL PLAN cơ bản
Dialplan được chia thành nhiều phần nhỏ gọi là contexts. Contexts là tên một nhóm extensions.
Có 2 loại contexts đặc biệt là [gerneral] và [globals].
Astersisk có một file đặc biệt mang tên là SECURITY, nó chỉ dẫn các bước để thiết kế được một hệ thống Asterisk bảo mật. Việc đọc và hiểu kỹ file này rất quan trọng.
Cấu trúc cấp số như sau
Exten => numer,priority,application
Application: được dùng để phát 1 file đã được ghi âm trước đó trên 1 kênh. Khu dùng lệnh Playback(), input từ user đơn giản sẽ được bỏ qua.
Adding Logic to the Dialplan
Tương tự như playback, nó phát sound. Khác playback ở chỗ, khi caller nhân 1 nút hoặc 1 dãy nút trên telephone keypad, nó sẽ interrupt playback và chuyển đến extension mà phím đó được nhấn vào. Ví dụ như, khi caller nhấn 5, Asterisk sẽ ngưng phát nhạc và gửi control của cuộc gọi đến ưu tiên cao nhất của extension 5.
Hầu hết việc dùng Backgound là để tạo voice menu.
Backgound có cấu trúc tương tự như playback()
Exten => 123,1, background(hello-world)
Một ứng dụng nữa rất hữu ích đó là Goto. Goto dùng để chuyển cuộc gọi đến các phần khác nhau của Dialplan,
Exten => 123,1,Goto(context, extension, priority)
----------------------------------------------------------------------------
Phù, mệt quá, lần sau sẽ có bài viết: chuyển cuộc gọi từ Skype vào điện thoại bàn
SIP
Session Initiation Protocol (SIP), thường được dùng trong VoIP phone (cả softphone và hard phone), SIP chỉ quan tâm đến việc nhận và thoát cuộc gọi. Kênh thoại không được truyền trong giao thức SIP mà truyền trong giao thức RTP.
SIP và RTP
SIP là tín hiệu ở tầng application và dùng port 5060. SIP có thể truyền trong giao thức TCP hoặc UDP. SIP được dùng để “thiết lập, hiệu chỉnh, và ngắt cuộc gọi”. SIP không chứa dữ liệu thoại.
RTP được dùng để truyền âm thanh (ví dụ như thoại) giữa các điểm đầu cuối (endpoint). Mô hình sau sẽ giúp bạn hiểu rõ hơn về SIP và RTP
Cài đặt Asterisk
Vào trang web www.asterisk.org để download gói asterisk.
Giải nén gói tin bằng lệnh tar –xzvf tênfile.tar
Vào thư mục vừa giải nén, và nhập các lệnh sau để cài Asterisk
# cd /user/src/asterisk-version
# make clean
# make
# make install
# make samples
Mặc nhiên, Asterisk được cài ở thư mục /usr/sbin/asterisk. Nếu bạn nhập lệnh /usr/sbin/asterisk thì nó sẽ chạy ở deamon (services). Tuy nhiên bạn có thể vào chế độ dòng lệnh để theo dõi chi tiết.
Trong trường hợp bạn muốn khám phá tất cả các tham số của Asterisk, bạn dùng lệnh asterisk –h.
Dưới đây là vài tham số:
-c : Vào chế độ cosole
-v : Tăng mức độ thông báo chi tiết để kiểm tra hoạt động của Asterisk
-r : Remote. Dùng để kết nối lại Asterisk nếu Asterisk đang chạy ở dạng deamon.
Một vài lệnh cơ bản ở chế độ Console:
Sip show peers: xem trạng thái kết nối của các điện thoại SIP.
Stop now: dừng và thoát Asterisk
Reload: nạp lại dịch vụ Asterisk
Vài thư mục mà Asterisk sử dụng
/etc/asterisk : chứa các file cấu hình
/usr/lib/asterisk/modules/ được dùng để chứa các loadable modules như là codec, format, channels được dùng bởi Asterisk. Mặc định, Asterisk sẽ load tất cả các module này. Bạn có thể tắt bớt trong tệp modules.conf
/var/lib/asterisk chứa tệp astdb và một số thư mục con. Tệp astdb chứa các thông tin database, tương tự như Microsoft Windows Registry. Asterisk database dựa trên v1 của Barkeley database. Nó dùng version 1 vì lý do bản quyền.
Các thư mục con như sau:
* agi-bin/ chứa các custom scripts và có thể được dùng với nhiều ứng dụng AGI.
* Firmware/ chứa nhiều phiên bản firmware của asterisk devices
* Images/ chứa nhiều kênh hỗ trợ hình ảnh được chứa trong thư mục images/.
* Keys/ chứa các public hoặc private key
* Mohmp3/ chứa music on hold
* Sounds
/var/spool/asterisk chứa nhiều thành phần liên quan đến chi tiết cuộc gọi.
/var/run chứa process ID của tất cả các active process trên máy, bao gồm cả asterisk.
/var/log/asterisk
/var/log/asterisk/cdr-csv được dùng để chứa CDR theo định dạng CSV. Theo mặc định thì nó chứa trong file Master.csv, nhưng các account riêng lẻ có thể cất trong từng file riêng biệt theo accountcodem
Vài tệp cơ bản cần nhớ để cấu hình Asterisk
Extensions.conf là file chứa dial plan
Sip.conf dùng để cấu hình giao thức SIP.
Iax.conf dùng cấu hình các kênh truyền của giao thức IAX.
Cấu hình SIP
Dưới đây là file sip.conf cơ bản:
[general]
context=default
srvlookup=yes
[john]
type=friend
secret=welcome
qualify=yes ; Qualify peer is no more than 2000 ms away
nat=no ; This phone is not natted
host=dynamic ; This device registers with us
canreinvite=no ; Asterisk by default tries to redirect
context=internal ; the internal context controls what we can do
Cấu hình SIP bắt đầu với phần [general] , phần này chứa các thiết lập mặc định cho tất cả các user và peer trong cho tệp sip.conf. Tuy nhiên bạn có thể cấu hình đè lên tùy trong từng phần nhỏ.
Mỗi kết nối được xác định là 1 user, per hoặc friend. Loại user được dùng để authen incoming calls, loại peer được dùng cho các outgoing call, và loại friend được dùng cho cả 2. Tên của extension được định nghĩa trong dấu ngoặc vuông. ([]). Trong ví dụ này, chúng ta định nghĩa john là friend
Secret là phần chứa password dùng cho việc authentication. Theo ví dụ trên, password của user john là welcome. Chúng ta có thể theo dõi độ trễ giữa Asterisk server và điện thoại với qualify=yes. Theo mặc định, Asterisk sẽ cho rằng một extension là hiện diện nếu độ trễ nhỏ hơn 2000ms (2 giây).
Nếu thiết bị được đặt ở sau firewall hoặc router, nó thường bị NAT, nên bạn cần cấu hình tham số nat=yes để ép Asterisk bỏ qua thông tin cho các extension và dùng địa chỉ từ firewall hoặc router. Thiết lập host=dynamic để yêu cầu điện thoại đăng ký cho Asterisk biết IP điện thoại cho mục đính security. Để giới hạn mỗi endpoint chỉ dùng 1 địa chỉ IP, thay thế chữ dynamic với địa chỉ IP của điện thoại.
Chúng ta cũng thiết lập canreinvite=no. Trong SIP, invite được dùng để thiết lập cuộc gọi và chuyển sang các media khác (redirect media).
Cấu hình Client
Dĩ nhiên không thể hướng dẫn cấu hình cho tất cả các trường hợp cho tất cả các thiết bị đầu cuối. Chúng tôi chọn sản phẩm X-lite của X-ten, và bạn có thể download từ website: www.xten.com .
Hình dưới đây sẽ chỉ dẫn cách cấu hình X-lite client.
IAX.conf
Xem thêm ở file iax.conf.sample
DIAL PLAN cơ bản
Dialplan được chia thành nhiều phần nhỏ gọi là contexts. Contexts là tên một nhóm extensions.
Có 2 loại contexts đặc biệt là [gerneral] và [globals].
Astersisk có một file đặc biệt mang tên là SECURITY, nó chỉ dẫn các bước để thiết kế được một hệ thống Asterisk bảo mật. Việc đọc và hiểu kỹ file này rất quan trọng.
Cấu trúc cấp số như sau
Exten => numer,priority,application
Application: được dùng để phát 1 file đã được ghi âm trước đó trên 1 kênh. Khu dùng lệnh Playback(), input từ user đơn giản sẽ được bỏ qua.
Adding Logic to the Dialplan
Tương tự như playback, nó phát sound. Khác playback ở chỗ, khi caller nhân 1 nút hoặc 1 dãy nút trên telephone keypad, nó sẽ interrupt playback và chuyển đến extension mà phím đó được nhấn vào. Ví dụ như, khi caller nhấn 5, Asterisk sẽ ngưng phát nhạc và gửi control của cuộc gọi đến ưu tiên cao nhất của extension 5.
Hầu hết việc dùng Backgound là để tạo voice menu.
Backgound có cấu trúc tương tự như playback()
Exten => 123,1, background(hello-world)
Một ứng dụng nữa rất hữu ích đó là Goto. Goto dùng để chuyển cuộc gọi đến các phần khác nhau của Dialplan,
Exten => 123,1,Goto(context, extension, priority)
----------------------------------------------------------------------------
Phù, mệt quá, lần sau sẽ có bài viết: chuyển cuộc gọi từ Skype vào điện thoại bàn
Comment