CentOS7

Asterisk13をインストール

AsteriskとはオープンソースのIP-PBX。SIPサーバとも言いますが、要は一般的な電話の機能を提供するソフトウェアです。

利用ポート(デフォルト)

  • UDP 10000~20000
  • UDP 5060
  • UDP 4569
  • TCP 5060~5061

※厳密には空けなくてもよいポートもあるかもしれません。

Asteriskの導入

起動したらSSHで接続します。

「su」で"root"ユーザーになって作業します。

Asteriskインストールの前準備

以下のパッケージをインストールしておきます。

[root@localhost ~]# yum -y update
[root@localhost ~]# yum -y groupinstall 'Development Tools'
[root@localhost ~]# yum -y install ncurses-devel
[root@localhost ~]# yum -y install libuuid-devel
[root@localhost ~]# yum -y install sqlite-devel
[root@localhost ~]# yum -y install libxml2-devel

Asterisk13のダウンロード

Asteriskをwgetでダウンロードします。

[root@localhost ~]# cd /usr/src
[root@localhost ~]# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
[root@localhost ~]# tar xvfz asterisk-13-current.tar.gz

これで13系の最新バージョンをとってきます。

tarを解凍すると私の場合は「asterisk-13.22.0」のディレクトリが展開されました。

タイミングによってマイナーバージョンは異なるので以後のディレクトリは環境によって読み替えてください。

さらに前準備

Asterisk13系ではビルドで必要なパッケージを自動でとってくるスクリプトが用意されてます。(それでも結局configureでエラーが出て個別にパッケージいれる必要が出てきたりするのですが・・)

[root@localhost ~]# cd /usr/src/asterisk-13.22.0/contrib/scripts/
[root@localhost ~]# ./install_prereq install
[root@localhost ~]# ./install_prereq install-unpackaged

これで準備が整いました。

configureする

configureします。

[root@localhost ~]# cd /usr/src/asterisk-13.22.0/
[root@localhost ~]# ./configure

以下のようなアスキーアートがでれば成功です。

configure: Menuselect build configuration successfully completed

               .$$$$$$$$$$$$$$$=..
            .$7$7..          .7$$7:.
          .$$:.                 ,$7.7
       .$7.     7$$$$           .$$77
     ..$$.       $$$$$            .$$$7 
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$       .7$$$$$$$$$$$$$$$$      :$$$.
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.
$$$        $$$   7$$$7  .$$$    .$$$.
$$$$             $$$$7         .$$$.
7$$$7            7$$$$        7$$$
 $$$$$                        $$$
  $$$$7.                       $$  (TM)
   $$$$$$$.           .7$$$$$$  $$
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$
       $$$$$$$$$$$$$$$$.

ちなみに

configureでエラーが出る場合はパッケージが足りてない場合が多いです。内容をググって必要なパッケージを入れましょうよくあるエラーはAsteriskドキュメントのCommon Issuesにまとまってます。Amazon Linuxであれば上記リンクのCentOSを例にやれば大丈夫でしょう。

makeする

準備が整ったのでビルドします。結構時間かかります。

[root@localhost ~]# make

以下のメッセージが出れば成功です

+--------- Asterisk Build Complete ---------+
+ Asterisk has successfully been built, and +
+ can be installed by running:              +
+                                           +
+                make install               +
+-------------------------------------------+

make installする

インストールします。

[root@localhost ~]# make install

以下のメッセージが出れば成功です

+---- Asterisk Installation Complete -------+
+                                           +
+    YOU MUST READ THE SECURITY DOCUMENT    +
+                                           +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample   +
+ configuration files (overwriting any      +
+ existing config files), run:              +
+                                           +
+ For generic reference documentation:      +
+    make samples                           +
+                                           +
+ For a sample basic PBX:                   +
+    make basic-pbx                         +
+                                           +
+                                           +
+-----------------  or ---------------------+
+                                           +
+ You can go ahead and install the asterisk +
+ program documentation now or later run:   +
+                                           +
+               make progdocs               +
+                                           +
+ **Note** This requires that you have      +
+ doxygen installed on your local system    +
+-------------------------------------------+

起動設定

設定ファイルの設定と自動起動スクリプトの生成をします。EC2だとこのtouchが必要です。やらないとmake configが失敗します。

[root@localhost ~]# make samples
[root@localhost ~]# touch /etc/redhat-release
[root@localhost ~]# make config

起動・停止の確認

ここまでできたらAsteriskが起動できることと停止できることを確認します。

[root@localhost ~]# systemctl start asterisk
[root@localhost ~]# systemctl stop asterisk

Asteriskの初期設定

Asteriskの設定で特に重要なものはsip.confとextensions.confの2つです。この2つを設定してあげる必要があります。

  • sip.conf
    • SIPサーバとしての設定を記載する
    • 電話番号ごとの設定(内線番号、ログインパスワードなど)もここに記載する
  • extensions.conf
    • 電話番号ごとの振る舞いを記載する。(電話を鳴らすとか、留守電に転送するとか)

元のファイルの退避

まずは2つのファイルをコピーして退避しておきましょう

[root@localhost ~]# cd /etc/asterisk/
[root@localhost asterisk]# cp -p sip.conf sip.conf.bak
[root@localhost asterisk]# cp -p extensions.conf extensions.conf.bak

