(ページの作成:「== Asterisk(ひかり電話対応)の設定 == 普通に使っている分には、光ルーターがその役目を負っています。 5端末以内であれば、...」) |
|||
(同じ利用者による、間の7版が非表示) | |||
行48: | 行48: | ||
termcapとuuidとJSONとlibxml2とSQLite3がどうとかいうエラーはこれで解決できます。 | termcapとuuidとJSONとlibxml2とSQLite3がどうとかいうエラーはこれで解決できます。 | ||
+ | |||
+ | さて、本題。 | ||
+ | |||
+ | <pre>make | ||
+ | make install | ||
+ | make samples | ||
+ | make config</pre> | ||
+ | |||
+ | 最後の行はもしかしたらいらないかも。 | ||
+ | |||
+ | これでインストールは終了です。 | ||
+ | |||
+ | |||
+ | == 設定 == | ||
+ | |||
+ | まず、ユーザー権限で走らせることにするので、ユーザーとグループを作ります。 | ||
+ | |||
+ | <pre>adduser asterisk</pre> | ||
+ | |||
+ | systemd用のサービスファイルを作ります。 | ||
+ | |||
+ | /etc/systemd/system/asterisk.service | ||
+ | |||
+ | <pre>[Unit] | ||
+ | Description=Asterisk PBX And Telephony Daemon | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | User=asterisk | ||
+ | Group=asterisk | ||
+ | Environment=HOME=/var/lib/asterisk | ||
+ | WorkingDirectory=/var/lib/asterisk | ||
+ | ExecStart=/usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf -U asterisk -G asterisk | ||
+ | ExecStop=/usr/sbin/asterisk -rx 'core stop now' | ||
+ | ExecReload=/usr/sbin/asterisk -rx 'core reload' | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </pre> | ||
+ | |||
+ | 何かおかしいと思ったら、/etc/rc.d/init.d/asteriskを参考しちゃうのね。 | ||
+ | |||
+ | と言う訳で、このファイルを削除(mv /etc/rc.d/init.d/asterisk /etc/rc.d/init.d/.asterisk)。 | ||
+ | |||
+ | 次に、パーミッションの設定をして回ります。 | ||
+ | |||
+ | <pre>chown -R asterisk:asterisk /var/log/asterisk | ||
+ | chown -R asterisk:asterisk /var/spool/asterisk | ||
+ | chown -R asterisk:asterisk /var/lib/asterisk</pre> | ||
+ | |||
+ | 次に、/var/run/asteriskを作っておく方法です。 | ||
+ | |||
+ | CentOS 7になってから、/var/runは再起動すると勝手に消えます。 | ||
+ | |||
+ | このため、消えないように、/usr/lib/tmpfiles.dにそのための設定ファイルを作る必要があります。 | ||
+ | |||
+ | 書式はこんな感じ | ||
+ | |||
+ | <pre>[d:ディレクトリ] [作成するディレクトリ] [4桁パーミッション] [所有ユーザ] [所有グループ] [-:最後に付ける]</pre> | ||
+ | |||
+ | これに従うと、/usr/lib/tmpfiles.d/asterisk.confというファイルを作って | ||
+ | |||
+ | <pre>d /var/run/asterisk 0750 asterisk asterisk -</pre> | ||
+ | |||
+ | と書いておく必要があります。 | ||
+ | |||
+ | また、ライブラリのリロードがいるので、ldconfigを入力しておきましょう。 | ||
+ | |||
+ | この辺で一度再起動しておくと良いカモ。 | ||
+ | |||
+ | 次に、コンフィグファイルを弄ります。以下、/etc/asterisk以下で作業。 | ||
+ | |||
+ | まずは、sip.confを弄ります。 | ||
+ | |||
+ | こんな感じで追加していきます。 | ||
+ | |||
+ | まずはひかり電話の設定。 | ||
+ | |||
+ | [general]に次のように追加します。 | ||
+ | |||
+ | ※@hikari-denwa/5000は、hikari-denwaを使う事と、内線番号(?)が5000番である事を設定しています | ||
+ | |||
+ | <pre>[general] | ||
+ | |||
+ | ; for Hikari Denwa | ||
+ | maxexpirey=3600 | ||
+ | defaultexpirey=3600 | ||
+ | context=default | ||
+ | port=5060 | ||
+ | bindaddr=0.0.0.0 | ||
+ | srvlookup=yes | ||
+ | allowguest=no | ||
+ | disallow=all | ||
+ | allow=ulaw | ||
+ | allow=alaw | ||
+ | allow=gsm | ||
+ | language=jp | ||
+ | localnet=ネットワーク/ネットマスク(192.168.1.1の場合、192.168.1.0/255.255.255.0と記述) | ||
+ | hikarihgw=ひかりルーターのIP | ||
+ | tcpenable=yes | ||
+ | transport=udp,tcp | ||
+ | register => 光ルーターにレジストする番号:パスワード:ユーザー名@hikari-denwa/5000 | ||
+ | ; end for Hikari Denwa | ||
+ | </pre> | ||
+ | |||
+ | この後に、「context=public」の行があるので、;でコメントアウトしましょう。 | ||
+ | |||
+ | <pre>[hikari-denwa] | ||
+ | type=friend | ||
+ | secret=光ルーターに設定したパスワード | ||
+ | port=5060 | ||
+ | username=光ルーターに設定したユーザー名 | ||
+ | defaultuser=光ルーターに設定したユーザー名 | ||
+ | fromuser=光ルーターに設定したユーザー | ||
+ | host=光ルーターのIPアドレス | ||
+ | fromdomain=光ルーターのIPアドレス | ||
+ | context=default | ||
+ | insecure=invite,port | ||
+ | dtmfmode=inband | ||
+ | canreinvite=no | ||
+ | disallow=all | ||
+ | allow=ulaw | ||
+ | callgroup=1 | ||
+ | picupgroup=1 | ||
+ | </pre> | ||
+ | |||
+ | 次に、光ルーターに接続するクライアント(仮に201番号とします)の設定 | ||
+ | |||
+ | <pre>[201] | ||
+ | ; 内線201番の設定 | ||
+ | type=friend | ||
+ | username=内線番号 | ||
+ | defaultuser=内線番号 | ||
+ | secret=パスワード | ||
+ | canreinvite=no | ||
+ | host=dynamic | ||
+ | nat=yes | ||
+ | directmedia=no | ||
+ | qualify=5000 | ||
+ | dtmfmode=rfc2833 | ||
+ | callgroup=1 | ||
+ | pickupgroup=1 | ||
+ | </pre> | ||
+ | |||
+ | クライアントは好きな番号で好きなだけ増やして下さい。 | ||
+ | |||
+ | この状態で、仮起動してみます。 | ||
+ | |||
+ | <pre>/usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf -U asrisk -G asterisk</pre> | ||
+ | |||
+ | 別のコンソールから | ||
+ | |||
+ | <pre>asterisk -r</pre> | ||
+ | |||
+ | として、sip show registryとして、hikari-denwa:5060とかいう行があればOKです。 | ||
+ | |||
+ | あとは、このサーバーに適当なSIPクライアントから接続しましょう。 | ||
+ | |||
+ | おっと。 | ||
+ | |||
+ | systemctl start asterisk | ||
+ | |||
+ | systemctl enable asterisk | ||
+ | |||
+ | を忘れないように。 | ||
+ | |||
+ | === 外からの電話を制限したり === | ||
+ | |||
+ | extensions.confにこんなのを書きましょう。 | ||
+ | |||
+ | <pre>[general] | ||
+ | autofallthrough=yes | ||
+ | writeprotect=no | ||
+ | priorityjumping=no | ||
+ | |||
+ | [globals] | ||
+ | MYNUMBER=自分の電話番号 | ||
+ | |||
+ | [default] | ||
+ | exten => 5000,1,GotoIf($["${CALLERID(NUM)}" = "anonymous"]?10:2) | ||
+ | exten => 5000,2,Dial(SIP/内線番号1&SIP/内線番号2&SIP/内線番号3) | ||
+ | exten => 5000,3,Hungup | ||
+ | exten => 5000,10,playback(ss-noservice) | ||
+ | exten => 5000,11,Hungup | ||
+ | </pre> | ||
+ | これで、列挙した内線番号には非通知では着信しなくなります。 | ||
+ | |||
+ | さらに続き | ||
+ | <pre>exten => _0.,1,Set(CALLERID(num)=${MYNUMBER}) | ||
+ | exten => _0.,2,Set(CALLERID(name)=${MYNUMBER}) | ||
+ | ; 国際電話判定(001で始まる番号は発信不可) | ||
+ | exten => _0.,3,GotoIf($[${EXTEN:0:2} = 00]?international) | ||
+ | ; その他の番号では発信可 | ||
+ | exten => _0.,n,Dial(SIP/${EXTEN}@hikari-denwa,120,T) | ||
+ | ; 拒否 | ||
+ | exten => _0.,n(international),Hangup() | ||
+ | </pre> | ||
+ | これで、001で始まる番号からの発信が出来なくなります。 |
2016年11月5日 (土) 12:22時点における最新版
Asterisk(ひかり電話対応)の設定
普通に使っている分には、光ルーターがその役目を負っています。
5端末以内であれば、直接接続した方が早いです。
それ以上端末が増えた場合や、例えば、非通知着信を無視したい場合などに使うと良いでしょう。
なお、AsteriskはIP PBXと思えばまぁOK。
電話機の交換機みたいなもんです。
インストール
CentOS 7でやっていますが、今回はソースコードからインストールしていますので、どれでも一緒でしょう。
まずは、Asterisk のページからソースをダウンロードしてきます。
今回は、(パッチの絡みもあるので)この辺からasterisk-13.11.2.tar.gzをチョイス。
コンパイル等は、~/asteriskでやります。
まず、ソースの入手
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.11.2.tar.gz
次に、ひかり電話HGWパッチ - VOIP-Info.jp Wikiをダウンロードします。
wget http://ftp.voip-info.jp/asterisk/patch/local/13/chan_sip_hikarihgw.141202-01.patch
次に、asterisk本体を展開。
tar xvzf asterisk-13.11.2.tar.gz
で、パッチをインストールします。
cd asterisk-13.11.2 cp ../chan_sip_hikarihgw.141202-01.patch . patch -p0 < chan_sip_hikarihgw.141202-01.patch
エラー無く終われば前設定は完了。
お約束となっている、configureを実行します。
その前に、入ってないパッケージを入れます。
yum install gcc libtermcap libtermcap-devel newt newt-devel ncurses ncurses-devel libuuid-devel jansson-devel libxml2-devel sqlite-devel
termcapとuuidとJSONとlibxml2とSQLite3がどうとかいうエラーはこれで解決できます。
さて、本題。
make make install make samples make config
最後の行はもしかしたらいらないかも。
これでインストールは終了です。
設定
まず、ユーザー権限で走らせることにするので、ユーザーとグループを作ります。
adduser asterisk
systemd用のサービスファイルを作ります。
/etc/systemd/system/asterisk.service
[Unit] Description=Asterisk PBX And Telephony Daemon After=network.target [Service] User=asterisk Group=asterisk Environment=HOME=/var/lib/asterisk WorkingDirectory=/var/lib/asterisk ExecStart=/usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf -U asterisk -G asterisk ExecStop=/usr/sbin/asterisk -rx 'core stop now' ExecReload=/usr/sbin/asterisk -rx 'core reload' [Install] WantedBy=multi-user.target
何かおかしいと思ったら、/etc/rc.d/init.d/asteriskを参考しちゃうのね。
と言う訳で、このファイルを削除(mv /etc/rc.d/init.d/asterisk /etc/rc.d/init.d/.asterisk)。
次に、パーミッションの設定をして回ります。
chown -R asterisk:asterisk /var/log/asterisk chown -R asterisk:asterisk /var/spool/asterisk chown -R asterisk:asterisk /var/lib/asterisk
次に、/var/run/asteriskを作っておく方法です。
CentOS 7になってから、/var/runは再起動すると勝手に消えます。
このため、消えないように、/usr/lib/tmpfiles.dにそのための設定ファイルを作る必要があります。
書式はこんな感じ
[d:ディレクトリ] [作成するディレクトリ] [4桁パーミッション] [所有ユーザ] [所有グループ] [-:最後に付ける]
これに従うと、/usr/lib/tmpfiles.d/asterisk.confというファイルを作って
d /var/run/asterisk 0750 asterisk asterisk -
と書いておく必要があります。
また、ライブラリのリロードがいるので、ldconfigを入力しておきましょう。
この辺で一度再起動しておくと良いカモ。
次に、コンフィグファイルを弄ります。以下、/etc/asterisk以下で作業。
まずは、sip.confを弄ります。
こんな感じで追加していきます。
まずはひかり電話の設定。
[general]に次のように追加します。
※@hikari-denwa/5000は、hikari-denwaを使う事と、内線番号(?)が5000番である事を設定しています
[general] ; for Hikari Denwa maxexpirey=3600 defaultexpirey=3600 context=default port=5060 bindaddr=0.0.0.0 srvlookup=yes allowguest=no disallow=all allow=ulaw allow=alaw allow=gsm language=jp localnet=ネットワーク/ネットマスク(192.168.1.1の場合、192.168.1.0/255.255.255.0と記述) hikarihgw=ひかりルーターのIP tcpenable=yes transport=udp,tcp register => 光ルーターにレジストする番号:パスワード:ユーザー名@hikari-denwa/5000 ; end for Hikari Denwa
この後に、「context=public」の行があるので、;でコメントアウトしましょう。
[hikari-denwa] type=friend secret=光ルーターに設定したパスワード port=5060 username=光ルーターに設定したユーザー名 defaultuser=光ルーターに設定したユーザー名 fromuser=光ルーターに設定したユーザー host=光ルーターのIPアドレス fromdomain=光ルーターのIPアドレス context=default insecure=invite,port dtmfmode=inband canreinvite=no disallow=all allow=ulaw callgroup=1 picupgroup=1
次に、光ルーターに接続するクライアント(仮に201番号とします)の設定
[201] ; 内線201番の設定 type=friend username=内線番号 defaultuser=内線番号 secret=パスワード canreinvite=no host=dynamic nat=yes directmedia=no qualify=5000 dtmfmode=rfc2833 callgroup=1 pickupgroup=1
クライアントは好きな番号で好きなだけ増やして下さい。
この状態で、仮起動してみます。
/usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf -U asrisk -G asterisk
別のコンソールから
asterisk -r
として、sip show registryとして、hikari-denwa:5060とかいう行があればOKです。
あとは、このサーバーに適当なSIPクライアントから接続しましょう。
おっと。
systemctl start asterisk
systemctl enable asterisk
を忘れないように。
外からの電話を制限したり
extensions.confにこんなのを書きましょう。
[general] autofallthrough=yes writeprotect=no priorityjumping=no [globals] MYNUMBER=自分の電話番号 [default] exten => 5000,1,GotoIf($["${CALLERID(NUM)}" = "anonymous"]?10:2) exten => 5000,2,Dial(SIP/内線番号1&SIP/内線番号2&SIP/内線番号3) exten => 5000,3,Hungup exten => 5000,10,playback(ss-noservice) exten => 5000,11,Hungup
これで、列挙した内線番号には非通知では着信しなくなります。
さらに続き
exten => _0.,1,Set(CALLERID(num)=${MYNUMBER}) exten => _0.,2,Set(CALLERID(name)=${MYNUMBER}) ; 国際電話判定(001で始まる番号は発信不可) exten => _0.,3,GotoIf($[${EXTEN:0:2} = 00]?international) ; その他の番号では発信可 exten => _0.,n,Dial(SIP/${EXTEN}@hikari-denwa,120,T) ; 拒否 exten => _0.,n(international),Hangup()
これで、001で始まる番号からの発信が出来なくなります。