1: 2014-10-05 (Sun) 22:32:34 maruo source
Line 1: Line 1:
 +*Asteriskのインストール [#z412b71d]
 +**Asteriskのパッケージインストール [#oc280d06]
 +Asteriskは、GentooのPortageに登録されています。なので、USEフラグを設定し、emergeします。私は、以下のUSEフラグを設定しています。
 + net-misc/asterisk alsa curl doc freetds gtalk http ilbc jabber lua span speex srtp syslog voicemail_storage_file
 +
 +そして、以下のコマンドを実行します。
 +
 + # emerge asterisk asterisk-extra-sounds asterisk-moh-opsound asterisk-core-sounds
 +
 +**日本語音声ファイルのインストール [#n5840cef]
 +Asteriskをインストールすると、全て英語の音声です。例えば留守録をする際等、メッセージが流れますが、全て英語の音声になってしまいます。それは嫌だなぁ。と、言うことで、[[日本語音声ファイル:http://ftp.voip-info.jp/asterisk/sounds/1_6/]]をダウンロードしてまいります。そして、このファイルを、/var/lib/asterisk/soundsに解凍します。
 +
 +*設定 [#zae7eeb8]
 +050plusはスマホ用の直通番号、FUSION IP-Phone SMARTは家の固定電話の電話番号として使用します。
 +Asteriskの設定ファイルは、/etc/asteriskの配下に格納されております。では、順番にやっていきましょう~。
 +
 +**暗号化通信のために、TLSキーを作る [#if09bc1b]
 +SIPには、暗号化の仕組みがあります。
 +-SIPトランスポートのTLSレイヤ
 +-RTPの暗号化版。SRTP。
 +
 +050plusでは、TLS+SRTPで通信します。TLSで通信するためには、証明書の作成が必要のため、こいつを作成しておきます。
 +
 +[[AsteriskのGithubから、証明書を作るスクリプトast_tls_certをダウンロードしてきます。:https://github.com/rillian/asterisk-opus/blob/master/contrib/scripts/ast_tls_cert]]で、これを以下の用に実行します。
 +
 + # mkdir /etc/asterisk/keys
 + # ast_tls_cert -C example.com -O "Example Company" -d /etc/asterisk/keys
 +
 +これで作成したキー(/etc/asterisk/keysディレクトリの下に作られています)を、適当なフォルダにコピーします。パーミッションに注意してね!
 +
 + # chown -R asterisk.asterisk /etc/asterisk/keys
 + # chmod 700 /etc/asterisk/keys
 + # cd /etc/asterisk/keys
 + # chmod 600 *
 +
 +下手に参照されないように、asteriskさんしかアクセス出来ないように変えておきます。ユーザー所有権がイケてないと、AsteriskでTLSが動作しないので注意してくださいね~。
 +
 +**asterisk.conf [#cda9ae2e]
 +Asteriskの全体を設定するファイルです。以下の設定を追加しましょう。
 +
 + defaultlanguage = ja
 +デフォルトの言語プレフィックスです。
 +
 +**rtp.conf [#w019613a]
 +音声チャネルを転送する、RTPストリームのポート番号を指定します。初期設定だと10000~20000を使用することになっています。が、なるべく開けるポート数は少なくしたいのと、そもそも家で使用する場合は、一度にそんなに多くの人が同時通話するわけではないですから、なるべく数を絞ります。
 + [general]
 + rtpstart=10000
 + rtpend=10009
 +10ポートも空けといてやれば十分でしょう。
 +
 +**sip.conf [#c7a0fddf]
 +SIPのアカウント情報を設定します。
 +-先ほどぶっこ抜いた、外線発信用IP電話事業者への接続情報
 +-Asteriskに登録する内線子機の情報
 +
 +の情報を登録します。
 + ;一般設定
 + [general]
 + bindaddr=0.0.0.0
 + language=ja
 +
 + ;NAT用の設定。Asteriskを動かすサーバが、NATのネットワーク内(ブロードバンドルータの中等)にいるときに指定します。
 + ;ルータに振られている外部アドレス
 + externip = XXX.XXX.XXX.XXX
 + ;ローカルネットと認識するサブネット
 + localnet=192.168.X.X/255.255.255.0
 +
 + maxexpirey=3600
 + defaultexpirey=3600
 +
 + ;TLSのセッティング
 + tlsenable=yes
 + tlsbindaddr=0.0.0.0
 + tlscertfile=/etc/asterisk/keys/asterisk.pem
 + tlscafile=/etc/asterisk/keys/ca.crt
 + tlscipher=ALL
 + tlsclientmethod=tlsv1
 + tlsdontverifyserver=yes
 +
 + ;IP電話のアカウントでSIPを登録する。外線着信用の準備
 + ;050plusの例
 + register => tls://ニックネーム:SIPパスワード:SIP_ID@60.37.58.170:5061/201
 + ;FUSION IP-Phone SMARTの例
 + register => SIPアカウント:SIPアカウントパスワード@smart.0038.net
 +
 + context=default
 +
 + ;050plusの接続情報。 外線発信用の情報
 + ;050plusはTLS/SRTPでないと通信させてくれない
 + [050plus]
 + type=friend
 + secret=SIPパスワード
 + port=5061
 + defaultuser=SIP_ID
 + fromuser=ニックネーム
 + host=60.37.58.170
 + ;host=kar-f2fcp.050plus.com
 + fromdomain=050plus.com
 + context=default
 + insecure=invite,port
 + dtmfmode=inband
 + canreinvite=no
 + disallow=all
 + allow=ulaw
 + transport=tls
 + encryption=yes
 +
 + ;FUSION IP-Phone SMARTの接続情報。 外線発信用の情報
 + ;FUSION IP-Phone SMARTはTLS/SRTPは対応していない
 + [FUSION]
 + type=friend
 + defaultuser=SIPアカウント
 + fromuser=SIPアカウント
 + secret=SIPアカウントパスワード
 + host=smart.0038.net
 + fromdomain=smart.0038.net
 + context=default
 + insecure=port,invite
 + canreinvite=no
 + disallow=all
 + allow=ulaw
 + allow=alaw
 + dtmfmode=inband
 +
 + ;内線200番の設定(自宅の固定電話とする)
 + ;ユーザID200、パスワードは"secret="に記載しているもの。そのまま使わないように!
 + [200]
 + type=peer
 + defaultuser=200
 + secret=secret200
 + directmedia=no
 + ;transport=tls
 + encryption=yes
 + host=dynamic
 + mailbox=200
 + context=context_200
 +
 + ;内線201番の設定(スマホとする)
 + ;ユーザID200、パスワードは"secret="に記載しているもの。そのまま使わないように!
 + [201]
 + type=peer
 + defaultname=201
 + secret=secret201
 + directmedia=no
 + transport=tls
 + encryption=yes
 + host=dynamic
 + mailbox=201
 + context=context_201
 +
 +これは、050plus、FUSION IP-Phone SMART、内線200、201の接続情報になります。
 +-200番を固定電話(代表番号)とします。自宅ネットワーク内でしか使用しないので、TLSはなしにしています。
 +-201番はスマホとします。外に持ちだしても使用するので、SIPトランスポートはTLSで暗号化するようにしています。
 +
 +200番、201番の設定にmailboxを指定しているのは、留守番電話を保存するメールボックス番号、contextは外線発信を別の直通番号で行うための設定で、extensions.conf内で使用します。
 +
 +
 +**extensions.conf [#k2bf8e68]
 +sip.confで定義した接続情報の端末を用いて、ある電話番号が着信したらどうするか、またある電話番号向けへの発信はどうするか、を定義します。要は電話処理の業務シナリオを記述するわけですね。それぞれの端末は、sip.conf内で[ホゲホゲ]で記載されたホゲホゲで識別されます。
 +
 + ;全体設定
 + [globals]
 + ;電番の変数を設定しておく。
 + IP_SUFFIX=050
 + ;050を除いた電話番号をそれぞれ記述しておく
 + MYNUMBER_FUSION=XXXXXXXX
 + MYNUMBER_050plus=XXXXXXXX
 +
 + [default]
 + ;家の電話に着信したら、内線200番、201番を両方共鳴らす
 + exten => ${MYNUMBER_FUSION},1,Dial(SIP/200&SIP/201)
 + ;電話に出なかったら、200番の留守電に保存
 + exten => ${MYNUMBER_FUSION},2,Voicemail(200)
 + exten => ${MYNUMBER_FUSION},3,Hangup()
 + ;話中だったら、200番の留守電に保存
 + exten => ${MYNUMBER_FUSION},102,Voicemail(200)
 + exten => ${MYNUMBER_FUSION},103,Hangup()
 +
 + ;内線番号のシナリオ
 + ;30秒、電話を鳴らす。転送可能な状態で。
 + exten => _20X,1,Dial(SIP/${EXTEN},30,tTr)
 + ;30秒でタイムアウトしたら留守電起動。
 + exten => _20X,2,Voicemail(${EXTEN})
 + exten => _20X,3,Hangup()
 + ;話中だったら留守電起動。
 + exten => _20X,102,Voicemail(${EXTEN})
 + exten => _20X,103,Hangup()
 +
 + ;内線向け留守電の設定。200*とダイヤルすると、内線200番に留守電を残せます。
 + exten => _20X*,1,Answer()
 + exten => _20X*,2,Voicemail(${EXTEN:0:3})
 + exten => _20X*,3,Hangup()
 +
 + ;留守電を聞く用の特番 18番をダイヤルすると、自分の留守電聞くモードになる。
 + exten => 18,1,Goto(vm0,1)
 + exten => vm0,1,Answer()
 + exten => vm0,2,VoicemailMain(${CALLERID(num)})
 + exten => vm0,3,Hangup()
 +
 + ;留守電を聞く用の特番 19番をダイヤルすると、内線番号を選んで留守電聞くモードになる。共用の固定電話への留守電聞くときなど
 + exten => 19,1,Goto(vm1,1)
 + exten => vm1,1,Answer()
 + exten => vm1,2,VoicemailMain()
 + exten => vm1,3,Hangup()
 +
 + ;内線200番用の外線発信設定。FUSION IP-Phone SMARTを用いて発信
 + [context_200]
 + exten => _0.,1,Set(CALLERID(num)=${IP_SUFFIX}${MYNUMBER_FUSION})
 + exten => _0.,n,Set(CALLERID(name)=${IP_SUFFIX}${MYNUMBER_FUSION})
 + exten => _0.,n,Dial(SIP/${EXTEN}@FUSION,120,T)
 + include => default
 +
 + ;内線201番用の外線発信設定。050plusを用いて発信
 + [context_201]
 + exten => _0.,1,Set(CALLERID(num)=${IP_SUFFIX}${MYNUMBER_050plus})
 + exten => _0.,n,Set(CALLERID(name)=${IP_SUFFIX}${MYNUMBER_050plus})
 + exten => _0.,n,Dial(SIP/${EXTEN}@050plus,120,T)
 + include => default
 +
 +
 +さて、なんかよく分かりませんよね…ポイントは、exten => なんです。
 +
 + exten => ダイヤル先番号,優先度,アクション
 +
 +ダイヤル先番号は、正規表現も使用できます。例えば、_0.だと、頭0で始まる任意の電番、_20X だと、頭20にマッチする3桁の番号(200~209)に対応します。優先度は行番号みたいなもん。アクションは、何をするかです。Dial(XXX)だと、()内の番号にダイヤル発信する、ということです。EXTENとかは、システムで用意される変数で、今発信している内線番号が勝手に入れられます。
 +
 +感がいい人は、「あれ?050plus用の着信シナリオが無い?」と気づくかもしれません。050plusの場合は、sip.conf内のregister=>に書いてあるのですよ。一番最後の/201が、着信したら内線201番をコールする、という意味。
 +
 +「じゃあ、FUSIONの方もそう書けばいいじゃん?」と思われるかもしれませんね。これが…FUSIONはその書き方だとうまく呼び出してくれず、050plusは書かないとうまく呼び出されないという謎が。まぁ、今ん所は困ってないのでいいかなと。
 +
 +**features.conf [#r8349c8c]
 +電話転送用のコマンド定義をします
 + [featuremap]
 + blindxfer => #1
 + atxfer => *1
 +電話の途中に#1とか*1ってダイヤルすると、転送モードになります。#1だとブラインド転送、*1だとアテンド転送です。この後メッセージが流れるので、内線番号をダイヤルしてやります。この2種類、どう違うの?
 +-ブラインド転送は、内線回すと、ダイヤル先内線を呼び出します。呼び出した相手が電話を取ると、話中の相手と即時につながります。なので転送した自分は電話を切る。
 +-アテンド転送は、内線回すと、ダイヤル先内線を呼び出します。呼び出した相手が電話を取ると、まず呼び出した自分と話します。「誰々さんから電話だよ-」みたいな。で、自分が電話を切ると相手とつながる。要は会社で普通に使う内線転送のケースですね。
 +
 +**voicemail.conf [#c41ce906]
 +ボイスメール機能(要は留守番電話)の設定を行います。
 + [general]
 + ;録音フォーマット。wav49はサイズが小さいWAVファイル
 + format=wav49
 + ;メールに音声ファイルをつけるかどうか。録音されるとメールが送信されますが、そのメールに録音された音声を添付するかどうか。
 + attach=no
 + ;メール送信元アドレス
 + serveremail=asterisk@example.com
 + ;録音する保存メッセージ数
 + maxmsg=20
 + ;メッセージの秒数
 + maxsecs=60
 + [default]
 + ;メールボックスの設定
 + 200 => 1111,home,phoneusers,,tz=japan
 + 201 => 2222,smartphone,smaphousers,,tz=japan
 +
 +最後のメールボックスの設定、難しいですよね-。
 + メールボックス番号 => パスワード,ユーザ名,メール送信先,,オプション
 +と設定しています。パスワードはそのまま設定しないでね!メール送信先は、録音時にメールを送信する先のアドレスです。すると不在や電波の状態が悪くて着信出来なかった時に、メールで通知してくれるわけですね~。
 +
 +*起動 [#g03767e6]
 + # /etc/init.d/asterisk start
 +で起動します。
 +
 +*自動起動の設定 [#sac0c3d0]
 + # rc-update add asterisk default
 +でブート時に自動起動するようになります。


Front page   Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 9159, today: 1, yesterday: 1
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

奥深き写真の世界への誘い

我思う ゆえに我あり



携帯用QRコード