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

 前回は,Asteriskが稼働する最低限の環境を理解するために,設定ファイルを消して一からやり直してみた。今回はIP-PBXとしてきちんと動作する“必要最小限”のシステムを構築する手順を解説する。

 Asteriskの機能をすべて使うわけでなければ,実は設定はそれほど難しいものではない。慣れないうちはインストール手順に従って,Asteriskの配布物に含まれる設定ファイルをすべてインストールしてしまいがちだが,これが逆にAsteriskを分かりにくくしている原因の一つとなっている。むしろ第22回の解説記事のように,すべての設定ファイルを消してから,設定をし直した方が理解しやすい。今回は“最低限”ではなく,きちんと動作する“最小限”のシステムを構築していこう。

必要最低限の設定ファイルとその内容

 必要最低限のシステムを構築する手順を説明しよう。ここではSIP(session initation protocol)に対応したIP電話機だけを使う内線電話システムを構築することととし,他の呼制御プロトコルは使わない場合を想定している。なお,以下で説明する各種設定ファイルは,いずれも“/etc/asterisk”ディレクトリ下にあるものとする。

(1)マスター設定ファイル(asterisk.conf)

 asterisk.confは,Asteriskが使用するディレクトリやオプションなどを設定するためのファイルである。基本的な内容は以下の通り。

[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

 基本的な設定は見ての通りで,それぞれのファイル類がどこに配置されるかというディレクトリを定義しているだけだ。なお“astrundir”を上記の例のように“/var/run/asterisk”と指定した場合には,コマンド・ラインで“mkdir /var/run/asterisk”と実行して該当するディレクトリを作成した後,“chown asterisk:asterisk /var/run/asterisk”で所有者を変えておく必要がある。

 また,日本語音声ファイルを使用する場合には[options]で上記のようにlanguageprefixを“yes”と指定しておく。

(2)機能設定ファイル(features.conf)

 Asteriskの設定ファイルの中で初心者に分かりにくいのが,このfearures.confファイルである。モジュール類がきれいに分かれていれば,features.confなしでも動作しそうだが,転送や保留,あるいは録音といったチャネルに依存する機能の定義はこのファイルに入っている。例えばSIPチャネル(chan_sip)を使う場合もこのfeatures.confが必要となる。

 Asteriskはデフォルト値を持っているのでこのファイルの中身が空でも動作はする。だがfeatures.confファイル自体がない場合は,res_featuresというモジュールが読み込まれないために,SIPチャネルがエラーを起こすことがある。このため内容はなくともfeatures.confファイルは用意しなくてはならない。

 このファイル内で設定をする機能として,よく使われるのがコールパーキング(保留転送)である。例えばコールパーキングの設定は以下のような内容を記述するだけでよい。

[general]
parkext => 700
parkpos => 701-720
context => parkedcalls

 これはかかってきた電話を保留する際の内線番号が700,転送する先の番号の範囲が701~720という定義である。

(3)RTPの設定(rtp.conf)

 rtp.confはその名前の通り,通話に使われるRTP(real-time transport protocol)を設定するファイルである。Asteriskの配布物に含まれている設定例には以下のような内容が書かれているはずだ。

[general]
rtpstart=10000
rtpend=20000

 これはRTPの範囲を定義している。ポート番号の10000~20000を使用するという意味である。デフォルト値のままでも動作するが,これほど多くのポート番号が必要ない場合には,この範囲を調整すればよい。

(4)モジュール設定ファイル(modules.conf)

 第22回の解説では,このファイルを使わずに手動でモジュールを読み込んでみた。実際には,このファイルに読み込む設定や,あるいは読み込まない設定を記述することで,モジュールのロードを制御することができる。通常は以下のような内容のファイルを用意しておく。

[modules]
autoload=yes
;
noload => pbx_gtkconsole.so
noload => pbx_kdeconsole.so
;
noload => app_intercom.so
;
noload => chan_mgcp.so
noload => chan_skinny.so
noload => chan_phone.so
;
noload => chan_modem.so
noload => chan_modem_aopen.so
noload => chan_modem_bestdata.so
noload => chan_modem_i4l.so
noload => chan_misdn.so
;
load => res_musiconhold.so
;
noload => chan_alsa.so
noload => chan_oss.so
;
noload => app_adsiprog.so
[global]
chan_modem.so=yes

 “autoload=yes”が定義されているとモジュール類は自動で読み込まれる。ただし,モジュールによっては設定ファイル(.conf)を必要とするので,設定ファルが存在しないと“autoload=yes”であっても読み込まれないモジュールがある。例えばchan_sip.soは上の設定例では“noload”されていないので自動でロードされるはずだが,sip.conf((6)で説明)が存在しなければロードされない。