4,758
回編集
差分
編集の要約なし
=大前提の注意!=
・このページではAsterisk、ヤマハ NVR500、ひかり電話を組み合わせます<br>
・契約上の問題、接続承認等は各自で行ってください<br>
・何を言ってるのかわからない人はやってはいけません<br>
=条件=
Asterisk 20.x.x、libunbound付でコンパイル。ベースはDebian。<br>
Asteriskの設定ファイルのベースは [[Asterisk_20_サンプル設定ファイル]]<br>
NVR500 Rev.11.00.43<br>
===参考===
NVR500でなくともRTXシリーズでSIP-NATが使える機種ならば同様の設定でひかり電話に収容してAsteriskが動作できます。<br>
ただしRTX系はアナログポートを持たないのでAsteriskのATA代わりに使用することはできません。
=目論見=
・NVR500の内線としてIP電話機を接続<strong>できません</strong><br>
・NVR500のアナログポートはAsteriskの内線(SIPエンドポイント)に<strong>なれます</strong><br>
そこで今回の目論見では呼制御はAsteriskに全て任せます。その上でNVR500のアナログポートをAsteriskの内線として収容します。要するにATAとして使おうという話です。こうすれば物理FAXをAsteriskに収容することもできますし、黒電話機をAsteriskで使うこともできます。<br>
<<******************|NAT|*********ひかり電話
===光回線===[ONU]---[NVR500]---LAN---[Asterisk]
| | | | 内線**|****>>
| +----[IP Phone]内線
|
| Asteriskの内線(ATAとして動作)
+--analog---[phone/fax]
NVR500はいい加減古いのですが、この使い方ならAsteriskを活用できそうですし、市場では中古で安いのが出回っているのでAsteriskで遊びたい向きには最適です。この先、アナログ搭載の新製品は出なさそうな気もしますし。おそらくですがNVR510も同じ方法で使えると思います。<br>
余談ですが中古でNVR500買った方が新品のATA買うより安いし、DP対応してるしでATA買うよりこっちの方がいいんじゃ?<br>※もしかしてNVR500をB2BUAみたいに使う手段ってあります?知ってる人がいたら教えてください。<br><br>最終的にこういう接続になります。 ===光回線===[ONU]---[NVR500]-----[Asterisk Server] LAN2 <**PPPoE**>NAT(masquarade) Internet <**DHCP**>NAT/SIP-NAT ひかり電話Asteriskが入っているサーバはインターネット接続も、ひかり電話接続もNVR500に対して投げる/受けるかたちとなります。
=ひかり電話情報の取得=
Default gateway: デフォルトゲートウェイ
これをメモかキャプチャして保存しておいてください。Asteriskの設定で必要になります。<br>
この情報、要するにひかり電話端末に対するプロビジョン情報で機器類(まあAsteriskとか)の再起動毎に取得が必要なのかと思ってましたが、そんなことはなく基本的に変わらないようなので自動化しない方針にします。なのでもし発着信ができないような状態になった場合には再度この手順を行って設定情報を確認してください。<br>
情報が取得できたらNGNを使わないに設定してNVRを再起動します。
# ngn type lan2 off
=NVR500の設定=
以下の前提でNVR500を設定します。<br>
・NGN機能は使わない<br>
・ヤマハのSIP-NATを使う<br>
・AsteriskサーバのIPアドレスは固定(例示では192.168.200.250とします)<br>
ひかり電話への経路情報を設定します。先ほどメモした情報を元に以下のように設定します。
# ip route ネットワークとサブネットマスク gateway ゲートウェイ
ISP接続がある場合、そちらがデフォルトルートとして使用されるので、ひかり電話のネットワークへの経路を明示(静的)指定する必要があります。<br>
AsteriskはNVR500をデフォルトルート(インターネット接続等にも)として使用しているのならば、電話のトラフィックもNVR500に投げるので、NVR500内部で経路が振り分けられるため、Asteriskサーバ側で経路を意識する必要がなくなります。
==NAT(マスカレード設定)==
# nat descriptor type 2000 masquerade
SIPは使うに設定します。アナログポート関連の設定は後で。
# sip use on
==セキュリティ関連情報==
ここで解説している設定でAsteriskはNVR500の『後ろ』にあるものとしています。インターネット接続もNAT(マスカレード)で接続しているものとしています。グローバルIPアドレスを固定し、Asteriskをインターネット側に出しているような場合には以下の点に注意してください。
*ヤマハのSIP-NATは5060ポート固定のため5060番のトランスポートを開けています
*Asteriskが5060を「開けて」いるため固定IP(グローバル)で外に出していると外から5060が見えます
*5060を外から使用しない場合にはPPに対して5060ブロックフィルタを用いてください
通常のインターネット接続でNATを使用している場合、AsteriskはPPのNATビハインドにあるので通常は注意する必要はありません。ですが、外->内に対して5060を静的マスカレードしている場合にはSIPに対するセキュリティを施してください。もっともこの構成を従前から使用している場合には対策済みかと思います。<br>
LAN2のDHCPで取得したIPアドレスは、ひかり電話のIPアドレスのため、このアドレスに到達できるのは、ひかり電話からだけです。このため、それ以外の外(インターネット等)からは到達できませんので通常は対策不要のはずです。PPのアドレスとLAN2のDHCPアドレスは関係ありません(関係しないので明示的に経路を設定しました)。
=Asterisk(PJSIP)の設定=
トランクの設定ファイルは1ファイルとし、pjsip_trunk_hikari-nvr.confとしています。各セクションは以下のように書きます。<br>
注意点としてAsteriskはlibunbound付でコンパイルするか、ローカルDNSの解決能力を持たせてください。いわゆるntt-ほげドメインの解決が必要になります。ここではlinunbound付として設定しています。ほげドメインの解決が必要になります。ここではlibunbound付として設定しています。
==トランスポート==
5060用のトランスポートを書きますが他に5060のトランスポートがある場合にはそれを利用してもかまいません。
local_net = 192.168.0.0/16
==AOR==
[hikari-nvr]
type = aor
contact = sip:取得したSIPサーバのアドレス
==IDENTIFY==
identifyはIPアドレスだけなのでシンプルです。
[hikari-nvr]
type = identify
endpoint = hikari-nvr
match = 取得したSIPサーバのアドレス
==REGISTER==
認証情報は不要なので単にREGISTERするだけです。
[hikari-nvr]
type = registration
server_uri = sip:取得したSIPドメイン
client_uri = sip:自分の電話番号@取得したSIPドメイン
==ENDPOINT==
endpointではSIP 5060のトランスポートを明示指定します。contextは着信用(incoming)にしてあります。DTMFモードはinbandです。認証情報が無いのでこちらもシンプルです。
[hikari-nvr]
type = endpoint
from_domain = 取得したSIPドメイン
aors = hikari-nvr
==/etc/hosts==
取得したSIPサーバのIPアドレス 取得したSIPドメイン
インターネット接続にNVR500を使用し、NVR500をDNSサーバとして使っている場合(まあこの場合が多いのでしょうが)にはNVR500にDNSエントリとして登録すればlinunboundなしでも使えると思います。にはNVR500にDNSエントリとして登録すればlinunboundなしでも使えると思います。例えば dns static a 取得したドメイン SIPサーバのIPアドレスのようにNVR500に登録すれば、DNSサーバとしてNVR500を使用することでlibunboundなしでも解決できると思います。
==pjsip.conf==
まずrportの設定を確認してください。
トランク設定ファイル(ここではpjsip_trunk_hikari-nvr.conf)を別ファイルにした場合には以下のようにincludeします。
#include "pjsip_trunk_hikari-nvr.conf"
気付いている人もいるかもしれませんが、NVR500用の設定はサンプル設定ファイルにこっそり混ぜてあるRTX用のテンプレートと同じものです。そもそもやり方はRTXと同じです。
=Asterisk再起動と確認=
NVR500とAsteriskを設定したら再起動すればたぶん大丈夫なはずです。以下のようにREGISTERを確認します。
Objects found: 1
こんな感じでRegisterdになっていればOKです。<br><br>何をやったかというと、こういうことで ひかり電話 =====[ONU]-----[NVR500]-----[Asterisk] NAT/SIP-NAT <--------------------NVR500のひかり電話機能を使わず、NATとSIP-NATを使ってLAN内のAsteriskをひかり電話のネットワークへ出した(IPv4)わけです。
=発着信=
;
; グローバル設定(変数類)
;外線着信させる内線番号(カンマ区切り)
RINGPHONES=201,202
CIDとか落ち番がおかしい場合は連絡ください。考えますので。<br>サンプル設定ファイルを使用していない場合には、サンプル設定ファイルを参考にしてください。着信は自局番号に対する番号で落ちてきます。発信時は自局番号をPPIに設定する必要があります。
=謎&お悩み=
ちょっと懸念していることがあります。それはヤマハのSIP-UAが「どこ」に居るのかです。<br>
NGNを使うに設定していると、NVR500内のSIP-UA、要はボイスのUAが応答するのでアナログポートの電話が鳴ります。要はNGNオンの状態だとNVR500が網に対してREGISTERしています。UA、ボイスのUAが応答するのでアナログポートの電話が鳴ります。要はNGNオンの状態だとNVR500が網に対してREGISTERしています。<br>
ところがNGNをオフに設定、NVR500を再起動した場合に、過去、網に対して行ったREGISTERが生きているようで(網が覚えている)、NGNオフであっても着信でき、電話が鳴るという現象が観測されました。たぶんこういうことです。
今回の設定ではSIP-NATを使って外からの呼制御(5060)は内側のAsteriskに飛ばしています。ではその時、SIP-UAはどこに居るのか?です。NATデスクリプタの後ろに居て、明示的に設定されたデスクリプタ外で存在しているのならば問題はありません。今のところこの動作はうまくいっているようなので(Asteriskに飛ぶ)、目論見通りSIP-NATでAsteriskが使えていますが、SIP-UAは'A'の位置で制御をガメることはないのかが気になっています。時間経過で様子見していますが、今のところは大丈夫そうなのですが、SIPを使いつつ、ひかり電話の機能だけオフにするという設定がない(NGNオフだけども)のでちょっと気になっています。おかしな挙動を発見した場合には教えてください。<br>
おそらくsip use offにすれば完全にオフになるのですが、今回はアナログポートをATA代わりに使いたいのでオフにできないのです。アナログポートを持たないRTX等であればそれでもかまわないのですが、NVR500にはアナログ付いてますから単にルータとして使うのはもったいないじゃないですか。
=アナログポートを使う=
触ったのが久々すぎて設定がさっぱりわかりません。設定例がありました![[YAMAHA RT57i]] いや~助かります。誰だよこれ書いてくれたの。<br>
inbound_auth/password = c1a0e843d15fb8c9c6067fc099a302d5
aor/qualify_frequency = 0
analog supplementary-service pseudo call-waiting
analog extension dial prefix port=1 sip server=20001
sip server 20001 192.168.200.250:5070 register udp sip:phone4@192.168.200.250 phone4 c1a0e843d15fb8c9c6067fc099a302d5
あたりまえですがユーザ名(エンドポイント名)やパスワード、IPアドレスは自分の環境にあわせて書いてください。<br>
※これだけだと、たぶんナンバーディスプレイとかでトラブるかも。うちにナンバーディスプレイ付のデバッグ用電話機がないもんで・・・<br>※RT57iと同様にFXOポートはAsteriskから使えないと思います<br><br>設定が完了している状態では *CLI> pjsip show contacts Contact: <Aor/ContactUri..............................> <Hash....> <Status> <RTT(ms)..> ========================================================================================== Contact: hikari-nvr/sip:118.xxx.xxx.xxx 327f198732 NonQual nan Contact: phone1/sip:phone1@192.168.200.240:50803;rinsta 8be6a609b0 Avail 11.260 Contact: phone4/sip:phone4@192.168.200.1:5060 e8f6c69c7f NonQual nan こんな感じでPJSIPのcontactsに各エンドポイントが表示されるはずです。hikari-nvrがトランク、phone1は普通の電話機(ソフトフォン)、phone4がNVR500のアナログポート1です。 =そんなこんなで=この接続方法には前日談があります。[https://note.com/tsq/n/n54ffb5edf451 たかはしのnote] に書いてありますので詳しい話はそちらで。<br>もともとRTX+Asteriskでやってたのですが、NVR500を使っている人も少なくないのでは?というのとNVR500のアナログ(FXS)ポートが活用できるはずということで試してみたわけです。