ゼロからはじめるぜ! Twilio – シーズン3: SIP Trunking編 第3回

masa_prof.jpgのサムネイル画像のサムネイル画像こんにちは、ネットワークエンジニアのまさです。

 

今回は Asterisk の設定をします。IP-PBX の下に内線を2つぶら下げるところまでを目標にしてみます。もう一度全体図を確認しておきましょう。

zerotwilio_3-2-1.jpgのサムネイル画像

Asterisk に2つの内線をぶら下げ、まずはこのIPフォン同士で内線をかけあえるようにしてみます。お気づきだと思いますが、ここまでの範囲だとまだTwilioは関係ないです。例えば、左側のパソコンから右側のスマホアプリに電話をかける場合、IP-PBXまでの通信で完結するため「内線」と言います。いいの、今回はこれでいいのです。一方、IP-PBXから上の方向が「外線」となります。

 

Asterisk の初期設定

Twilioを経由してPSTNを介した相互通信を実現するまでに必要になる Asterisk の設定ファイルは以下の2つだけです。

/etc/asterisk/sip.conf

/etc/asterisk/extensions.conf

他、ものすごい数の設定ファイルがあるのですが、きっとAsterisk様は極めたら色々できるんでしょう。が、このシーズンではそれらに触れません。一度ミミズ缶を開けてしまったら、元には戻せない。このシーズンを終えるに何話必要になるか分からないと、それは非常に困ります。

では、最初にSIPの基本設定を入れます。/etc/asterisk/sip.conf を以下の内容に書き換えるのですが、念のためオリジナルはとっておきます。既にサンプルとしていろいろ設定が書かれているのですが、試行錯誤の結果、2つの内線を登録するのには、これだけの設定で良いと分かりました。

# cd /etc/asterisk

# cp sip.conf sip.conf.org

# vi sip.conf

 

[general] context=default port=5060 bindaddr=0.0.0.0 language=ja allowguest=yes alwaysauthreject=yes [412601] type=friend defaultuser=412601 secret=***** ※→自由にパスワードを設定 canreinvite=no host=dynamic qualify=yes nat=yes [412602] type=friend defaultuser=412602 secret=***** ※→自由にパスワードを設定 canreinvite=no host=dynamic nat=yes

 

これで何を設定しているのか説明します。[] でくくられている部分を「コンテキスト」と呼ぶようです。設定範囲の名前付けのようなイメージです。最初に general とあります。一般的なSIP待ち受けポートである 5060 を指定したりと。1点だけ注目する設定があります。

 

allowguest=yes

 

ここは yes としてください。ここが no だと、PSTN→Twilio→Asterisk という着信のコールを受けられなくなります。

SIPデバイスとPBXは、ざっというと「Registered型」「Non-Registered型」と2通りがあります。各SIPデバイスがPBXに対して「俺、つながるからね」と登録に行く方式が前者、後者はそれを必要としない方式です。現状、TwilioからPBXに対しては Non-Registered型 でサービス提供していますので、ここは yes である必要があります。

次、[412601] [412602] というコンテキストがあります。これは2つのデバイスの内線番号です。101・102とか簡単なものでも大丈夫なのですが、ここは5桁・6桁あたり少し長めにすることを強くお勧めします、というか、そうしておいてください。理由はおいおい説明しますが、このシリーズでお送りしている実験内容では、この長さがセキュリティに影響してきます。長いほうが安全度が増します。

コンテキスト名と同じ数字で defaultuser を設定します。これが、SIPデバイスと Asterisk が接続する際の(SIPデバイスがAsteriskへRegistをあげるための)ユーザー名になり、secret がパスワードになります。この2つは絶対に破られてはなりません。これが破られると、最悪、インターネット上の同様のSIPデバイスがアナタの Asteriskにぶら下がりPSTNに向かって電話かけ放題になってしまいます。パスワードは長めで複雑なものにしましょう。後の回で説明する Twilioとのつなぎ込みで、Twilioが求めるパスワードは、大文字小文字数字記号 の4種を全て最低1つずつ含み、12文字以上という強固な条件が課されています。

上記のように sip.conf を書き換えたら保存します。

次に extensions.conf です。このファイルは、各内線の挙動を記したもので、まるで sendmail の設定ファイルのように複雑奇っ怪な書式です。現状、私はさっぱり分からないので、とりあえず各デバイスで、出て話せて切れる、最低限のことを実現する内容で書きます。

# cd /etc/asterisk

# cp extensions.conf extensions.conf.org

# vi extensions.conf

 

[default] exten => 412601,1,Dial(SIP/412601,30,r) exten => 412601,2,Hangup() exten => 412602,1,Dial(SIP/412602,30,r) exten => 412602,2,Hangup()

 

