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 && chkconfig asterisk on
/etc/asterisk/users.conf
/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
/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]
: この部分はセクション名(括弧内の数字)で、特定のユーザーを識別するための名前です。type=friend
: ユーザーの種類を指定します。friend
は SIP プロトコルで使用されるユーザーの種類で、これによりこのユーザーが呼び出しを発信することも受け取ることもできることを意味します。friend
以外のtype
は主に次の値を指定できます。peer
: SIP プロトコルを使用して通話を発信・受信することができるユーザーですが、内部エクステンションとしての動作はしません。つまり、他のエクステンションからはこのエクステンションには呼び出しを発信することはできますが、直接呼び出しを受け取ることはできません。user
: SIP プロトコルを使用して通話を受信するユーザーです。このタイプのユーザーは通話を発信することはできませんが、他のエクステンションからの呼び出しを受け取ることはできます。
username=101
: ユーザーのユニークな識別子です。SIP プロトコルでの認証や呼び出しに使用されます。secret=1234
: ユーザーの認証に使用されるシークレットキーを指定します。この例では、シークレットキーとして1234
を指定していますが、各環境のパスワード要件に応じて強力なパスワードを設定して下さい。canreinvite=yes
: 通話中にメディアストリームを直接相手側と直接接続するかどうかを指定します。yes
の場合、Asterisk は SDP (Session Description Protocol) の再交渉を行い、直接接続を試みます。host=dynamic
: ユーザーが接続するホストのタイプを指定します。dynamic
の場合、このユーザーは動的に IP アドレスを取得することができ、どの IP アドレスからも接続可能となります。
/etc/asterisk/extensions.conf
/etc/asterisk/extensions.conf
をバックアップし、エディターで開きます。
[root@centos-6 ~]# cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.orig
[root@centos-6 ~]# vim /etc/asterisk/extensions.conf
/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
以下は 101
について説明していますが、102
でも同じです。
[default]
: この部分はコンテキスト名です。Asterisk の設定ファイルでは、各コンテキストは特定の通話ルートやアプリケーションロジックを定義します。exten = 101,1,Dial(SIP/101)
:exten
はエクステンション(内部番号)の設定を行います。101
: このエクステンションは 101 という内部番号を持っています。1
: プライオリティレベルです。1
は最初の処理ステップを示しています。Dial(SIP/101)
: Dial アプリケーションを使用して、SIP/101
という SIP プロトコルを使用するデバイスまたはユーザーに通話をダイヤルします。
exten = 101,n,HangUp
:exten
はエクステンション(内部番号)の設定を行います。n
: このプライオリティレベルは101,1,Dial(SIP/101)
の次の処理ステップを示します。HangUp
: 通話を終了します。これにより、通話が終了することを示しています。
/etc/asterisk/rtp.conf
/etc/asterisk/rtp.conf
をバックアップし、エディターで開きます。
[root@centos-6 ~]# cp /etc/asterisk/rtp.conf /etc/asterisk/rtp.conf.orig
[root@centos-6 ~]# vim /etc/asterisk/rtp.conf
/etc/asterisk/rtp.conf
を編集します。以下の設定では利用するポート範囲を指定しています。このポートの範囲指定は必須ではありませんが、ファイアウォールやネットワーク機器の設定時に特定のポート範囲を開放する際などに役立ちます。また、ポート範囲を指定することで、セキュリティの観点からも不要なポートを閉じることができる場合があります。
rtpstart=30000
rtpend=31023
/etc/asterisk/sip.conf
/etc/asterisk/sip.conf
をバックアップし、エディターで開きます。
[root@centos-6 ~]# cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.orig
[root@centos-6 ~]# vim /etc/asterisk/sip.conf
/etc/asterisk/sip.conf
を編集します。以下の例では、SIP のデバックを有効にしています。これを有効にすると asterisk -r
でステータス確認の際、SIP のデバックメッセージがリアルタイムで表示されます。この設定は、トラブルシューティング時以外は不要です。
sipdebug = yes
設定の有効化
Asterisk を再起動し、設定を有効化します。
[root@centos-6 ~]# service asterisk restart