フレッツ光でひかり電話を契約している場合は、ひかり電話ホームゲートウェイと同一の内部ネットワークに接続しているスマートフォンに AGEPhone などの SIP アプリをインストールすることで固定電話の発着信が行えます。
しかしフレッツ光回線で DS-Lite による IPv4 接続を行う場合は、これができません。DS-Lite の場合はひかり電話ホームゲートウェイに DS-Lite 対応のルータを接続し、そのルーターの内部ネットワーク側に PC やスマートフォンを収容します。しかしこの構成だと、ルーターの内部ネットワークからひかり電話ホームゲートウェイに接続する際に NAT が発生します。SIP は NAT を超えることが難しいため、このような構成の場合は SIP クライアントでひかり電話を利用できません。
そこで OpenWrt で構成した DS-Lite のルータに Asterisk を導入し、SIP の接続を中継する PBX を構成した際の設定をログとして残します。
前提の構成
以下の構成を前提に設定しました。
パッケージのインストール
OpenWrt 19.07.x では Asterisk 16 が利用できるので、今回の構成にあたり次のパッケージを追加しました。
libxml2 libcap libedit libsqlite3 jansson asterisk16 asterisk16-cdr asterisk16-chan-sip asterisk16-pjsip asterisk16-codec-ulaw asterisk16-res-rtp-asterisk asterisk16-codec-gsm asterisk16-format-pcm asterisk16-res-agi
基本的な挙動を内線通話で確認する
ベースとなる設定ファイルは、次のページで配布されている Asterisk 13 向けの設定を用います。
この設定ファイルには、内線番号 201 - 208 で相互に内線通話できる設定例が含まれています。また sip.conf では permit=192.168.0.0/255.255.0.0
が設定されているので、Asterisk は Class C Private IP address からの接続のみを受け入れるように設定されています。
そこで、この設定ファイルを適用し、2台のスマートフォンやタブレットに AGEphone をインストールして相互に内線通話できることを確認しておきます。
AGEphone への設定は次のように行います。
ドメイン = OpenWrt の LAN 側 IPアドレス ユーザID = 201 - 208 のいずれかの番号 認証ID = ユーザIDと同じ パスワード = pass
ひかり電話ホームゲートウェイを使用する設定を追加する
Asterisk 経由で内線通話の発着信が行えることが確認できたら、ひかり電話ホームゲートウェイ経由で外線の発着信を行う設定を追加します。
これも基本的には「Asterisk 13 サンプル設定ファイル」で示されている例を参考に修正するだけの簡単な作業です。
ただし、この設定例を用いると、外線発信の際に 0 発信が必要となるため、たとえば 03-nnnn-nnnn の番号にかける際には 003-nnnn-nnnn とダイヤルしなければなりません。これはスマートフォンの電話帳に登録した番号にひかり電話でかけるときに面倒なので、0 で始まる市外局番はすべて 0 発信なしに掛けられるように設定変更します。
以下には作業記録をざっくりまとめました。
extensions.conf
MYNUMBER1
に はひかり電話の番号に変更する。[defaults]
のexten => _0.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk)
はexten => _0.,n,Dial(PJSIP/${EXTEN}@hikari-trunk)
に変更する。(0 で始まる番号はそのまま、ひかり電話でかけるようにする)
[from-hikari]
は [from-hikari-hgw]
に変更する(他の設定ファイルでも from-hikari-hgw と表記しているため)
pjsip.conf
[hikari-denwa]
のserver_uri=sip:XXX.XXX.XXX.XXX
は、ひかり電話ホームゲートウェイの IP アドレスを記入する。[hikari-denwa]
のclient_uri=sip:X@XXX.XXX.XXX.XXX
は、ひかり電話側の内線番号とひかり電話ホームゲートウェイのIPアドレスを記入する(例:client_uri=sip:7@192.168.x.1
)password=ultrasecret
に、ひかり電話側内線番号の認証パスワードを記入するusername=XXXX
は 0007 のように内線ユーザーIDを記入する。context=from-hikari
はcontext=from-hikari-hgw
に変更する。
sip.conf
[general]
セクションにregister => 7:password@hikari-hgw
を記入する。次のセクションを追加する。(secret, username, fromuser, domain, host は適切に修正する)
[hikari-hgw] context=from-hikari-hgw type=peer secret=XXXXXXXX username=XXXN fromuser=N domain=192.168.X.1 fromdomain=192.168.X.1 host=192.168.x.1 insecure=port,invite disallow=all allow=ulaw dtmfmode=inband
- 201 から 208 の内線番号のパスワードは適切に変更する。