sip.confの設定

内線番号3001と3002を使うことを例にサンプルを記載します。1.8系の設定ファイルをベースにしているので要らない設定もあるかもしれませんが、とりあえずバージョン13でも動くことは確認しました。

[root@localhost asterisk]# vi sip.conf
[general]
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=ja
nat=yes
externip=xxx.xxx.xxx.xxx /ElasticIPで取得したグローバルIPを記載
localnet=172.xxx.xxx.xxx/255.255.255.0 /VPCのローカルサブネット範囲を記載

[3001]
type=friend
defaultuser=3001
secret=xxxxxxxx /パスワードを記載
canreinvite=no
host=dynamic
dtmfmode=rfc2833
context=default
qualify=yes
callgroup=1
pickupgroup=1
mailbox=3001

[3002]
type=friend
defaultuser=3002
secret=xxxxxxxx /パスワードを記載
canreinvite=no
host=dynamic
dtmfmode=rfc2833
context=default
qualify=yes
callgroup=1
pickupgroup=1
mailbox=3002

重要なのは"nat=yes"としているところとグローバルIPを指定しているところです。

これを設定しないとうまく動きません。

内線番号側に指定するパスワードはSIPクライアントから接続するときに使います。

extensions.confの設定

こちらは内線30XXについて電話できるように設定します。defaultセクションにviなどで追記してください。

[root@localhost asterisk]# vi extensions.conf
[default]
; Local SIP phones 3000-3099
exten => _30XX,1,GotoIf($["${USEVOICEMAIL}"="YES"]?use-vm)
exten => _30XX,n,Dial(SIP/${EXTEN})
exten => _30XX,n,Hangup
exten => _30XX,n(use-vm),Dial(SIP/${EXTEN},30)
exten => _30XX,n,NoOp(${DIALSTATUS})
exten => _30XX,n,GotoIf($["${DIALSTATUS}"="BUSY"]?vm-rec)
exten => _30XX,n,GotoIf($["${DIALSTATUS}"="NOANSWER"]?vm-rec)
exten => _30XX,n,GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?vm-rec)
exten => _30XX,n,Hangup
exten => _30XX,n(vm-rec),Answer()
exten => _30XX,n,Wait(1)
exten => _30XX,n,Voicemail(${EXTEN})
exten => _30XX,n,Hangup

Asteriskを起動

sip.confとextensions.confを再読込するために起動しましょう。

[root@localhost ~]# systemctl start asterisk

Asterisk CLIに入る

以下のコマンドでCLIに入れます。

[root@localhost ~]# asteirsk -vvvr
Asterisk 13.22.0, Copyright (C) 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
============================================
Connected to Asterisk 13.22.0 currently running on ip-172-xxx-xxx-xxx (pid = xxxxx)
ip-172-xxx-xxx-xxx*CLI>

ちなみにオプションの「v」の数によってデバッグレベルが変わります。「-r」だとデバッグなし、「-vvvvvr」だと最大のデバッグレベルです。

この状態でコンソールを起動すると、SIPクライアント側でレジストや発信/着信が行われた場合に画面に表示されますのでデバッグでも使えます。

SIPクライアントから通話してみる

SIPクライアントの選定

SIPクライアントは、Windows、Mac、Linux、iOS、Androidなどあらゆるプラットフォームで出てます。

メジャーどころで私が使ったことのあるものだと以下があります

  • Zoiper
  • Linphone
  • CSipSimple
  • Sipdroid
  • X-Lite

また、電話のテストをするには2台必要です(自動応答だけなら1台でもいいですが)。上記のSIPクライアントどれかインストールしてみてください。

SIPクライアントの設定

SIPクライアントによって設定項目の名前は異なりますが、以下の3つを入力すればよいです。

  • username(内線番号)
    • 3001、3002
  • password
    • sip.confで設定した内線番号ごとのパスワード
  • Domain、Host
    • サーバに付与されているグローバルIPアドレス

うまくいけばログインが成功している旨が出るはずです。Asterisk CLIにもメッセージが出ていると思います。 ダメならCLIのメッセージを見てみましょう。メッセージが表示されないならネットワーク的に到達できていないと思われます。

Zoiperの設定例

AndroidのZoiperでやった場合の設定例です。隠してあるところにはグローバルIPを入れましょう。

01.jpg

02.jpg

03.jpg

04.jpg

「Account is ready」となっているのが成功している証拠です。

05.jpg

電話をかけてみる

3001から3002に電話をかけてみましょう。うまくいけばリンギングして、電話をとれば音声通話ができるはずです。ダメならメッセージを見てみましょう。ちなみに、うまくいかない場合はSIPクライアントを変えてみるのも手です。経験上SIPクライアントは相性問題があり、サーバの設定は問題なくてもSIPクライアントによって使えない場合があります。

※ はじめはZoiperでなくLinphoneでやってたのですが、Android版のLinphoneでは着信できるけど発信できないという事象に遭遇しました。


添付ファイル: file05.jpg 111件 [詳細] file04.jpg 100件 [詳細] file03.jpg 105件 [詳細] file02.jpg 94件 [詳細] file01.jpg 98件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-10 (月) 09:15:13 (1541d)