お察しの通り、412601 と 412602 は sip.conf で作成したコンテキストに対応しています。2行ずつ2セットありますね。

これで、2つの設定ファイルが完成しました。Asterisk を再起動します。

# /etc/init.d/asterisk restart

さあ、IP-PBXの準備ができましたよ!

IPフォンデバイスの作成

Asterisk にぶら下げるIPフォンを模したものを用意します。既にSIP通信に対応したIP電話機をお持ちの方は、その電話機で同じように設定してもOKです。今回、私は Macパソコンと iPhone を用意しました。もちろん Windowsパソコンだっていいです。

以下のソフトウェアをインストールしましょう、全て無料です。Android は普段使ってないのでよく分からないため、適当に IPフォンの代わりになるソフトを見つけてインストールしてみてください。

■パソコン側にインストールするもの

Macの場合   : Linphone (http://www.linphone.org/)

Windowsの場合: MicroSIP (http://www.microsip.org/downloads)

■iPhone側にインストールするもの

AGEphone (App Store で検索)

インストールしたら、設定をします。以下は MicroSIP の設定例です。以下はコンテキスト [412601] に紐づく設定です。つまり、これが 内線 412601 のデバイスになります。内線 412602 にしたい場合は、コンテキスト [412602] に指定した defaultuser や secret に置き換えてください。もちろんですが、2つのSIPデバイスに同じ defaultuser 入れたらダメですよ!! 当然、片方が 412601だし、もう片方が 412602 です。

zerotwilio_3-2-2.jpg

SIPサーバー: 多分ソフト上の表示名なはずですが、念のためAsteriskをインストールしたサーバーのグローバルIPアドレスやFQDNにしておきます。

ユーザ名: このデバイスに名前をつけます。何でも構いませんが、以下のログインを省略すると、このユーザ名が認証時のユーザ名として使われます。

ドメイン: AsteriskをインストールしたサーバーのグローバルIPアドレスやFQDN。

ログイン: Asteriskに設定した defaultuser と同じもの。

暗証番号: Asteriskに設定した secret と同じもの。

あなたの名前: これが相手側のデバイスに通知されます。今は内線番号と同じにしておきます。

そして保存します。キーパッドの窓が立ち上がり、左下のステータスアイコンが緑の「オンライン」になればOKです。

Mac をご利用の方は Linphone でしょうから、インストール後に起動すると「SIPアカウント設定アシスタント」が起動します。以下の順で進みましょう。

SIPアカウントを持っているのでそれを使います → 進む

ユーザー名: Asteriskに設定した defaultuser と同じもの。

パスワード: Asteriskに設定した secret と同じもの。

ドメイン: AsteriskをインストールしたサーバーのグローバルIPアドレスやFQDN。

プロキシ: 空欄

うまく設定できると、横長の窓が立ち上がり、右上の受話器吹き出しアイコンが緑になり、窓最下部のステータスバーに 「Registration on sip:<ドメインに入力したもの> successful.」とでているはずです。

iPhone の AGEphone の設定は以下の通りです。

ドメイン: AsteriskをインストールしたサーバーのグローバルIPアドレスやFQDN。

内線番号: おそらくこれが相手側デバイスに通知される文字列。

認証ID: Asteriskに設定した defaultuser と同じもの。

パスワード: Asteriskに設定した secret と同じもの。

付加する番号: 空欄

うまく設定できると、メイン画面に移り、上部のステータスバーに 緑枠の丸「ダイヤルできます」と表示されているはずです。

これで、各デバイスが Asterisk に Regist を上げて登録された、つまり、内線としてぶら下がったということになります。

  その時がきた。

実際内線をかけてみましょう、ドキドキしますね! ドキドキするでしょう? するにきまってる。

MicroSIP が 412601 だとし、ここからかける場合はキーパッドで 412602 と押して「発信」、

Linphone が 412601 だとし、ここからかける場合は「SIPアドレスもしくは電話番号」欄に「412602」を入力して受話器アイコンをプッシュ、

AGEphone が 412601 だとし、ここからかける場合はキーパッドで 412602 と押して緑の受話器アイコンをプッシュ

おめでとうございます!!

わかります、その興奮、喜び、少し遅れてやってくる僅かな照れ、わかりますとも^^

うまくかからなかった人、そもそも各SIPデバイス側で緑のステータスになっていない場合は、各ソフトに入力した設定項目や Asteriskの sip.conf や extensions.conf を確認してください。Asterisk側の設定ファイルを再編集したら /etc/init.d/asterisk restart で再起動することを忘れずに。

今回はここまでにします。

次回は、これら内線デバイスから、PSTN上の電話番号へ外線がかけられるようにしてみます。お楽しみに!!

この記事をシェア

最新記事

すべての記事へ