Help us understand the problem. What is going on with this article?

Raspberry PiとAsteriskでIP電話システムの構築(その1)

More than 3 years have passed since last update.

Raspberry PiとAsteriskを使用して自宅の電話をIP電話化したときのメモ
ここでは、Raspberry PiのインストールからAsteriskのインストール~発信の確認までに関する内容を記述します。

【用意】

  • Raspberry Pi Model B
  • microSD 16G class10
  • microSD->SD変換アダプタ
  • LANケーブル
  • auの充電器
  • 適当なWindowsマシン

※HDMIケーブルが無い為、sshで接続

【構築環境】

  • Raspbian (Kernel version 3.18)
  • Asterisk 13.5.0

【手順】

OSのインストール

Rasbianを入手して、Win32 Disk ImagerでダウンロードしたRasbianを解凍して、microSDに焼きます。

書き込みが完了するとそのままRaspberry PiにSDカードを差し込むだけでOSを読み込みます。

Asteriskのインストール

LANケーブルを下記のように接続します。

【Windowsマシン】
   |
 LANケーブル
   |
  【Hub】
   |
 LANケーブル
   |
【Raspberry Pi】

コマンドプロンプトで「ipconfig」を実行して使用しているPCのIPアドレスを確認します。自分のPCは192.168.0.18でした。

teratermでRaspberry Piに接続するために
Raspberry PiのIPアドレスを探します。

192.168.0.1
192.168.0.2
192.168.0.3

・ 
といった具合に探します。自分は192.168.0.19で見つかりました。
Nmapなど接続されている機器のIPアドレスを探してくれるソフトもあります。

AsteriskのインストールはAsterisk 13 - VOIP-Info.jp Wikiを参照。
「yum install」の箇所を「apt-get install」に置き換えてパッケージをインストールすれば問題なくできます。

IPアドレスの設定

/etc/network/interfacesファイル編集

- iface eth0 inet manualをコメント
- 下記のように設定を変更。これでRaspberry PiのIPアドレスが142.11.0.23固定になります。
  - iface eth0 inet static
  - address 142.11.0.23
  - network 142.11.0.0
  - netmask 255.255.0.0
  - broadcast 142.11.255.255
  - gateway 142.11.0.1
  • reboot実行。
  • 再起動後、ifconfig実行してIPアドレスが反映されていれば成功

ユーザー作成

sip.confのgeneralセクションに下記の内容を追記します。

ast_user201、passwordha201の箇所はSIPのユーザー名とパスワードです。
必ずコピペで終わらず、ユーザー名とパスワードを変更してください。
ユーザー名、パスワードはランダム英数字15文字以上にすることを強くおすすめします。

参考サイト:ランダム文字列ジェネレーター

sip.conf
[general]
 ・
(省略)
 ・
[ast_user201]
type=friend
defaultuser=ast_user201
secret=passwordha201
context=default
canreinvite=no
host=dynamic
dtmfmode=rfc2833

AsteriskのCLIを起動して、sip.confを再読み込みするためにsip reloadを実行します。

root@(none):/home/pi# asterisk -r vvvvvc
(none)*CLI> sip reload

ソフトフォンの設定

先ほど作成したユーザーで接続するためにSIPソフトフォンを導入します
X-LiteZoiperなどSIPソフトフォンをインストールします。

今回はAndroid版Zoiperを使用します。

Config -> Accounts -> Add account を選択して
Manual configuration -> SIP を選択します。
sip.confで追加したユーザーの設定値を入力します。

- Account name       :任意
- Host               :142.11.0.23
- User name          :ast_user201
- Password           :passwordha201
- Authentication user:ast_user201
- Caller ID          :(任意)

最後にSaveで保存します。

「Account is Ready」表示があれば接続成功です。

Asterisk側で接続の確認をとる場合
Raspberry Pi側でAsteriskのCLIを起動して、sip show peersを実行します。

root@(none):/home/pi# asterisk -r vvvvvc
(none)*CLI> sip show peers

Host欄に接続しているマシンのIPアドレスが表示すれば接続成功です。
無題.png

ダイヤルプラン作成

電話の発着信時の挙動(ダイヤルプラン)を設定します。

extensions.conf
[default]
include => demo
 ・
(省略)
 ・
exten => 1290,1,Playback(queue-thankyou)

AsteriskのCLIを起動して先ほど編集したextensions.confを再読み込みするためにdialplan reloadを実行します。

root@(none):/home/pi# asterisk -r vvvvvc
(none)*CLI> dialplan reload

発信確認

1290をダイヤルすると英語で
「Thank you for your なんちゃら」と英語のアナウンスが流れれば成功です

内線通話

おまけで内線ユーザーをもう1つ作成して、2者間通話をします。

sip.confを編集してSIPユーザーをもう1つ追加します。
しつこいようですが必ずユーザー名とパスワードを変更してください。
ユーザー名、パスワードはランダム英数字15文字以上にすることを強くおすすめします。

sip.conf
[general]
 ・
(省略)
 ・
[ast_user202]
type=friend
defaultuser=ast_user202
secret=passwordha202
context=default
canreinvite=no
host=dynamic
dtmfmode=rfc2833

続いてダイヤルプランを追加します。

extensions.conf
[default]
include => demo
 ・
(省略)
 ・
exten => 1290,1,Playback(queue-thankyou)

exten => 201,1,Dial(SIP/ast_user201,30,r)
exten => 202,1,Dial(SIP/ast_user202,30,r)

もう1つスマホ端末またはPCなどを使用してユーザー ast_user202 のREGISTをします。

AsteriskのCLIを起動して、sip.confとextensions.confを再読み込みします。

root@(none):/home/pi# asterisk -r vvvvvc
(none)*CLI> sip reload
(none)*CLI> dialplan reload

SIPユーザーの一覧を表示します。
sip.confで追加したユーザーのHost欄に接続しているマシンのIPアドレスが表示すれば接続成功です。

(none)*CLI> sip show peers

ユーザー ast_user201 でREGISTした端末から202を発信してast_user202 に着信がかかること
ユーザー ast_user202 でREGISTした端末から201を発信してast_user201 に着信がかかること
ができれば成功です。

内線同士で通話ができると一気に楽しくなります。

hasudon7171
Twitterで静かにつぶやいてます @hasudon7171
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした