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-develAsterisk のインストール
下記の手順で 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 ~]# cdAsterisk の起動
この時点で 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
