PCリンクスでは、パソコンの設定・修理から組込み機器の受託開発まで承ります。

 

Raspberry Pi でAsteriskを試す

8回目の今回は、Raspberry PiにAsteriskをインストールします。

Asteriskは米国のデジウム社(Digium, Inc.)が開発している、オープンソースのIP-PBXのソフトウェアです。
※VPNと一緒に使うと、ひかり電話を世界中のどこからでも、使うことができるようになります。
※携帯電話を接続するネットワーク環境によっては、音声の遅れにより通話に支障がでる可能性があります。

ace6d7c29417e5fa5be490fc2f9824b7 300x238 Raspberry Pi でAsterisk

 

 SoftEther VPN とAsteriskをインストールしたRaspberry Pi は、LAN上に配置します。

 消費電力は2W程度で電気代も気にならないレベルです。

Asteriskの導入事例は、 見積もり2億円のIP電話を820万円で構築した秋田県大館市・・・ を参照ください。
この記事のさらに詳しい解説は、 反響が大きかった大舘市の事例 を参照ください。

 

Asteriskのインストール

最初に、Asteriskのグループ/ユーザーを登録します。

[root@ms03 ~]# groupadd -g 5060 asterisk
[root@ms03 ~]# useradd -g 5060 -u 5060 -d /var/lib/asterisk -s /sbin/nologin asterisk

ソースコードの格納先ディレクトリへ移動し、最新のLTS版のAsterisk 11.3.0-rc1のソースをダウンロードします。
※Asteriskからひかり電話を使用するためには、ソースコードにパッチを当てる必要があります。
※asterisk-11.2.1 では、コンパイル時にエラーが発生し、正しくビルドできませんでした。

[root@ms03 ~]# cd /usr/local/src
[root@ms03 ~]# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.3.0-rc1.tar.gz

ダウンロードした圧縮ファイルを展開します。

[root@ms03 src]# tar zxvf asterisk-11.3.0-rc1.tar.gz

ソース格納先ディレクトリへ移動します。

[root@ms03 src]# cd asterisk-11.3.0-rc1

 

Asteriskの日本語対応

日本語メッセージに対応するために、2個のソースファイルにパッチを当てます。
パッチを当てるファイルは、下記のファイルになります

  • app_voicemail.c – ボイスメールメニューの日本語音声ファイル対応
  • say.c        - 音声再生時の日本語音声ファイル対応

日本語パッチを適用するために、パッチファイルをダウンロードします。
まだ、11.3.0に対応したパッチが用意されていないので11.2.1のパッチファイルをダウンロードします。

[root@ms03 asterisk-11.3.0-rc1]# wget http://ftp.voip-info.jp/asterisk/patch/11.2.1/app_voicemail.c.121107-01.patch
[root@ms03 asterisk-11.3.0-rc1]# wget http://ftp.voip-info.jp/asterisk/patch/11.2.1/say.c.121107-01.patch

最初に、ボイスメールメニューの日本語音声ファイル対応パッチを適用します。

[root@ms03 asterisk-11.3.0-rc1]# patch -p0 < app_voicemail.c.121107-01.patch
patching file apps/app_voicemail.c
Hunk #1 succeeded at 7472 (offset 14 lines).
Hunk #2 succeeded at 7520 (offset 14 lines).
Hunk #3 succeeded at 8286 (offset 14 lines).
Hunk #4 succeeded at 9118 (offset 14 lines).
Hunk #5 succeeded at 9888 (offset 14 lines).

次に、音声再生時の日本語音声ファイル対応パッチを適用します。

[root@ms03 asterisk-11.3.0-rc1]# patch -p0 < say.c.121107-01.patch
patching file main/say.c

 

ひかり電話対応ルーター用のパッチ対応

次に、ひかり電話対応ルーター(PR-200NE)にAsteriskを接続するためのパッチを適用します。

[root@ms03 asterisk-11.3.0-rc1]# wget http://ftp.voip-info.jp/asterisk/patch/local/11/channels/chan_sip_rt200ne.121107-01.patch

ダウンロードしたパッチを適用し、PR-200NEを使用できるようにします。

[root@ms03 asterisk-11.3.0-rc1]# patch -p0 < chan_sip_rt200ne.121107-01.patch
patching file channels/chan_sip.c
Hunk #3 succeeded at 18526 (offset 388 lines).
Hunk #4 succeeded at 21655 (offset 393 lines).
Hunk #5 succeeded at 21667 (offset 393 lines).
Hunk #6 succeeded at 31293 (offset 415 lines).
Hunk #7 succeeded at 31767 (offset 415 lines).
Hunk #8 succeeded at 33239 (offset 415 lines).
patching file channels/sip/include/sip.h
Hunk #1 succeeded at 107 (offset 1 line).

