Tìm hiểu các File cấu hình của Asterisk - 21102019

Breaking

Post Top Ad

Responsive Ads Here

Post Top Ad

Responsive Ads Here

Friday, September 14, 2018

Tìm hiểu các File cấu hình của Asterisk

CHƯƠNG 3:Tìm hiểu các File cấu hình của Asterisk.



3.1. Tìm hiểu các tập tin cấu hình trong Asterisk.

Để dử dụng được các dịch vụ của Asterisk như voicemail, zaptel, musiconhold, meetme, conference hay như tạo kết nối cho các máy điện thoại có thể liên lạc được với nhau thì bước quan trọng nhất cần phải làm là cấu hình hệ thống Asterisk.Các dịch vụ trên đều có file cấu hình (configuration files) của riêng mình, tuy nhiên có hai tập tin cấu hình quan trọng nhất là sip.conf và extension.conf.
Trước khi đi vào tìm hiểu các file cấu hình, việc tìm hiểu hệ thống tổ chức các thư mục trong Asterisk cũng giúp cho việc gỡ rối lỗi của hệ thống được hiệu quả hơn bên canh sử dụng CLI mode.
Hệ thống quản lý file của Asterisk:

Thư mụcMô tả
/etc/asteriskTất cả các file cấu hình trừ /etc/zaptel.conf
/usr/sbinCác đoạn mã và các file thực thi của Asterisk bao gồm asterisk, astman, astgenkey và safe_asterisk.
/usr/lib/asteriskCác đối tượng nhị phân riêng của cấu trúc Asterisk.
/usr/lib/asterisk/modulesCác module thời gian thực cho các ứng dụng, điều khiển kênh, bộ nén và giải nén, định dạng file.
/var/lib/asteriskChứa biến được sử dụng bởi asterisk trong suốt quá trình hoạt động.
/var/lib/asterisk/agi-binCác đoạn mã AGI dùng bởi ứng dụng dial plan AGI.
/var/lib/asterisk/astdbCơ sở dữ liệu của Asterisk lưu trữ các thông tin cấu hình.File này không bao giờ thay đổi bởi người sử dụng mà chỉ có thể thay đổi bằng câu lệnh cơ sở dữ liệu của asterisk.
/var/lib/asterisk/imagesCác hình được tham chiếu bởi ứng dụng hay các dial plan.
/var/lib/asterisk/keysCác khóa chung hay riêng được sử dụng trong asterisk trong quá trình xác thực bằng RSA.IAX được sử dụng những chìa khóa được lưu ở đây.
/var/lib/asterisk/mohmp3Các file mp3 được sử dụng cho chức năng music on hold.Cấu hình music on hold được chứa trong thư mục này.
/var/lib/asterisk/soundsChứa các file âm thanh, cảnh báo,…được sử dụng bởi các ứng dụng của asterisk.
/var/runCác file PID và tên chương trình chạy thời gian thực.
/var/run/asterisk.pidProcess Identifier(PID) của các ứng dụng đang thực thi.
/var/spool/asteriskCác file chạy thời gian thực cho voicemail, các cuộc gọi ra ngoài.
/var/spool/asterisk/outgoingĐiều khiển cho các cuộc gọi ngoài.Một cuộc gọi ra ngoài sẽ được lưu một file trong thư mục này.Asterisk phân tích file được tạo ra và thiết lập cuộc gọi.Nếu như cuộc gọi được trả lời nó sẽ chuyển đến Asterisk PBX.
/var/spool/asterisk/tmpSử dụng để lưu trữ những thông tin tạm, tránh tình trạng đọc và ghi tập tin cùng một lúc.
/var/spool/asterisk/voicemailTất cả các lời nhắc thoại từ người dùng được chứa trong thư mục này.Một hộp thư được tạo ra ứng với một máy nội bộ trong tập tin voicemail.conf sẽ được tạo ra một thư mục con tương ứng cho máy nội bộ tại thư mục này.
/var/log/asteriskChứa tất cả các tập tin nhật ký giúp cho việc giám sát được dễ dàng.



Bảng 3.1: Hệ thống quản lý file của Asterisk.


  • Hệ thống các tập tin cấu hình trong asterisk

TênMô tả
agents.confTập tin chứa cấu hình cho việc sử dụng các agents (điện thoại viên), thường được ứng dụng trong các trung tâm cuộc gọi (call center).Tập tin này cho phép tạo, quản lý các agents và gán cho họ các ID và pass.
asterisk.confTập tin cấu hình này thiết lập các biến tổng quát cho việc sử dụng asterisk.Hầu hết những tham số này không cần phải chỉnh sửa.Nó thông báo cho asterisk nơi để tìm các tập tin tổng quát và file asterisk.conf tự động sinh ra khi dùng lệnh make samples trong quá trình cài đặt.
cdr_manager.confTập tin này cấu hình CDR cho quản lý cuộc gọi.
cdr_odbc.confĐây là tập tin cấu hình cho việc sử dụng một kết nối cơ sở dữ liệu ODBC để lưu trữ các CDR.
cdr_pgsql.confĐây là tập tin cấu hình cho phép sử dụng cơ sở dữ liệu PostgreSQL để chứa các dữ liệu CDR.Asterisk sẽ kết nối đến cơ sở dữ liệu của PostgreSQL để ghi và chứa bản ghi CDR.
cdr_tds.confTập tin cấu hình cho phép sử dụng cơ sở dữ liêu FreeTDS (bao gồm MS SQL) để chứa các dữ liệu của CDR.
extconfig.confTập tin này có thể tùy chọn lưu các thông tin hoạt động của queue và một cơ sơ dữ liệu nào đó.
extension.confTập tin này được coi là trái tim của dialplan dùng để cấu hình cách thức mà asterisk hoạt động như thế nào.Dialplan rất quan trọng nên tập tin này sẽ được đề cập sau.
features.confTập tin này thông thường còn được biết đến với tên gọi là parkingconf, chứa những thông tin cấu hình liên quan call parking, call pickup và chuyển cuộc gọi.
func_odbc.confTính nắng này được bổ sung từ phiên bản asterisk 1.4 trở đi, chức năng này cung cấp cơ chế đơn giản để kết nối đến CSDL ODBC thông qua dialplan.Các câu truy vấn SQL được định nghĩa trong tập tin cấu hình này, dial plan sẽ được tự động tạo ra.
gtalk.confTập tin cấu hình được dùng để kết nối đến google talk.
iax.confTập tin này cấu hình sử dụng cho giao thức IAX dùng để đàm thoại.
logger.confTập tin này thiết lập các dạng logging được sử dụng trong /var/log/asterisk.
meetme.confTập tin cấu hình này dùng để thiết lập các phòng hội thoại, có thể tùy chọn cấu hình thêm mật khẩu cho từng phòng.
musiconhold.confTập tin cấu hình này cho phép thiết lập nhạc chờ khi có một cuộc gọi đến, định nghĩa thứ tự tập tin nào có thể được phát và ứng dụng này được sử dụng cả trong nội bộ và ngoài mạng.
queue.confTập tin cấu hình cho phép tạo ra các hàng đợi (queue) cho người gọi, cho phép tiếp nhận được một số lượng lớn cuộc gọi đến cùng một lúc bằng giải pháp thông minh.
sip.confTập tin cấu hình này định nghĩa các tài khoản dùng giao thức SIP và các tùy chọn của giao thức này, có thể thiết lập các biến tổng quát cho giao thức này.
voicemail.confTập tin này cấu hình để tạo ra hộp thư thoại (voicemail) và một vài tham số tổng quát cho kịch bản mail, hệ thống voicemail của asterisk.
zapata.confTập tin này thiết lập các thông số cấu hình giao tiếp điện thoại zapata, có thể sử dụng tập tin này để cấu hình phần cứng của Digium.Phần cứng của Digium cho phép liên lạc được với PSTN.
zaptel.confTập tin này nằm ngoài /etc, là tập tin chứa thông số cấu hình các phần cứng TDM trong hệ thống asterisk, driver dành cho Linux khi các thiết bị điện thoại cắm trực tiếp vào Asterisk thông qua cổng PCI.



Bảng 3.2: Các tập tin cấu hình của Asterisk

3.2. Cấu hình giao tiếp với PSTN.

