ServersMan@VPS(debian-32bit)でAsterisk PBX

先日ServersMan@VPS(debian-32bit)でプロセス数の節約を計りましたが、
実はPBXのasteriskを動かしたかったんですね。
何しろインストールしたての状態で37ものプロセスを立ち上げてくれます。

インストールは簡単で、

# apt-get update
# apt-get install asterisk

を実行するのですが、途中で”ITU-T Telephone code”をたずねられるので
日本の国番号”81″を設定しておきます。
処理の完了時にはasteriskがすでに起動しており、
システムの起動時には自動的に起動するように設定されています。

それでは設定に参りましょう。
設定ファイル”/etc/asterisk/sip.conf”の[general]セッションで

allowguest=no
language=ja
disallow=all
allow=ulaw
allow=alaw
allow=gsm

としておきます。
また設定ファイル”/etc/asterisk/sip.conf”の最後に

[<電話番号>]
type=friend
defaultuser=<電話番号>
secret=<パスワード>
canreinvite=no
host=dynamic

を作りたい電話番号の数だけ追加します。
なお、私は電話番号を1で始まる4桁以上の数にしています。
というのも日本では1で始まる電話番号は3桁の特種番号と相場が決まっており、
番号計画的に収まりがいいからです。
今回は4桁にして百の位は内部的な切り分けに使うことにして、
とりあえず”1000″~”1099″を使うことにます。
ただし、”10?1″~”10?9″の代表番号を”10?0″とすることにします。
次に設定ファイル”/etc/asterisk/extensions.conf”の[default]セクションにある

include => demo

をコメントアウト(行の先頭に’;’を挿入)し、

exten => _10XZ,1,Dial(SIP/${EXTEN},,tT)
exten => _10XZ,n,Hangup
exten => _10X0,1,Set(gn=${EXTEN:0:3})
exten => _10X0,n,Dial(SIP/${gn}1&SIP/${gn}2&SIP/${gn}3&SIP/${gn}4&SIP/${gn}5&SIP
/${gn}6&SIP/${gn}7&SIP/${gn}8&SIP/${gn}9,,tT)
exten => _10X0,n,Hangup

を追加します。

今度はクライアント側を設定します。
iPhoneではApp StoreからAGEphoneをダウンロードし、
[設定]メニューの[詳細]から[プライマリSIPアカウント]を開き、
[ユーザID]と[表示名]と[認証ID]に電話番号を、
[パスワード]にパスワードを、[ドメイン]と[レジストラ]に
VPSのIPアドレスかそれが引けるホスト名を設定すれば完了です。
立ち上げてから一回目の発着信動作が怪しいのですが、
まあ気にしないことにします。

またAndroidスマートフォンではGoogle PlayからAGEphoneをダウンロードし、
[設定]メニューの[詳細]から[アカウント]を開き、
[ユーザID]と[表示名]と[認証ID]に電話番号を、
[パスワード]にパスワードを、[ドメイン]と[レジストラ]に
VPSのIPアドレスかそれが引けるホスト名を設定すれば完了です。
ただOS起動時に自動的に立ち上げるようにするとうまくレジストできないので、
AGEphoneは手動で立ち上げるほうがよさそうです。

WindowsでもAGEphone(ver 1.0)をインストールし、
[SIPサーバアドレス]にVPSのIPアドレスかそれが引けるホスト名、
[ユーザID or 内線電話]に電話番号、
[パスワード]にパスワードを設定すれば完了です。

これらはNAT配下からでも相互に通話できます。
ただし片方を帯域が128kbpsなAndroidスマートフォンにすると
ノイズや遅延が大きく会話するには辛いものがあります。
まあ内容が伝わらないわけではないのですが。
とは言っても実用になりませんので、
設定ファイル”/etc/asterisk/sip.conf”の[general]セッションで

disallow=all
allow=ulaw
allow=alaw
allow=gsm

としていたのの順番を

disallow=all
allow=gsm
allow=ulaw
allow=alaw

にしてみると十分に通話できるようになりました。
ulawだと片方向64kbpsですが
gsmなら片側13kbps程なので十分通るということです。
gsmでも通話品質が悪いというわけでもありませんし。

またルーターに対してプロバイダーからプライベートIPをもらうような
二重NATがかかる環境だと使えません。
そういう場合はSIPはあきらめてIAXを使うと多分幸せになれます。

これでインターネット接続環境があれば
どこからでもつながる内線網ができましたが…大して使わないでしょうね。