(新)タイトルいつ決めるのさ

何かの参考にして頂ければ幸いです。

Yamaha RTX830 配下に置いた NVR500 で So-netフォンを利用してみる

So-netフォンを使うに当たって RTX830 配下の NVR500 をローカルルータ(所謂 2重ルーター)として使う方法などいくつかの設定を試してみたのですが、結局 NVR500 は 4ポート L2スイッチ兼 VoIPアダプタとして使う事にしました。空いているポートにプリンタを繋いだりするのにこれが一番楽なのですよね。

RTX830 は現在 IPv6は IPoE で接続、IPv4はv6プラス と PPPoE を併用できるように設定しているのですが、フィルター型ルーティング機能を使って NVR500 の通信は IPv4 PPPoE でインターネットに流すようにしてやります。このようにするのは IP電話を利用する為には特定のポートを NVR500 が利用できるようにする必要があり、IPv4 PPPoE でのインターネット接続が必須となるからです。

■ NVR500 側の設定

NVR500 は 4ポート L2スイッチとして動作させ、うち 1つのポートは RTX830 の LAN と接続します。WAN ポートは使用しません。まず時刻補正やファームウェアアップデートの為に経路を設定しておきます。DHCP サーバーは RTX830 に任せます。NVR500 の IPアドレスを固定した後は RTX830 の LANポートから NVR500 の LANポートに接続して So-net フォンの設定を行っていきます。

・設定諸々
  security class 2 on off off
  console prompt "[NVR500] "
  login timer 600
  syslog notice on
  syslog debug on
  telnetd host lan

・LAN側にIPアドレスを付与(RTX830側とセットで固定)
  description lan1 lan
  ip lan1 address 192.168.100.5/24

・経路設定(RTX830に向けます)
  ip routing process fast
  ip route default gateway 192.168.100.1

・DNSサーバーはRTX830を使用
  dns server 192.168.100.1
  dns private address spoof on

・自動時刻補正
  schedule at 1 */* 01:30:00 * ntpdate ntp.nict.jp syslog

So-net フォンの設定については基本的に「こちらの記事」の接続テスト中に予めサンプルとして取得しておいた config を元に不要なものを削除したりナンバーディスプレイ機能を追加したりしています。

・アナログ回線は使いません
  pstn use off

・TEL1ポートのみ使用、自己SIPアドレスへのみ着信許可、発信時のプレフィックス無し
  analog use 1 off
  analog sip arrive permit 1 myname
  analog sip call myname 1 sip:(So-netフォン電話番号)
  analog sip call display name 1 NVR500
  analog use 2 off
  analog extension dial prefix sip server=1

・IP電話サーバーの設定
  sip use on
  sip log on
  sip server 1 (SIPサーバーアドレス) register udp sip:(SIPアドレス) (VoIPユーザー名) (VoIPパスワード)
  sip server session timer 1 300 update=on refresher=uac
  sip server display name 1 (So-netフォン電話番号)

・ナンバーディスプレイ機能を有効化
  analog arrive number display 1 on

SIP アドレスは、「IP電話番号@ホストアドレス(例:01234567890@so-net.ne.jp)」の形になります。また、「自己SIPアドレスへのみ着信許可」とする設定をしておかないと頻繁に掛かってくる無言電話(SIP SPAM)に悩まされる事になるので IP電話を使う上で必須の設定です。

■ RTX830 側の追加設定

続いて RTX830 側の追加設定に移ります。
v6プラスと IPv4 PPPoE を併用していた環境に追加設定しますので、v6プラスの設定や IPv4 PPPoE との併用については「こちら」や「こちら」、「こちら」をご参照下さい。情報があちこちバラバラになってしまっている事についてはご容赦ください。

・NVR500のIPv4アドレスを固定
  dhcp scope bind 1 192.168.100.4 (NVR500のWAN側MACアドレス:今回使いませんがついでに固定)
  dhcp scope bind 1 192.168.100.5 (NVR500のLAN側MACアドレス)
・フィルター型ルーティングの設定を追加
  ip filter 1 pass 192.168.100.4 * * * *
  ip filter 2 pass 192.168.100.5 * * * *
  ip route default gateway pp 1 filter 1 2 gateway pp 1 filter 5 hide gateway tunnel 1

フィルターに適合する機器(NVR500など)の経路は IPv4 PPPoE のルートへ、それ以外の機器はv6プラスのルートへ。IP 電話は IPv4 PPPoE でリンクアップしていないと使用できないですが、filter 5 に適合するものについては IPv4 PPPoE リンクダウン時にはv6プラスで通信するようにさせています。

IP電話の利用に必要なポートを割り当てる設定を追加
  ip filter 3050 pass * * tcp,udp * 5060
  ip filter 3051 pass * * udp * 5004-5043

  pp select 1
  ip pp secure filter in 3000 3001 3002 3003 3020 3021 3022 3023 3024 3025 3030 3032
  3050 3051

・NAT設定の追加
  nat descriptor sip 2000 on
  nat descriptor masquerade static 2000 1 192.168.100.4 tcp 5060
  nat descriptor masquerade static 2000 2 192.168.100.4 udp 5060
  nat descriptor masquerade static 2000 3 192.168.100.4 udp 5004-5043

IP 電話を利用する為には上記のフィルター番号 3050番と 3051番に記述されているポートを利用できるようにする必要があります。このためにv6プラスでは IP電話の利用ができないとされているのですよね。なので IP電話は PPPoE で接続させて必要なポートを利用できるようにしてさえやれば問題ありません。また、「SIP-NAT」という機能を利用しています。

(参考)SIP-NATYamaha RT Pro)


さて、ここまでの設定で NVR500 から So-netフォンの IP電話サーバーには接続できるようになりました。ところが、電話の発信は出来るのに着信が出来ません。色々調べたり RTX830 と NVR500 双方のコマンドリファレンスを見たりしていてようやく気づきました!

SIPプロトコルを使用する為の設定
  sip use on

RTX830 はデフォルト常態では SIPプロトコルを使用しない設定になっていたのですね。こちらのコマンドは投入後要再起動です。RTX830 に投入して再起動させてから確認してみたところ、発信・着信ともに正常に行えるようになりました。通話品質も上々のようです。

意図的に IPv4 PPPoE 接続を切断して電話を掛けても繋がらない(切断される)状態になってもしばらくの間は NVR500 で回線が切れていると判断されないようですね。15分ほどしてからようやく NVR500 の Web GUIIP電話サーバーエラーが表示されると共に RTX830 の STATUS LED が点灯しました。IPv4 PPPoE の接続を回復させてやるとすぐにまた IP電話が使える状態になるようです。PPPoE の接続が切断後回復して IPアドレスが変わった場合にどうなるか興味があって実験してみたのですが、とりあえず放っておいてもしばらくすれば回復はするようです。ただし少しの間 IP電話が不通になるのは避けられないようですね。


これまでのところで当初の「RTX830配下に繋いだNVR500でIP電話So-netフォン)を使う」という目的は達成できているわけですが、今すぐにひかり電話を解約するというわけでもないのでとりあえず NVR500 でひかり電話の通話も扱えるように追加の設定を施しておくことにしました。

NTTのHGW(ここではPR-S300NE)と RTX830 の LANセグメントが異なるのでそのままでは設定できません。「こちら」で書いたように RTX830 配下の LANから HGWの管理画面にアクセスできるように設定が済んでいることが前提となります。

■ PR-S300NE 側の設定

NVR500 は SIPクライアントとして扱いますので、PR-S300NE にログインして必要な設定を施します。「電話設定」→「内線設定」で使っていない内線番号の「編集」をクリックすると下の画面に移るので、NVR500 の MACアドレスを登録します。「ニックネーム」はなんでも分かりやすい名前でOKです。また、この時自動設定される「ユーザーID」と「パスワード」を控えておきます。

SIPクライアント登録

設定完了後は必ず左上にある「保存」ボタンを押しておくこと。

■ NVR500 側の追加設定

NVR500 の側では「IP電話サーバーの追加」という形になります。

・自己SIPアドレスを登録
  analog sip arrive myaddress 1 1 sip:5

・プリフィックスを設定。「9#」を押してからダイヤルすることでひかり電話での発信となる。
  analog extension dial prefix sip server=2 prefix="9#"

・IP電話サーバーの設定
  sip server 2 192.168.1.1 register udp sip:5@192.168.1.1 (ユーザー名) (パスワード)
  sip server session timer 2 300
  sip server display name 2 (ひかり電話番号)

こちらの方も設定が終わってテストした段階でひかり電話からの発信はできて着信もしている(掛けた方の呼び出し音は鳴っている)はずなのに電話機の呼び出し音が鳴らないというトラブルに遭いました。しばらく悩みましたが、結局原因はひかり電話の方の自己 SIPアドレスの登録が漏れていた(「analog sip arrive myaddress~の行)ことでした。So-netフォンの方で SIP SPAM を拒否するために登録されてない電話番号宛ての着信は鳴らさないようにしていたのですよね。こちらの設定を加えたところ、発信・着信とも正常に機能するようになりました。

以上の設定で、
 1. 発信時に「9#」を押してから電話を掛けることでひかり電話経由で発信
     (緊急電話番号(110、119など)や 0570 などの番号が使える)
 2. 直接電話番号を入力した場合は So-netフォンで発信
という使い分けができるようになりました。引き続き IP電話の方をテストしつつ、とりあえずひかり電話を解約するまではこの設定で使ってみようと思います。