Để kết nối với mạng PSTN cần phải có một card TDM với cổng FXO và một đường dây điện thoại hoặc có thể là một tổng đài nội bộ PBX.Có nhiều nhà sản xuất khác nhau nhưng trong phạm vi bài báo cáo sẽ trình bày cấu hình mẫu dùng card zapata TDM04B của Digium (thông tin thêm về card có thể tham khảo tại http://www.digium.com).Trước khi lắp đặt card TDM04B phải tắt nguồn máy tính và kiểm tra khe cắm PCI có tương thích để gắn vào hay không, chủ yếu kiểm tra sự tương thích về mặt vật lý.Sau khi hoàn tất bật máy tính trở lại chuẩn bị cấu cho card hoạt động.Cấu hình card hoạt động chủ yếu thông qua hai tập tin cấu hình zaptel.conf ở thư mục /etc và tập tin zapata.conf ở thư mục /etc/asterisk.

3.2.1. Cấu hình zaptel.conf.

Như đã đề cập ở trên tập tin cấu hình nằm ở thư mục /etc.Để chỉnh sửa tập tin này có thể sử dụng bất kỳ công cụ chỉnh sửa text nào, ở đây sử dụng trình soạn thảo vi có sẵn trong CentOs.Trước khi thay đổi tập tin nên lưu lại phòng bất trắc có thể khôi phục lại tập tin cấu hình mẫu ban đầu.Sau khi thay đổi tập tin cấu hình phải cập nhật lại sự thay đổi cấu hình mới để card hoạt động được như mong muốn.
vi /etc/zaptel.conf

3.2.2. Cấu hình zapata.conf.

Sau khi đã cấu hình xong tập tin zaptel.conf để hệ thống Linux có thể nhận dạng được driver của card cũng như hiểu được các thông số liên quan đến đường truyền phải cấu hình trong tập tin zapata.conf.Tập tin cấu hình này được đọc bởi Asterisk.Do đó để cập nhật sự thay đổi trong tập tin này dùng lệnh reload ở giao diện console của Asterisk.
vi /etc/asterisk/zapata.conf

3.3. Tìm hiểu cách cấu hình điện thoại IP SIP.

Tập tin cấu hình của SIP nằm trong thư mục /etc/asterisk/sip.conf và có tất cả các tham số liên hệ tới SIP và nhà cung cấp dịch vụ VoIP.Các SIP Client phải được cấu hình trước khi nhận hay thực hiện cuộc gọi.
3.3.1. Phần chung [General].

Tập tin SIP được đọc từ trên xuống dưới.Phần định nghĩa các thông số toàn cục ở trên đầu tập tin SIP.
[general] các tùy chon chính gồm:

  • allow/disallow:định nghĩa codecs có thể được sử dụng hay không được sử dụng.
  • bindaddr: Địa chỉ IP mà client kết nối đến Asterisk Server SIP, nếu thiết lập là 0.0.0.0 (default) thì Asterisk Server SIP sẽ cho phép tất cả các địa chỉ IP kết nối đến Asterisk Server này.
  • context: thiết lập các ngữ cảnh cho các client.
  • bindport: Port mà SIP UDP dùng để lắng nghe.
  • maxexpirey: thời gian tối đa cho việc đăng ký tính bằng giây.
  • defaultexpirey: thời gian mặc định cho việc đăng ký tính bằng giây.
  • register: đăng ký Asterisk tới một host khác.

Ví dụ:


3.3.2. Phần Client.

Sau khi hoàn thành [general], tiếp theo sẽ thiết lập các SIP client.

  • [name] : Khi một thiết bị SIP kết nối đến Asterisk, nó sử dụng phần username của SIP URL để tìm ra peer/user.
  • type: cấu hình lớp kết nối bao gồm các tùy chọn peer, user, friend.

+Peer : asterisk gởi các cuộc gọi đến peer.
+User : asterisk nhận các cuộc gọi từ một user.
+Friend : cả hai cùng thời điểm.

  • host : địa chỉ IP hay tên của host.Tùy chọn thông thường là “dynamic”, được sử dụng khi host đăng ký đến Asterisk.
  • secret : mật khẩu để xác thực.
  • canreinvite : dung để báo cho máy chủ không phát ra lời mời đến Client.
  • mailbox : tùy chọn này liệt kê một hoặc nhiều hộp thư mailbox dùng để gửi các tin nhắn đến một SIP peer đã cho.

Ví dụ:


3.4. Cấu hình tập tin iax.conf.

Mục đích: tập tin iax.conf dùng để cấu hình các client kết nối với nhau thông qua giao thức IAX (Inter-Asterisk-eXchange Protocol), tạm dịch là giao thức trao đổi liên Asterisk.Giao thức iax dùng để chuyển đổi cuộc gọi giữa các máy chủ Asterisk với nhau.Cũng tương tự như tập tin cấu hình của giao thức SIP, tập tin cấu hình của giao thức iax cũng nằm trong file /etc/asterisk và cũng bao gồm các phần [general] và phần client như SIP.
3.4.1. Phần chung [general].

[general] có các tùy chọn chính như sau:

  • allow/disallow:định nghĩa codecs có thể được sử dụng hay không được sử dụng.
  • bindaddr: Địa chỉ IP mà client kết nối đến Asterisk Server IAX, nếu thiết lập là 0.0.0.0 (default) thì Asterisk Server IAX sẽ cho phép tất cả các địa chỉ IP kết nối đến Asterisk Server này.
  • context: thiết lập các ngữ cảnh cho các client.



  • bindport: Port mà IAX UDP dùng để lắng nghe, default là port 5036.
  • register: được dùng để đăng ký server Asterisk với một server Asterisk khác.
  • bandwidth : tùy chọn này dùng để điều khiển bộ mã hóa codecs nào được dùng thông dụng.Khi bandwidth là high nó cho phép lựa chọn các bandwidth cao như codec g711.
  • delayreject : khi thiết lập là yes, quá trình gửi xác thực chậm sẽ bị loại bỏ giúp cho hệ thống được an toàn hơn khi tấn công bằng brute force.

Ví dụ:


3.4.2. Phần Client.

Sau khi hoàn thành [general], tiếp theo sẽ thiết lập các IAX client.

  • [name] : Khi một thiết bị IAX kết nối đến Asterisk, nó sử dụng phần username của IAX URL để tìm ra peer/user.
  • type: cấu hình lớp kết nối bao gồm các tùy chọn peer, user, friend
  1. Peer : asterisk gởi các cuộc gọi đến peer.
  2. User : asterisk nhận các cuộc gọi từ một user.
  3. Friend : cả hai cùng thời điểm.
  • host : địa chỉ IP hay tên của host.Tùy chọn thông thường là “dynamic”, được sử dụng khi host đăng ký đến Asterisk.
  • secret : mật khẩu để xác thực.
  • canreinvite : dung để báo cho máy chủ không phát ra lời mời đến Client.
  • mailbox : tùy chọn này liệt kê một hoặc nhiều hộp thư mailbox dùng để gửi các tin nhắn đến một IAX peer đã cho.
  • Auth : cài đặt loại xác thực (hình thức xác thực trong giao thức IAX), có ba phương thức xác thực trong giao thức IAX là plaintext, md5 và cuối cùng là giao thức xác thực an toàn nhất trong IAX là rsa.
3.5. Cấu hình cho kịch bản thoại (Dial Plan).

Những điện thoại SIP cả mềm và cứng là các điện thoại đa dòng multi line.Trong bài báo cáo thực tập sử dụng điện thoại mềm X-lite.Để có thể gọi được ta phải thiết lập một kịch bản thoại trong file cấu hình /etc/asterisk/extensions.conf, ví dụ trong mạng nội bộ 2 máy 301 và máy 302 muốn gọi cho nhau cấu hình trong extensions.conf như sau:

3.5.1. Cấu hình extension.

File extensions.conf là nơi mà các kịch bản thoại của Asterisk được cụ thể hóa.File này nằm trong thư mục /etc/asterisk.Một kịch bản của Asterisk bao gồm 4 thành phần sau: context (ngữ cảnh), extensions (số nội bộ), priorities (số ưu tiên), và cuối cùng là application (ứng dụng).

Context: các kịch bản được phân tích thành các nhóm gọi là context hay còn được gọi là ngữ cảnh.Một nhóm mà được định nghĩa riêng biệt so với bất kỳ các nhóm ở ngữ cảnh khác.Tên của ngữ cảnh được đặt trong ngoặc [], ví dụ một ngữ cảnh có dạng như sau: [incomming].Tuy nhiên nếu muốn incoming bao gồm cả ngữ cảnh đã tồn tại trước đó, ví dụ như ngữ cảnh [default] thì them dòng sau trong tập tin extensions.conf 


Extensions: Trong mỗi một context cần phải có các extension sẽ giúp cho Asterisk có thể hiểu được các cuộc gọi được xử lý như thế nào.Cấu trúc của một extension là từ khóa exten và một mũi tên như sau: Exten => 
Một extension hoàn chỉnh bao gồm 3 thành phần sau:
  • Tên hay số-name của extension.
  • Độ ưu tiên-priority của mỗi extension.
  • Ứng dụng-Application hay câu lệnh-command để thực hiện một vài hoạt động trên cuộc gọi.
Cú pháp tổng quát như sau: exten => name, priority, application ().
Ví dụ: 
extend => 301, 1, answer ()

Trong ví dụ trên tên của extension là 301, có độ ưu tiên là 1 và ứng dụng là Answer()
Có một extension đặc biệt gọi là s extension.Khi có cuộc gọi đến một ngữ cảnh mà không có một extension đích cụ thể thì chúng sẽ được điều khiển một cách tự động bằng extension s (thường dùng khi nhận cuộc gọi từ bên ngoài khi không biết được số thuê bao của điện thoại).
Ví dụ về một extension s khi nhận cuộc gọi từ bên ngoài:

Ưu tiên 1 gọi ứng dụng answer để trả lời khi có cuộc gọi đến, sau khi trả lời asterisk sẽ qua ưu tiên tiếp theo là gọi ứng dụng background (chaomung) để phát ra âm thanh từ tập tin chaomung.gsm.Cuối cùng ưu tiên 3 gọi ứng dụng hangup () để kết thúc cuộc gọi. 
Các số có thể bằng chữ hay bằng mẫu số.
Một số mẫu số quy ước:
  • _: chỉ việc bắt đầu một mẫu số-pattern.
  • X: đại diện cho bất kỳ số nào từ 0 đến 9.
  • N: đại diện cho bất kỳ số nào từ 2 đến 9.
  • Z: đại diện cho bất kỳ số nào trừ số 0 ra.
  • [số bất kỳ]: chỉ có các số trong dấu [].
Priorities.
Mỗi một extension có nhiều bước, được gọi là độ ưu tiên priorities.Độ ưu tiên được đánh số một cách liên tục bắt đầu từ 1.Mỗi một độ ưu tiên hoạt động một ứng dụng cụ thể.Như ví dụ sau thì extension sẽ trả lời điện thoại và sau đó gác máy. 

Application.
Đây là phần quan trọng của Asterisk để cho biết ứng dụng nào sẽ được thực hiện như chơi một bản nhạc trong khi chờ đợi, trả lời cuộc gọi hay như kết thúc cuộc gọi.Một vài ứng dụng chỉ đơn giản gọi hàm mà không cần thêm các thông tin kèm theo, được hiểu như các đối số.Ví dụ như đối với 2 ứng dụng đã sử dụng ở trên Answer() và hangup().
3.5.2. Các ứng dụng phổ biến.

Ứng dụng Answer(): được sử dụng để trả lời một kênh đang đổ chuông và ứng dụng này như đã đề cập ở trên là không cần đối số đi kèm theo.
Ứng dụng Hangup(): được sử dụng dùng để kết thúc cuộc gọi, ứng dụng này thường được sử dụng ở dòng cuối cùng của một context, cũng như ứng dụng ở trên ứng dụng này không có đối số.
Ứng dụng playback(): được sử dụng để chơi một file âm thanh đã được ghi lại trước.Khi sử dụng ứng dụng này đối số của ứng dụng chính là tên file nhạc cần được chơi ở trong tập tin /var/lib/asterisk/sound.Ví dụ: Playback (chaomung) sẽ chơi một file nhạc có tên là chaomung.gsm.
Ứng dụng dial(): ứng dụng này được sử dụng khi muốn chuyển cuộc goi trực tiếp đến một số nội bộ đã được đăng ký.
Ví dụ về cú pháp của ứng dụng Dial():

Ứng dụng goto(): ứng dụng được sử dụng để gởi một cuộc gọi đến một context, extension, priority khác.Ứng dụng Goto() tạo ra sự thuận lợi để di chuyển cuộc gọi giữa các phần khác nhau trong dial plan.
Ví dụ về cú pháp của ứng dụng goto() như sau:

Ứng dụng background(): ứng dụng này cho phép phát một file âm thanh và chờ nhận từ bàn phím của máy điện thoại, sau khi nhận được con số từ bàn phím, asterisk sẽ ngắt phát thông điệp và chuyển đến số thứ tự priority tương ứng.Cú pháp của ứng dụng:


No comments:

Post a Comment

Post Top Ad

Responsive Ads Here