フリー・エンジニア
高橋隆雄 フリー・エンジニア
高橋隆雄

 今回は前回の内容をもう少し詳しく見てみることにしよう。前回設定した記述と併せてもその設定の量は,かなり少ないことに気付かれるであろう。Asteriskの設定はそんなに難しいものではないということを感じていただければと思う。

 少し間が開いてしまい申し訳けない。春先は何かとイベント(Asterisk絡みでないものも)が多くあり,多忙だったため記事の間が開いてしまった。

Asteriskの現状

 現時点でのAsteriskだが,Asterisk 1.6系(最新)の更新はもちろんのこと,1.4系も継続更新されている。2009年6月5日には,セキュリティフィックスで1.2,1.4,1.6系全ての系列において更新があった。

 少しややこしいことになっているのが1.6系で,1.6.0系と1.6.1系の2種類が並行して更新されている。1.6.0系は1.6.10が最新,1.6.1系は1.6.1.1が最新という具合だ。いずれは1.6.1系に統合されるものと思われるが,パッチの互換性維持などで面倒なことがしばらくは続きそうである。

書いておいた方が良いファイル

 前回は,最低限の設定ファイルだけ用意してAsteriskを起動する方法を簡単に解説したが,実際には前回のファイルにプラスしておいた方が良いものがいくつかある。

(1)RTPの設定ファイル「rtp.conf」

 rtp.confファイルはRTP(Real Time Protocol)に関する設定を行う。例えば,SIPではシグナリングはSIPで行われるが,実際の音声はRTPを使って行われるからだ。設定ファイルが存在しない場合にはAsteriskのデフォルト値で動作するが,この部分は明示定義した方がセキュリティやルータの設定の観点から好ましい。

 最低限必要な記述は以下の通りだ。

[general]
rtpstart=10000
rtpend=20000

 1行目の[general]のように[]で区切られた個所をセクションと呼ぶ。ただし,設定ファイルによってはこのセクションをコンテキスト(context)と呼ぶので注意が必要だ(例えば,extensions.confではコンテキストと呼ぶ)。

 この例では,RTPの開始ポートが10000で,終了ポートが20000ということを示している。これを例えば,10000から11000の範囲に絞りたい場合には以下のように記述する。

[general]
rtpstart=10000
rtpend=11000

(2)マスター設定ファイル「asterisk.conf」

 asteriskのマスター設定ファイル。各ファイルやディレクトリの配置などが記述されている。こちらもファイルが存在しない場合にはデフォルト値が使われるが,明示的に設定するのが好ましい部分もあるので解説しておこう。1.4と1.6では若干,記述が異なる部分もあるが以下の例は1.4でも1.6でも使える。

[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk
[options]
languageprefix=yes

 [directories]は,各種ディレクトリの配置を設定するもので設定値は見ての通りだ。=>の右にはディレクトリが書かれている。このうち注意が必要なのが,astrundirである。ここにはいわゆる .runファイルや .pidファイルが置かれるのだが,バックグラウンドでAsteriskが動作している場合にAsteriskのCLI(コマンド・ライン・インタフェース)で通信する場合には,このディレクトリが明示されている必要がある。また,ディレクトリのパーミッション(権限)が問題になるのでAsteriskの起動ユーザ(UID)が書き込み可能なディレクトリを指定すべきである。

 [options]は各種オプションを設定するものだが,ここではlanguageprefix=yesとのみ書いてある。これは言語依存の音声ファイルに新レイアウトを使用するためのものである。何に対しての新レイアウト?と疑問に思われるだろうが,1.0に対しての新レイアウトで,1.4は旧と新の両方が使えるようになっており,デフォルトは旧レイアウトであったためだ。1.6からはこのオプションを指定しなくても新レイアウトがデフォルトで使われる。