手当たり次第に書くんだ

飽きっぽいのは本能

CentOS 6 Asterisk IP-PBX 構築

Overview

Asterisk は、オープンソースの IP-PBX ソフトウェアであり、VoIP 通信を実現するための強力なプラットフォームです。業界で広く採用されており、多くの IP-PBX アプライアンスに組み込まれています。

Asterisk を利用すると、無料で利用可能な SIP クライアントを活用できます。Windows ユーザーには X-Lite、iPhone や他のスマートフォンユーザーには Media5-fone を利用できます。これらのクライアントを使用することで、Asterisk をベースにした通話サービスを手軽に利用できます。

インストール

Asterisk は CentOS 6 の標準リポジトリに存在しないため、ソースコードをコンパイルしてインストールします。

ソースコードの入手

ソースコードを /usr/local/src にダウンロードします。

[root@centos-6 ~]# wget -P /usr/local/src http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.19.1.tar.gz

必要なライブラリのインストール

Asterisk はいくつかのライブラリを必要としますが、CentOS 6 の標準リポジトリにそれが含まれています。

[root@centos-6 ~]# yum install libxml2 libxml2-devel ncurses ncurses-devel

Asterisk のインストール

下記の手順で Asterisk をインストールします。ソースコードからのインストールであるものの、Asterisk のインストーラーは良くできており、この手順で実施するとサービスの登録まで行われます。

[root@centos-6 ~]# cd /usr/local/src
[root@centos-6 /usr/local/src]# tar zxvf asterisk-1.8.19.1.tar.gz
[root@centos-6 /usr/local/src]# cd asterisk-1.8.19.1
[root@centos-6 /usr/local/src/asterisk-1.8.19.1]# ./configure
[root@centos-6 /usr/local/src/asterisk-1.8.19.1]# make
[root@centos-6 /usr/local/src/asterisk-1.8.19.1]# make install
[root@centos-6 /usr/local/src/asterisk-1.8.19.1]# make samples
[root@centos-6 /usr/local/src/asterisk-1.8.19.1]# make config
[root@centos-6 ~]# cd

Asterisk の起動

この時点で Asterisk が正常に起動することを確認しておきます。service コマンドがそのまま利用できるのは便利ですね。

[root@centos-6 ~]# service asterisk start
[root@centos-6 ~]# chkconfig asterisk on && chkconfig asterisk --list

/etc/asterisk/users.conf

他のサービスと同様、Asterisk も環境固有の設定をする必要があります。/etc/asterisk/users.conf は、ユーザー情報を設定します。

[root@centos-6 ~]# cp /etc/asterisk/users.conf /etc/asterisk/users.conf.orig
[root@centos-6 ~]# vim /etc/asterisk/users.conf
[101]
type=friend
username=101
secret=1234
canreinvite=yes
host=dynamic

[102]
type=friend
username=102
secret=1234
canreinvite=yes
host=dynamic

101 について以下で説明します。102 でも同じです。

[101]

この部分はセクション名(括弧内の数字)で、特定のユーザーを識別するための名前です。この場合、ユーザー ID または内部エクステンションとして 101 という名前が指定されています。

type=friend

type はユーザーの種類を指定します。friend は SIP プロトコルで使用されるユーザーの種類で、これによりこのユーザーが呼び出しを発信することも受け取ることもできることを意味します。

friend 以外の type は主に次の値を指定できます。

  • peer: SIP プロトコルを使用して通話を発信・受信することができるユーザーですが、内部エクステンションとしての動作はしません。つまり、他のエクステンションからはこのエクステンションには呼び出しを発信することはできますが、直接呼び出しを受け取ることはできません。
  • user: SIP プロトコルを使用して通話を受信するユーザー。このタイプのユーザーは通話を発信することはできませんが、他のエクステンションからの呼び出しを受け取ることはできます。

username=101

username はユーザーのユニークな識別子です。SIP プロトコルでの認証や呼び出しに使用されます。この場合、ユーザー名として 101 が設定されています。

secret=1234

secret はユーザーの認証に使用されるパスワードやシークレットキーを指定します。この例では、ユーザーのシークレットとして 1234 が設定されています。これはセキュリティ上の理由で強力なパスワードに変更することをおすすめします。

canreinvite=yes

canreinvite は、通話中にメディアストリームを直接相手側と直接接続するかどうかを指定します。yes と設定すると、Asterisk は SDP (Session Description Protocol) の再交渉を行い、直接接続を試みます。

host=dynamic

host は、ユーザーが接続するホストのタイプを指定します。dynamic と設定すると、このユーザーは動的に IP アドレスを取得することができ、どの IP アドレスからも接続可能となります。

/etc/asterisk/extensions.conf

/etc/asterisk/extensions.conf は、それぞれの番号にダイヤルされた際の動作を指定します。

正直パラメータの詳細は不明です。defaultコンテキスト内に記載します。

[root@centos-6 ~]# cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.orig
[root@centos-6 ~]# vim /etc/asterisk/extensions.conf
[default]
exten = 101,1,Dial(SIP/101)
exten = 101,n,HangUp
exten = 102,1,Dial(SIP/101)
exten = 102,n,HangUp

[default]

この部分はコンテキスト名です。Asterisk の設定ファイルでは、各コンテキストは特定の通話ルートやアプリケーションロジックを定義します。このコンテキスト名は default となっています。

exten = 101,1,Dial(SIP/101)

exten はエクステンション(内部番号)の設定を行います。

  • 101: このエクステンションは 101 という内部番号を持っています。
  • 1: プライオリティレベルです。1 は最初の処理ステップを示しています。
  • Dial(SIP/101): Dial アプリケーションを使用して、SIP/101 という SIP プロトコルを使用するデバイスまたはユーザーに通話をダイヤルします。

exten = 101,n,HangUp

  • n: このプライオリティレベルは 101,1,Dial(SIP/101) の次の処理ステップを示します。
  • HangUp: 通話を終了します。これにより、通話が終了することを示しています。

/etc/asterisk/rtp.conf

/etc/asterisk/rtp.conf は、RTP (Real-time Transport Protocol) の設定全般が含まれます。本稿では利用するポート範囲を指定しています。このポートの範囲指定は必須ではありませんが、ファイアウォールやネットワーク機器の設定時に特定のポート範囲を開放する際などに役立ちます。また、ポート範囲を指定することで、セキュリティの観点からも不要なポートを閉じることができる場合があります。

[root@centos-6 ~]# cp /etc/asterisk/rtp.conf /etc/asterisk/rtp.conf.orig
[root@centos-6 ~]# vim /etc/asterisk/rtp.conf
rtpstart=30000
rtpend=31023

/etc/asterisk/sip.conf

/etc/asterisk/sip.conf はSIP (Session Initiation Protocol) の設定全般が含まれます。以下の例では、SIP のデバックを有効にしています。これを有効にすると asterisk -r でステータス確認の際、SIP のデバックメッセージがリアルタイムで表示されます。この設定は、トラブルシューティング時以外は邪魔です。

[root@centos-6 ~]# vim /etc/asterisk/sip.conf
sipdebug = yes

設定の有効化

Asterisk を再起動し、設定を有効化します。

[root@centos-6 ~]# service asterisk restart
CentOS 6 Asterisk IP-PBX 構築

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る