ページへ戻る
印刷
Gentoo Linuxな生活/Asteriskの設定をする
をテンプレートにして作成 ::
Nest Of Hawk
xpwiki
:Gentoo Linuxな生活/Asteriskの設定をする をテンプレートにして作成
開始行:
2017/6/26追記
*Asteriskのインストール
**Asteriskのパッケージインストール
Asteriskは、GentooのPortageに登録されています。なので、US...
net-misc/asterisk alsa curl doc freetds gtalk http ilbc ...
そして、以下のコマンドを実行します。
# emerge asterisk asterisk-extra-sounds asterisk-moh-ops...
**日本語音声ファイルのインストール
Asteriskをインストールすると、全て英語の音声です。例えば...
*設定
050plusはスマホ用の直通番号、FUSION IP-Phone SMARTは家の...
Asteriskの設定ファイルは、/etc/asteriskの配下に格納されて...
**暗号化通信のために、TLSキーを作る
SIPには、暗号化の仕組みがあります。
-SIPトランスポートのTLSレイヤ
-RTPの暗号化版。SRTP。
050plusでは、TLS+SRTPで通信します。TLSで通信するためには...
[[AsteriskのGithubから、証明書を作るスクリプトast_tls_cer...
# mkdir /etc/asterisk/keys
# ast_tls_cert -C example.com -O "Example Company" -d /e...
これで作成したキー(/etc/asterisk/keysディレクトリの下に作...
# chown -R asterisk.asterisk /etc/asterisk/keys
# chmod 700 /etc/asterisk/keys
# cd /etc/asterisk/keys
# chmod 600 *
下手に参照されないように、asteriskさんしかアクセス出来な...
**asterisk.conf
Asteriskの全体を設定するファイルです。以下の設定を追加し...
defaultlanguage = ja
デフォルトの言語プレフィックスです。
**rtp.conf
音声チャネルを転送する、RTPストリームのポート番号を指定し...
[general]
rtpstart=10000
rtpend=10009
10ポートも空けといてやれば十分でしょう。
**sip.conf
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.3...
;FUSION IP-Phone SMARTの例
register => SIPアカウント:SIPアカウントパスワード@smart....
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番を固定電話(代表番号)とします。自宅ネットワーク内で...
-201番はスマホとします。外に持ちだしても使用するので、SIP...
200番、201番の設定にmailboxを指定しているのは、留守番電話...
**extensions.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_...
exten => _0.,n,Set(CALLERID(name)=${IP_SUFFIX}${MYNUMBER...
exten => _0.,n,Dial(SIP/${EXTEN}@FUSION,120,T)
include => default
;内線201番用の外線発信設定。050plusを用いて発信
[context_201]
exten => _0.,1,Set(CALLERID(num)=${IP_SUFFIX}${MYNUMBER_...
exten => _0.,n,Set(CALLERID(name)=${IP_SUFFIX}${MYNUMBER...
exten => _0.,n,Dial(SIP/${EXTEN}@050plus,120,T)
include => default
さて、なんかよく分かりませんよね…ポイントは、exten => な...
exten => ダイヤル先番号,優先度,アクション
ダイヤル先番号は、正規表現も使用できます。例えば、_0.だと...
感がいい人は、「あれ?050plus用の着信シナリオが無い?」と気...
「じゃあ、FUSIONの方もそう書けばいいじゃん?」と思われるか...
**features.conf
電話転送用のコマンド定義をします
[featuremap]
blindxfer => #1
atxfer => *1
電話の途中に#1とか*1ってダイヤルすると、転送モードになり...
-ブラインド転送は、内線回すと、ダイヤル先内線を呼び出しま...
-アテンド転送は、内線回すと、ダイヤル先内線を呼び出します...
**voicemail.conf
ボイスメール機能(要は留守番電話)の設定を行います。
[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
最後のメールボックスの設定、難しいですよね-。
メールボックス番号 => パスワード,ユーザ名,メール送信先,,...
と設定しています。パスワードはそのまま設定しないでね!メー...
*起動
# /etc/init.d/asterisk start
で起動します。
*自動起動の設定
# rc-update add asterisk default
でブート時に自動起動するようになります。
*設定変更
MVNOのSIMを導入し、IIJmioに変更したところ、どうもモバイル...
[general]
nat=force_rport,comedia
qualify=10000
で、各端末側の設定からは、nat/qualifyの設定は削除しました...
終了行:
2017/6/26追記
*Asteriskのインストール
**Asteriskのパッケージインストール
Asteriskは、GentooのPortageに登録されています。なので、US...
net-misc/asterisk alsa curl doc freetds gtalk http ilbc ...
そして、以下のコマンドを実行します。
# emerge asterisk asterisk-extra-sounds asterisk-moh-ops...
**日本語音声ファイルのインストール
Asteriskをインストールすると、全て英語の音声です。例えば...
*設定
050plusはスマホ用の直通番号、FUSION IP-Phone SMARTは家の...
Asteriskの設定ファイルは、/etc/asteriskの配下に格納されて...
**暗号化通信のために、TLSキーを作る
SIPには、暗号化の仕組みがあります。
-SIPトランスポートのTLSレイヤ
-RTPの暗号化版。SRTP。
050plusでは、TLS+SRTPで通信します。TLSで通信するためには...
[[AsteriskのGithubから、証明書を作るスクリプトast_tls_cer...
# mkdir /etc/asterisk/keys
# ast_tls_cert -C example.com -O "Example Company" -d /e...
これで作成したキー(/etc/asterisk/keysディレクトリの下に作...
# chown -R asterisk.asterisk /etc/asterisk/keys
# chmod 700 /etc/asterisk/keys
# cd /etc/asterisk/keys
# chmod 600 *
下手に参照されないように、asteriskさんしかアクセス出来な...
**asterisk.conf
Asteriskの全体を設定するファイルです。以下の設定を追加し...
defaultlanguage = ja
デフォルトの言語プレフィックスです。
**rtp.conf
音声チャネルを転送する、RTPストリームのポート番号を指定し...
[general]
rtpstart=10000
rtpend=10009
10ポートも空けといてやれば十分でしょう。
**sip.conf
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.3...
;FUSION IP-Phone SMARTの例
register => SIPアカウント:SIPアカウントパスワード@smart....
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番を固定電話(代表番号)とします。自宅ネットワーク内で...
-201番はスマホとします。外に持ちだしても使用するので、SIP...
200番、201番の設定にmailboxを指定しているのは、留守番電話...
**extensions.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_...
exten => _0.,n,Set(CALLERID(name)=${IP_SUFFIX}${MYNUMBER...
exten => _0.,n,Dial(SIP/${EXTEN}@FUSION,120,T)
include => default
;内線201番用の外線発信設定。050plusを用いて発信
[context_201]
exten => _0.,1,Set(CALLERID(num)=${IP_SUFFIX}${MYNUMBER_...
exten => _0.,n,Set(CALLERID(name)=${IP_SUFFIX}${MYNUMBER...
exten => _0.,n,Dial(SIP/${EXTEN}@050plus,120,T)
include => default
さて、なんかよく分かりませんよね…ポイントは、exten => な...
exten => ダイヤル先番号,優先度,アクション
ダイヤル先番号は、正規表現も使用できます。例えば、_0.だと...
感がいい人は、「あれ?050plus用の着信シナリオが無い?」と気...
「じゃあ、FUSIONの方もそう書けばいいじゃん?」と思われるか...
**features.conf
電話転送用のコマンド定義をします
[featuremap]
blindxfer => #1
atxfer => *1
電話の途中に#1とか*1ってダイヤルすると、転送モードになり...
-ブラインド転送は、内線回すと、ダイヤル先内線を呼び出しま...
-アテンド転送は、内線回すと、ダイヤル先内線を呼び出します...
**voicemail.conf
ボイスメール機能(要は留守番電話)の設定を行います。
[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
最後のメールボックスの設定、難しいですよね-。
メールボックス番号 => パスワード,ユーザ名,メール送信先,,...
と設定しています。パスワードはそのまま設定しないでね!メー...
*起動
# /etc/init.d/asterisk start
で起動します。
*自動起動の設定
# rc-update add asterisk default
でブート時に自動起動するようになります。
*設定変更
MVNOのSIMを導入し、IIJmioに変更したところ、どうもモバイル...
[general]
nat=force_rport,comedia
qualify=10000
で、各端末側の設定からは、nat/qualifyの設定は削除しました...
ページ名: