Asterisk+NVR500

提供: VoIP-Info.jp
2024年8月3日 (土) 17:34時点におけるTakahashi (トーク | 投稿記録)による版 (NAT(マスカレード設定))
移動先: 案内検索

AsteriskとNVR500を組み合わせて使おうという計画。

大前提の注意!

・このページではAsterisk、ヤマハ NVR500、ひかり電話を組み合わせます
・いずれもメーカー/ベンダー/キャリアに問い合わせてはいけません
・接続する技術的な観点のみで書いています
・契約上の問題、接続承認等は各自で行ってください
・何を言ってるのかわからない人はやってはいけません

目論見

そもそもNVR500は、ひかり電話に対応しているので挿すだけで(いやまあ設定は要るけど)、別途VoIPアダプタを使わなくてもアナログ電話が使えますし何ならISDN(サ終だけど)もつながるので家庭やスモールビジネスならそのままで十分なんであえて変な使い方をしないでしょうよという長ったらしい説明はあるのですが、Asteriskユーザとしては面白くないです。
そこで以下のような目論見で接続します。

 ===光回線===[ONU]---[NVR500]---LAN---[Asterisk]
                         |       |
                         |       +----[IP Phone]
                         |
                         +--analog---[phone/fax]

そんなんで出来るやろ!と思われるかもしれませんが、実は普通にはできません。
・そもそもAsteriskはNVR500の内線にはなれません
・NVR500の内線としてIP電話機を接続できません
・NVR500のアナログポートはAsteriskの内線(SIPエンドポイント)になれます
いったいどういうことかというと、NVR500は外部のSIPサーバに対してREGISTERする能力はりますが、自身がSIPサーバのように内線をIPで収容するふるまいは持っていないということです。ただヤマハのIP内線機能があるのですが、これはSIPではありません。以前調べた範囲ではMGCPを使ってたと判断できたのですが、今はどうなっているかわかりません。
そこで今回の目論見では呼制御はAsteriskに全て任せます。その上でNVR500のアナログポートをAsteriskの内線として収容します。要するにATAとして使おうという話です。こうすれば物理FAXをAsteriskに収容することもできますし、黒電話機をAsteriskで使うこともできます。

   <<******************|NAT|*********ひかり電話 
 ===光回線===[ONU]---[NVR500]---LAN---[Asterisk]
                         | 内線**|****>>
                         |       +----[IP Phone]内線
                         |
                         +--analog---[phone/fax]

NVR500はいい加減古いのですが、この使い方ならAsteriskを活用できそうですし、市場では中古で安いのが出回っているのでAsteriskで遊びたい向きには最適です。この先、アナログ搭載の新製品は出なさそうな気もしますし。おそらくですがNVR510も同じ方法で使えると思います。

ひかり電話情報の取得

あらかじめ注意しておきますが、NVR500の設定類はコマンドで行っています。GUIからもできるかもしれませんがGUIの解説はしません。
まずNGNオン、LAN2をDHCPでIPアドレス取得にします。この状態でアナログポートは、ひかり電話の電話機として動くはずです。ようするにひかり電話契約アリの設定と同じはずです。

# ngn type lan2 ntt
# ip lan2 address dhcp

一旦、NVR500を再起動してからDHCPの状態を確認します。

# show status dhcpc

以下のような情報が表示されるはずです。

Interface: LAN2 primary
            IP address: 自分のIPアドレス/30(おそらく通常は/30マスク)
           DHCP server: DHCPサーバのIPアドレス
       Remaining lease: 3hours 59min. 56secs.
      (type) Client ID: (01) クライアントID
         SIP Server[1]: SIPサーバのIPアドレス
       Vender Specific: 210
           MAC address: MACアドレス
            Tel number: 03xxxxxxxx(自分の電話番号)
            SIP domain: SIPドメイン
            HGW server: [ここは気にする必要なし]
       Static Route[1]: ネットワークとサブネットマスク gateway ゲートウェイ
Common information
       Default gateway: デフォルトゲートウェイ

これをメモかキャプチャして保存しておいてください。Asteriskの設定で必要になります。
情報が取得できたらNGNを使わないに設定してNVRを再起動します。

# ngn type lan2 off

NVR500の設定

以下の前提でNVR500を設定します。
・ヤマハのSIP-NATを使う
・AsteriskサーバのIPアドレスは固定(例示では192.168.200.250とします)
・NVR500はSIP-NATルータとしてだけふるまい呼制御には関わらない(はず)

LAN2(WAN)の設定

# ip lan2 address dhcp
# ip lan2 rip send off
# ip lan2 rip receive off
# ip lan2 nat descriptor 2000
# ngn type lan2 off

LAN2のアドレスはDHCPで取得し、RIPは送受信とも禁止。LAN2はNATを使用し、その番号は2000。LAN2でNGN機能は使用しない。

経路情報の設定

ひかり電話への経路情報を設定します。先ほどメモした情報を元に以下のように設定します。

# ip route ネットワークとサブネットマスク gateway ゲートウェイ

NAT(マスカレード設定)

# nat descriptor type 2000 masquerade
# nat descriptor address outer 2000 primary
# nat descriptor sip 2000 on
# nat descriptor masquerade static 2000 1 192.168.200.250 udp 5060
# nat descriptor masquerade static 2000 2 192.168.200.250 udp 10000-11000

ちょっと注意が必要な点として、ヤマハのSIP-NATはポート5060にしか効かない点です(Asteriskで5060のトランスポートを用意する必要がある)。このNATデスクリプタではSIP-NATを使用し、静的NATでSIP(5060)とRTP(UDP10000-11000)はLAN側のAsterisk(192.168.200.250)の飛ばすようにしています。

Asterisk(PJSIP)の設定

トランクの設定ファイルは1ファイルとし、pjsip_trunk_hikari-nvr.confとしています。各セクションは以下のように書きます。
注意点としてAsteriskはlibunbound付でコンパイルするか、ローカルDNSの解決能力を持たせてください。いわゆるntt-ほげドメインの解決が必要になります。ここではlinunbound付として設定しています。

トランスポート

5060用のトランスポートを書きますが他に5060のトランスポートがある場合にはそれを利用してもかまいません。

[hikari-tp]
type = transport
protocol = udp
bind = 0.0.0.0:5060
local_net = 192.168.0.0/16

AOR

;AOR
; Qualifyはしてはいけない
[hikari-nvr]
type = aor
contact = sip:取得したSIPサーバのアドレス

IDENTIFY

[hikari-nvr]
type = identify
endpoint = hikari-nvr
match = 取得したSIPサーバのアドレス

REGISTER

[hikari-nvr]
type = registration
contact_user = 自分の電話番号
transport = hikari-tp
expiration = 3600
fatal_retry_interval = 60
forbidden_retry_interval = 60
server_uri = sip:取得したSIPドメイン
client_uri = sip:自分の電話番号@取得したSIPドメイン

ENDPOINT

[hikari-nvr]
type = endpoint
transport = hikari-tp
context = incoming
dtmf_mode = inband
language = ja
disallow = all
allow = ulaw
rtp_symmetric = no
force_rport = no
rewrite_contact = no
direct_media = no
send_pai = yes
tos_audio = 0xb8
from_user = 自分の電話番号
from_domain = 取得したSIPドメイン
aors = hikari-nvr