Ubuntu24.04にAsterisk18をインストール

そもそも

ネットで調べても古い記事しか出てきません。さらにAsteriskとかいう相当マニアックなシステムの構築方法なんか親切に教えてくれるサイトなどありません。

なので初心者でもわかりやすくAsteriskを簡単に導入、運用する方法をまとめてみました。

Asteriskとは

AsteriskはIP電話回線を構築するシステムです。

IP電話とは簡単に言うと皆様の職場にある内線電話の事です。

職場の電話で別の部署なり課に電話をするときに、3桁ないし4桁の番号を打ち込んで電話をかけると思います。この時に通話に使う電話機がIP電話機です。

このIP電話システムを誤自宅で運用するためのシステムがAsteriskです。

誤家庭界隈の皆様方の環境に一逸的に構築されている拠点間VPNを活用して長距離間を簡単に電話接続することが可能になります。

Asterisk18のビルド

今回使用するのはAsterisk18です。本当は一番新しいAsterisk22を使いたかったのですが、うまく動きませんでした。

user@SIP-PBX:~$ wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18.26.2.tar.gz
user@SIP-PBX:~$ tar -zxvf asterisk-18.26.2.tar.gz
user@SIP-PBX:~$ cd asterisk-18.26.2
user@SIP-PBX:~$ ./contrib/scripts/install_prereq install
user@SIP-PBX:~$ ./configure --with-jansson-bundled
user@SIP-PBX:~$ make -j4
user@SIP-PBX:~$ sudo make install
user@SIP-PBX:~$ sudo make samples # 初期の設定ファイル等がインストールされる

Asterisk18の設定

pjsip.confの設定

SIPサーバーに関する設定や内線電話(SIPクライアント)からの認証情報を設定します。今回は内線番号6001,6002,6003を設定してみました。

(/etc/asterisk/pjsip.confの末尾に追記)

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0

[6001]
type=endpoint
context=from-internal
disallow=all
allow=ulaw
auth=6001
aors=6001
rewrite_contact = yes # 6001がNAT環境下の場合、必要。

[6001]
type=auth
auth_type=userpass
password=6001 #パスワード
username=6001 #ユーザー名

[6001]
type=aor
max_contacts=10

[6002]
type=endpoint
context=from-internal
disallow=all
allow=ulaw
auth=6002
aors=6002
rewrite_contact = yes # 6002がNAT環境下の場合、必要。

[6002]
type=auth
auth_type=userpass
password=6002 #パスワード
username=6002 #ユーザー名

[6002]
type=aor
max_contacts=10

[6003]
type=endpoint
context=from-internal
disallow=all
allow=ulaw
auth=6003
aors=6003
rewrite_contact = yes # 6003がNAT環境下の場合、必要。

[6003]
type=auth
auth_type=userpass
password=6003 #パスワード
username=6003 #ユーザー名

[6003]
type=aor
max_contacts=10

extensions.confの設定

内線電話(SIPクライアント)からの発着信時のルールをここに記述します。

(/etc/asterisk/extensions.confの末尾に追記)

[from-internal]

exten = 100,1,Answer()
same = n,Wait(1)
same = n,Playback(hello-world)
same = n,Hangup()

# 6001がコールされたらSIPの6001を呼び出す
exten = 6001,1,Dial(PJSIP/6001,30,r)
same = n.Hangup()

# 6002がコールされたらSIPの6002を呼び出す
exten = 6002,1,Dial(PJSIP/6002,30,r)
same = n.Hangup()

# 6003がコールされたらSIPの6003を呼び出す
exten = 6003,1,Dial(PJSIP/6003,30,r)
same = n.Hangup()

Asterisk18のサービス起動

ネットの記事のやり方だとsystemdへの登録がうまくいかず、起動しなかったのでserviceファイルを作成して直接登録させます。

(/etc/systemd/system/asterisk.serviceを作成して下記内容を追加)

[Unit]
Description=Asterisk PBX and telephony daemon
Documentation=man:asterisk(8)
Wants=network.target
After=network.target

[Service]
Type=simple
#User=asterisk
#Group=asterisk
Environment=HOME=/var/lib/asterisk
WorkingDirectory=/var/lib/asterisk
ExecStart=/usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf
ExecStop=/usr/sbin/asterisk -rx 'core stop now'
ExecReload=/usr/bin/asterisk -rx 'core reload'

# safe_asterisk emulation
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

systemctlを実行する

user@SIP-PBX:~$ sudo systemctl daemon-reload
user@SIP-PBX:~$ sudo systemctl enable asterisk
user@SIP-PBX:~$ sudo systemctl start asterisk

まとめ

Asteriskの導入方法は以上になります。

今回は手元にip電話機が無かったのでスマホのsipアプリで検証してみましたが、おそらくip電話機でもうまくいくかと思われます。

スマホやパソコンでIP電話しまくってみた動画も撮ったのでみてください。

コメント