mp3に対応するためのスクリプトファイルを実行します。

[root@ms03 asterisk-11.3.0-rc1]# ./contrib/scripts/get_mp3_source.sh
A    addons/mp3
A    addons/mp3/MPGLIB_TODO
A    addons/mp3/mpg123.h
A    addons/mp3/layer3.c
A    addons/mp3/mpglib.h
A    addons/mp3/decode_ntom.c
A    addons/mp3/interface.c
A    addons/mp3/MPGLIB_README
A    addons/mp3/common.c
A    addons/mp3/huffman.h
A    addons/mp3/tabinit.c
A    addons/mp3/Makefile
A    addons/mp3/README
A    addons/mp3/decode_i386.c
A    addons/mp3/dct64_i386.c
リビジョン 199 をエクスポートしました。

 

ソースコードのコンパイル

日本語対応パッチとPR-200NE用のパッチを適用したので、configure , make , make install コマンドを実行します。

[root@ms03 asterisk-11.3.0-rc1]# ./configure
[root@ms03 asterisk-11.3.0-rc1]# make
[root@ms03 asterisk-11.3.0-rc1]# make install

サンプルファイルをインストールします。

[root@ms03 asterisk-11.3.0-rc1]# make samples

asteriskの自動起動ファイルを設定します。

[root@ms03 asterisk-11.3.0-rc1]# make config

asteriskの自動起動設定を確認しておきます。

[root@ms03 asterisk-11.3.0-rc1]# chkconfig asterisk --list
asterisk                  0:off  1:off  2:on   3:on   4:on   5:on   6:off

/etc/init.d/asterisk を開き、起動時のメッセージの表示内容を変更します。(任意)

[root@ms03 asterisk-11.3.0-rc1]# pico /etc/init.d/asterisk
#! /bin/sh
# $Id: rc.debian.asterisk 379790 2013-01-21 20:40:13Z mjordan $
#
# Mon Jun 04 2007 Iñaki Baz Castillo <ibc@in.ilimit.es>
# - Eliminated SAFE_ASTERISK since it doesn't work as LSB script (it could require a independent "safe_asterisk" init script).
# - Load and use the standar "/lib/lsb/init-functions".
# - Added "--oknodo" to "start-stop-daemon" for compatibility with LSB:
#   http://www.linux-foundation.org/spec/refspecs/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
#
# Thu Nov 17 2005 Gregory Boehnlein <damin@nacs.net>
# - Reversed behavior of LD_ASSUME_KERNEL=2.4.1
# - Added detailed failure messages
#
# Sun Jul 18 2004 Gregory Boehnlein <damin@nacs.net>
# - Added test for safe_asterisk
# - Changed "stop gracefully" to "stop now"
# - Added support for -U and -G command line options
# - Modified "reload" to call asterisk -rx 'reload'

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=asterisk
DESC="Asterisk IP-PBX"
# Full path to asterisk binary
DAEMON=/usr/sbin/asterisk
ASTVARRUNDIR=/var/run/asterisk
ASTETCDIR=/etc/asterisk
TRUE=/bin/true

### BEGIN INIT INFO
# Provides:             asterisk
# Required-Start:       $network $syslog $named $local_fs $remote_fs
# Required-Stop:        $network $syslog $named $local_fs $remote_fs
# Should-Start:         dahdi misdn lcr wanrouter mysql postgresql
# Should-Stop:          dahdi misdn lcr wanrouter mysql postgresql
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Asterisk PBX
# Description:          the Asterisk Open Source PBX
### END INIT INFO

set -e

if ! [ -x $DAEMON ] ; then
        echo "ERROR: $DAEMON not found"
        exit 0
fi

if ! [ -d $ASTETCDIR ] ; then
        echo "ERROR: $ASTETCDIR directory not found"
        exit 0
fi

# Use the LSB standard functions for services management
. /lib/lsb/init-functions

# Allow configuration overrides in /etc/default/asterisk
CONFIG0=`readlink $0 || :` # readlink returns 1 when something isn't a symlink
if [ "$CONFIG0" = "" ]; then
        CONFIGFILE=/etc/default/`basename $0`
else
        CONFIGFILE=/etc/default/`basename $CONFIG0`
fi
[ -r $CONFIGFILE ] && . $CONFIGFILE

case "$1" in
  start)
        # Check if Asterisk is already running.  If it is, then bug out, because
        # starting up Asterisk when Asterisk is already running is very bad.
        VERSION=`${DAEMON} -rx 'core show version' 2>/dev/null || ${TRUE}`
        if [ "`echo $VERSION | cut -c 1-8`" = "Asterisk" ]; then
                echo "Asterisk is already running.  $0 will exit now."
                exit 0
        fi

        log_begin_msg "Starting $DESC: $NAME"
        if [ ! -d $ASTVARRUNDIR ]; then
                mkdir -p $ASTVARRUNDIR
        fi
        if [ $AST_USER ] ; then
                ASTARGS="-U $AST_USER"
                chown $AST_USER $ASTVARRUNDIR
        fi
        if [ $AST_GROUP ] ; then
                ASTARGS="$ASTARGS -G $AST_GROUP"
                chgrp $AST_GROUP $ASTVARRUNDIR
        fi
        if [ $ALTCONF ]; then
                ASTARGS="$ASTARGS -C \"$ALTCONF\""
        fi
        if [ "x$COREDUMP" = "xyes" ]; then
                ASTARGS="$ASTARGS -g"
        fi
        if [ "0$MAXLOAD" -gt "0" ]; then
                ASTARGS="$ASTARGS -L $MAXLOAD"
        fi
        if [ "0$MAXCALLS" -gt "0" ]; then
                ASTARGS="$ASTARGS -M $MAXCALLS"
        fi
        if [ "0$VERBOSITY" -gt "0" ]; then
                for i in `seq 1 $VERBOSITY`; do
                        ASTARGS="$ASTARGS -v"
                done
                # -v implies -f, so we override that implicit specification here
                ASTARGS="$ASTARGS -F"
        fi
        if [ "x$INTERNALTIMING" = "xyes" ]; then
                ASTARGS="$ASTARGS -I"
        fi
        if [ "x$TEMPRECORDINGLOCATION" = "xyes" -o "x$TMPRECORDINGLOCATION" = "xyes" ]; then
                ASTARGS="$ASTARGS -t"
        fi
        if test "x$COLOR" = "xno" ; then
                ASTARGS="$ASTARGS -n"
        fi
        # "start-stop-daemon --oknodo" returns 0 even if Asterisk was already running (as LSB expects):
        start-stop-daemon --start --oknodo --exec $DAEMON -- $ASTARGS
        log_end_msg $?
        ;;
  stop)
        log_begin_msg "Stopping $DESC: $NAME"
        # "start-stop-daemon --oknodo" returns 0 even if Asterisk was already stopped (as LSB expects):
        start-stop-daemon --stop --oknodo --exec $DAEMON
        log_end_msg $?
        ;;
  reload)
        echo "Reloading $DESC configuration files."
        $DAEMON -rx 'module reload' > /dev/null 2> /dev/null
        ;;
  restart|force-reload)
        $0 stop
        sleep 2  # It needs some time to really be stopped.
        $0 start
        # "restart|force-reload" starts Asterisk and returns 0 even if Asterisk was stopped (as LSB expects).
        ;;
  status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
       ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
        exit 1
        ;;
esac

asteriskのインストールが完了しましたので、ダウンロードファイルを削除しておきます。

[root@ms03 asterisk-11.3.0-rc1]# cd ..
[root@ms03 src]# rm -f asterisk-11.3.0-rc1.tar.gz

 

日本語音声ファイルのインストール

最後に、日本語音声ファイルをインストールします。
Asterisk 11用の音声ファイルは、2013年3月現在、用意されていませんので1.6用のものを使用します。

/var/lib/asterisk/soundsディレクトリへ移動します。

[root@ms03 ~]# cd /var/lib/asterisk/sounds

日本語音声ファイルをダウンロードします。

[root@ms03 sounds]# wget ftp://ftp.voip-info.jp/asterisk/sounds/1_6/asterisk-sound-jp_16_pre.tar.gz

ダウンロードした圧縮ファイルを展開します。

[root@ms03 sounds]# tar zxvf asterisk-sound-jp_16_pre.tar.gz

展開に使用した圧縮ファイルを削除しておきます。

[root@ms03 sounds]# rm -f asterisk-sound-jp_16_pre.tar.gz

追加した日本語音声ファイルを使用するために、/etc/asterisk/asterisk.confを修正します。
[options]セクションにlanguageprefix=yesを有効にします。(コメント扱いをやめます)

[root@ms03 sounds]# pico /etc/asterisk/asterisk.conf
languageprefix = yes            	; Use the new sound prefix path syntax.

 

サンプル設定ファイルの作成

Asteriskに標準添付されている設定ファイルは、わかりにくいのでシンプルな設定ファイルを使用するするようにします。
ここでは、オリジナルのAsteriskディレクトリをバックアップしておき、設定ファイル保存先で、サンプルの設定ファイルをダウンロードして展開し、オリジナルファイルを上書きします。

/etcディレクトリへ移動します。

[root@ms03 ~]# cd /etc

Asteriskディレクトリをasterisk.bakというディレクトリ名でバックアップしておきます。

[root@ms03 etc]# cp –r asterisk asterisk.bak

asteriskディレクトリへ移動し、サンプル設定ファイルをダウンロードし、展開します。

[root@ms03 etc]# cd asterisk
[root@ms03 asterisk]# wget http://ftp.voip-info.jp/asterisk/conf/conf-sample-1.6_01.tar.gz
[root@ms03 asterisk]# tar zxvf conf-sample-1.6_01.tar.gz

サンプルの設定ファイルの展開が出来ましたので、ダウンロードした圧縮ファイルを削除しておきます。

[root@ms03 asterisk]# rm -f conf-sample-1.6_01.tar.gz

rootディレクトリへ戻ります。

[root@ms03 asterisk]# cd

 

Asteriskのパーミッション設定

Asteriskで使用するディレクトリとファイルの所有者・グループをasteriskへ変更します。

[root@ms03 ~]# chown -R asterisk. /var/run/asterisk
[root@ms03 ~]# chown -R asterisk. /var/lib/asterisk
[root@ms03 ~]# chown -R asterisk. /var/log/asterisk
[root@ms03 ~]# chown -R asterisk. /var/spool/asterisk
[root@ms03 ~]# chown -R asterisk. /usr/lib/asterisk
[root@ms03 ~]# chown -R asterisk. /etc/asterisk

Asteriskで使用するディレクトリとファイルのパーミッションを変更します。

[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /var/run/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /var/lib/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /var/log/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /var/spool/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /usr/lib/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /etc/asterisk

Asteriskの設定ファイルを変更します。
[directories]のastrundir => /var/run/asterisk に変更します。
最終行の[options]に、runuser = asterisk と rungroup = asterisk の設定を追加します。

[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk

[options]
languageprefix=yes
runuser = asterisk
rungroup = asterisk

ここで、一旦、サーバを再起動させて、asteriskが正しく起動することを確認しておきます。

[root@ms03 ~]# reboot

RaspberryPi Asterisk 01 273x300 Raspberry Pi でAsterisk

 

 

 Asteriskの起動時のメッセージを確認します。

起動時、/var/run/asteriskディレクトリ内に、asterisk.ctlとasterisk.pidファイルが作成されることを確認しておきます。

[root@ms03 ~]# ll /var/run/asterisk/
srwxr-xr-x 1 asterisk asterisk 0  3月 16 15:03 asterisk.ctl
-rw-r--r-- 1 asterisk asterisk 5  3月 16 15:03 asterisk.pid

 

Asteriskの動作確認

自動起動することが確認できたので、次はasterisk -vvvrと入力して、Asteriskのコンソールが起動することを確認します。

[root@ms03 ~]# asterisk -vvvr
Asterisk 11.3.0-rc1, Copyright (C) 1999 - 2012 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.
=========================================================================
Running as user asterisk
Running under group asterisk
Connected to Asterisk 11.3.0-rc1 currently running on ms03 (pid = 2141)
ms03*CLI>?
!              acl            ael            agent          agi
aoc            calendar       cc             cdr            cel
channel        cli            confbridge     config         core
data           database       devstate       dialplan       dnsmgr
dundi          event          fax            features       file
group          hangup         help           http           iax2
indication     keys           local          logger         manager
minivm         mixmonitor     module         moh            no
originate      parkedcalls    phoneprov      presencestate  pri
queue          realtime       reload         rtcp           rtp
say            sip            stun           timing         udptl
ulimit         unistim        voicemail
ms03*CLI> sip show ?
channel        channels       channelstats   domains        history
inuse          mwi            objects        peer           peers
registry       rt200ne        sched          settings       subscriptions
tcp            users          user
ms03*CLI> quit
Asterisk cleanly ending (0).
Executing last minute cleanups

 

ログファイルの対応

Asteriskのインストール時に作成された/var/log/asteriskディレクトリは、RAMディスク上に配置されていますので、電源オフ(または、OS再起動)で消えてしまいます。rc.localに追記し、OS起動時、自動でディレクトリを作成するようにします。

[root@ms03 ~]# pico /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# 起動時、自動的にディレクトリを作成
mkdir -p /var/log/ConsoleKit
mkdir -p /var/log/samba
mkdir -p /var/log/asterisk
mkdir -p /var/log/asterisk/cdr-csv
mkdir -p /var/log/asterisk/cdr-custom
mkdir -p /var/log/chkrootkit
mkdir -p /var/log/fsck
mkdir -p /var/log/apt
mkdir -p /var/log/ntpstats
mkdir -p /var/log/paco
chown -R asterisk. /var/log/asterisk
chown root.ntp /var/log/ntpstats
chown root.adm /var/log/samba

# 起動時、自動的にLastlogとwtmp,btmpファイルの空ファイルを作成
touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp
chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp

(略)

 

使用しないドライバのロード停止

使用しないドライバ(func_iconv.so , pbx.ael.so)をロードしないように変更します。
※ログファイルに、noticeログが記録され、目障りとなりますので、事前に対応しておきます。

[root@ms03 ~]# pico /etc/asterisk/modules.conf
[modules]
; loader.c: Error loading module func_iconv.so: libiconv.so.2: cannot open shared object file: No such file or directory
noload => func_iconv.so
;
;pbx_ael.c: AEL load process: parsed config file name /etc/asterisk/extensions.ael.
noload => pbx_ael.so

 

sip.conf ファイルの設定

ひかり電話対応ルータに認証するための設定や、SIPユーザを登録するためのファイルとなります。
子機(ユーザ)の追加、削除、変更はこのファイルを編集することで実現します。

sip.confファイルを変更する前に、初期状態のファイルをバックアップしておき、サンプル設定を修正します。

[root@ms03 ~]# cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.org
[root@ms03 ~]# pico /etc/asterisk/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
localnet=192.168.0.0/255.255.255.0
nat=force_rport

;相手先の存在確認を行う
qualify=yes

videosupport=no

;iPhoneでの待ち受け対応
tcpenable=yes
transport=udp,tcp

;PR-200NE のプライベートIPアドレスの指定
rt200ne=192.168.1.1

;ひかり電話対応ルータの内線設定
register => 7:ルータへ登録したパスワード:0007@hikari-denwa/200

[201]
type=friend
defaultuser=201
secret=内線201のパスワード
canreinvite=no
host=dynamic
dtmfmode=inband
callgroup=1
pickupgroup=1
;mailbox=201

[202]
type=friend
defaultuser=202
secret=内線202のパスワード
canreinvite=no
host=dynamic
dtmfmode=inband
callgroup=1
pickupgroup=1
;mailbox=202

[203]
type=friend
defaultuser=203
secret=内線203のパスワード
canreinvite=no
host=dynamic
dtmfmode=inband
callgroup=1
pickupgroup=1
;mailbox=203

; PR-200NE ひかり電話の設定
[hikari-denwa]
type=friend
secret=ルータへ登録したパスワード
port=5060
defaultuser=0007
fromuser=7
host=192.168.1.1
fromdomain=192.168.1.1
context=default
insecure=invite,port
dtmfmode=inband
canreinvite=no
disallow=all
allow=ulaw
callgroup=1
picupgroup=1
session-expires=300
session-minse=300

 

PR-200NE(ルータ)の設定

ルータの電話設定 - 内線設定 を選択して、Asteriskをひかり電話の子機(SIPクライアント)として登録します。
下記の設定のユーザIDとパスワードはメモしておきます。Asteriskのsip.conf設定で使用します。

RaspberryPi Asterisk 02 300x246 Raspberry Pi でAsterisk

 

 内線番号 : 7
 端末属性 : 音声専用端末
 MACアドレス : Raspberry Pi(サーバ)のMACアドレス
 ユーザID : 0007
 パスワード : パスワードを設定します

 

ひかり電話対応ルーター(PR-200NE)へのRegister確認

ひかり電話対応ルーターへAsteriskを接続する準備が整いましたので、正しく認証されることを確認します。

修正した”sip.conf”ファイルをAsteriskに読み込ませるために、ここで一旦、Asteriskを再起動させます。

[root@ms03 ~]# service asterisk restart
[ ok ] Stopping Asterisk IP-PBX: asterisk.
[ ok ] Starting Asterisk IP-PBX: asterisk.

次に、ひかり電話対応ルータのsipサーバに、Asteriskが認証されていることを確認します。
Asterisk管理コンソールを使用して、”sip show registry” コマンドで認証状況を確認することができます。
※asterisk -vvvvr の ”v” 数がログの多さの指定となります。

[root@ms03 ~]# asterisk -vvvvr
Asterisk 11.3.0-rc1, Copyright (C) 1999 - 2012 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.
=========================================================================
Running as user asterisk
Running under group asterisk
Connected to Asterisk 11.3.0-rc1 currently running on ms03 (pid = 4114)
ms03*CLI> sip show rt200ne
RT-200NE at ..
- 192.168.1.1
ms03*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time
hikari-denwa:5060                       N      7                 3585 Registered           Sat, 16 Mar 2013 15:20:21
1 SIP registrations.
ms03*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport ACL Port     Status      Description                
201/201                   192.168.0.xxx                            D   a             1088     OK (102 ms)
202/202                   (Unspecified)                            D   a             0        UNKNOWN     
203/203                   (Unspecified)                            D   a             0        UNKNOWN                      
hikari-denwa/0007         192.168.1.1                                  a             5060     OK (5 ms)                              
7 sip peers [Monitored: 3 online, 4 offline Unmonitored: 0 online, 0 offline]

 

外線発信の設定

Asteriskでは、外線発信の設定を”extensions.conf”ファイルに記述します。
設定ファイル格納先ディレクトリへ移動し、オリジナルの設定ファイルをバックアップした後、extensions.confを修正します。

[root@ms03 ~]# cd /etc/asterisk/
[root@ms03 asterisk]# cp extensions.conf extensions.conf.org
[root@ms03 asterisk]# pico extensions.conf

extensions.conf 2 Raspberry Pi でAsterisk

 

VPN接続でAsterisk

スマホ(au EVO3D)を使用して、自宅(または職場)のVPNサーバ(SoftEther VPN)に接続します。
※スマホ(EVO3DやiPhone)からの接続は、L2TP/IPsecでの接続となります。

Android端末のVPN接続設定は、 Android からの接続方法 を参照ください。

Raspberry Pi VPN EVO3D 01 168x300 Raspberry Pi でAsterisk

 

 

 VPN接続時は、接続先のネットワークリソースにアクセスできます。

 sambaサーバが稼動していれば、ファイル共有が可能です。

VPN接続が完了したら、SIPアプリ(3CXPhone)を起動します。
接続先 , ユーザIDとパスワード情報等を設定しAsteriskに接続すると、内線電話として認識されます。

Raspberry Pi VPN EVO3D 02 168x300 Raspberry Pi でAsterisk

 

 

 ひかり電話を利用して外線への通話が可能です。

 内線同士の通話は、無料となります。

 

以上で、「Raspberry Pi でAsteriskを試す」を終了します。

コメント

コメント(3) “Raspberry Pi でAsterisk”

  1. たか

    はじめまして。現在AsteriskとAndroidでのひかり電話内線化に挑戦中です。
    Asteriskサーバーは構築できたのですが、Raspberry Piが面白そうだったので、注文したところです。
    記事と同じように、AsteriskサーバとSoftether VPNを動かそうとしてこのサイトにたどり
    着いたのですが、Raspberry Piでの通話安定性はどうですか?サーバーとしての能力が
    足りているのかどうかを心配していたので、動作安定性について教えて頂けると助かります。

    • コメントありがとうございます。
      当方も、まだ構築したばかりでして、的確な回答ができない状況です。
      1.Raspberry Piのハードウェアとしての安定性について
      Raspberry Piは、1GHzにオーバークロックしている状態でも、安定動作していますよ。
      ただし、夏場の高温時に、安定動作するかちょと心配ですね。放熱対策が必要かも知れません。
      2.サーバとしての能力について
      サーバとしての能力は、これから評価していく予定です。
      3.VPN接続時の通話品質について
      携帯電話からひかり電話を利用する場合は、携帯電話会社のネットワークに大きく依存するものと思います。
      ちなみに、auの3G回線(EVO3D)でVPN接続時、LANの帯域は 300Kbits/sec くらいでした。

      よろしくお願いいたします。

      • たか

        早速有難うございます。
        確かに夏場はきつそうですね。Raspberry Piが届くのが4月中旬になりそうなので、
        それから環境構築してみて、また分からないことがあったら質問させて頂く
        かもしれませんので、よろしくお願いします。