0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

AsteriskでASAHIネットIP電話Cサービスに接続

Asterisk

最近ではAsteriskの情報も少なくなってきました。この記事は自分のための備忘録も兼ねています。ある程度Asteriskの扱いに慣れている方を対象としています。

AsteriskとはIP-PBXなどといいますが、簡単に言うとインターネット電話サーバです。

筆者はインターネットプロバイダのASAHIネットと契約しており、固定IPアドレスと「IP電話C」というサービスを利用しています。050で始まる電話番号が割り当てられます。Asteriskを利用して内線を構築し、外線の発着もできるようにします。

接続情報の設定(sip.conf)

筆者に提供されている接続情報は次のようなものです。

image.png

接続情報があるとき、sip.confregister =>の行にどのように書けばいいかが難しいです。ネット上を散々探し回って見つけた答えがこれです。

register => 電話番号@サービスドメイン:パスワード:ユーザーID@サーバ/電話番号

ファイル全体は下記のようになります。

sip.conf
[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つの内線を登録しています。

user.conf
[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=パスワードの設定内容を登録します。

image.png

外線対応(extension.conf)

実は筆者も、このあたりは完全に理解していません。

200番台は内線ということにしています。それ以外は外線です。[outsideline]以降の定義で、外線着信したときは、200番の電話機に廻すようにしています。

extension.conf
[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サーバを構築しようとしても、ネット上の情報も書籍も少なく、設定に苦労します。

この記事も、これで正しいかどうか、怪しい部分があると思います。詳しい方、もしいらっしゃったら、これでいいかご指導ください。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?