Asterisk
最近ではAsteriskの情報も少なくなってきました。この記事は自分のための備忘録も兼ねています。ある程度Asteriskの扱いに慣れている方を対象としています。
AsteriskとはIP-PBXなどといいますが、簡単に言うとインターネット電話サーバです。
筆者はインターネットプロバイダのASAHIネットと契約しており、固定IPアドレスと「IP電話C」というサービスを利用しています。050で始まる電話番号が割り当てられます。Asteriskを利用して内線を構築し、外線の発着もできるようにします。
接続情報の設定(sip.conf)
筆者に提供されている接続情報は次のようなものです。
接続情報があるとき、sip.conf
のregister =>
の行にどのように書けばいいかが難しいです。ネット上を散々探し回って見つけた答えがこれです。
register => 電話番号@サービスドメイン:パスワード:ユーザーID@サーバ/電話番号
ファイル全体は下記のようになります。
[general]
externip=123.45.67.89
externhost=example.jp
localnet=192.168.0.0/255.255.255.0
context=default ; Default context for incoming calls. Defaults to 'default'
allowoverlap=no ; Disable overlap dialing support. (Default is yes)
udpbindaddr=0.0.0.0:5060
tcpenable=no ; Enable server for incoming TCP connections (default is no)
tcpbindaddr=0.0.0.0 ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)
transport=udp ; Set the default transports. The order determines the primary default transport.
srvlookup=yes ; Enable DNS SRV lookups on outbound calls
register => 05012345678@asahi-net.or.jp:PASSWORD:USERNAME@xxxxxx.xx.asahi-net.or.jp/05012345678
[authentication]
[basic-options](!) ; a template
dtmfmode=rfc2833
context=from-office
type=friend
[natted-phone](!,basic-options) ; another template inheriting basic-options
directmedia=no
host=dynamic
[public-phone](!,basic-options) ; another template inheriting basic-options
directmedia=yes
[my-codecs](!) ; a template for my preferred codecs
disallow=all
allow=ilbc
allow=g729
allow=gsm
allow=g723
allow=ulaw
[ulaw-phone](!) ; and another one for ulaw-only
disallow=all
allow=ulaw
[asahi-net.or.jp]
type=friend
username=USERNAME
secret=PASSWORD
fromuser=05012345678
fromdomain=asahi-net.or.jp
host=xxxxxx.xx.asahi-net.or.jp
context=outsideline
insecure=port,invite
externip=
は、外から見える自分のサーバーのIPアドレスです。固定IPアドレス契約で割り当てられたアドレスをそのまま記述します。
externhost=
は、自分で取得したドメイン名です。
register =>
の記述と [asahi-net.or.jp]
セクションの書き方が肝です。
ユーザーの設定(user.conf)
次に user.conf
です。例として3つの内線を登録しています。
[general]
fullname = New User
userbase = 6000
hasvoicemail = yes
vmsecret = 1234
hassip = yes
hasiax = yes
hasmanager = no
callwaiting = yes
threewaycalling = yes
callwaitingcallerid = yes
transfer = yes
canpark = yes
cancallforward = yes
callreturn = yes
callgroup = 1
pickupgroup = 1
[200]
type=friend
username=Panasonic
secret=PASSWORDHOGEHOGE
canreinvite=no
host=dynamic
nat=yes
[201]
type=friend
username=ZenFone3
secret=PASSWORDHOGEHOGE
canreinvite=no
host=dynamic
nat=yes
[202]
type=friend
username=alice
secret=PASSWORDHOGEHOGE
canreinvite=no
host=dynamic
nat=yes
一般に、各ユーザーの登録は、次のようになります。
[電話番号]
type=friend
username=人が読みやすい名前
secret=パスワード
canreinvite=no
host=dynamic
nat=yes
username=
は認証とは関係ないようですので、わかりやすい名前を書いておけばいいです。自宅サーバーでの運用ならルーターの内側だと思いますので、nat=yes
が必要になるでしょう。
スマホなどのIP電話アプリに認証情報を登録する際は、[電話番号]
とsecret=パスワード
の設定内容を登録します。
外線対応(extension.conf)
実は筆者も、このあたりは完全に理解していません。
200番台は内線ということにしています。それ以外は外線です。[outsideline]
以降の定義で、外線着信したときは、200番の電話機に廻すようにしています。
[default]
include => stdexten
exten => _200,1,Dial(SIP/${EXTEN})
exten => _200,n,Hangup
exten => _201,1,Dial(SIP/${EXTEN})
exten => _201,n,Hangup
exten => _202,1,Dial(SIP/${EXTEN})
exten => _202,n,Hangup
exten => _1XX,1,Macro(callout-asahi-net.or.jp,${EXTEN})
exten => _00.,1,Hangup
exten => _0N0XXXXXXXX,1,Macro(callout-asahi-net.or.jp,${EXTEN:0:11})
exten => _0ZZXXXXXXX,1,Macro(callout-asahi-net.or.jp,${EXTEN})
[macro-callout-asahi-net.or.jp]
exten => s,1,Dial(SIP/${ARG1}@asahi-net.or.jp,,tT)
exten => s,n,Hangup
[outsideline]
exten => 05012345678,1,Dial(SIP/200,20,rt)
exten => 05012345678,n,Hangup
その他
フレッツのひかり電話などのサービスを利用している場合、もしかすると、SIPサーバーで一般的に使用されるUDP/5060のポートがかぶることがありえます。またUDP/5060をそのまま開けておくと、大量の不正アクセスが到来します。不正アクセスといっても、ユーザー設定が脆弱でない限り、たいていはAsteriskサーバが弾いてくれます。でも、鬱陶しいので、ポート番号を標準以外に設定しておくと(気休めですが)多少安全になるでしょう。筆者宅では5060ではなく5600に変更しています。
情報が少ないです
Asteriskサーバを構築しようとしても、ネット上の情報も書籍も少なく、設定に苦労します。
この記事も、これで正しいかどうか、怪しい部分があると思います。詳しい方、もしいらっしゃったら、これでいいかご指導ください。