RTA54iをVoIPアダプタとして使う

RTA54iというルータを手に入れた

かなり前にもどこかで書きましたが。
RTA54iというブロードバンド/ISDNダイアルアップ兼用ルータを100円ぐらいで手に入れました。


ジャンク品を取り扱う店を徘徊していて、なんか乾電池いれるところがあるルータがあるぞ!
なんかおもしろそう!とか思ってうっかり買ったのですが、後日マニュアルをPDFでダウンロードして
調べてみると、乾電池を入れてもブロードバンドルータとしては機能しないらしい。


今となってはISDN側の機能は使う機会がないし。
ネットでちょっと調べてみるとブロードバンドルータとしても光回線の環境で満足な速度がでるような性能ではないっぽいし。


でもGoogleでRTA54iとか入れて調べている最中、IP電話アダプタとしても使えるらしいという情報を入手しました。
これはRTA54iにも使い道があるかもしれません。

RTA54iのモジュラージャックポート

元々はISDN回線で電話するためだと思われるのですが、電話機(モジュラージャック)ポートが2個あります。
ブロードバンドルータということで、LANポートもあります。
発売から暫くたって、発売元のヤマハVoIPに対応するためのファームウエアをリリースしました。
と3つ揃えば、コイツはVoIPアダプタとして使えるというわけです。びっくり延命術ですね。

VoIPアダプタって?

VoIPアダプタってのはプロバイダのIP電話サーバと電話機の仲介をする機械で、普通にプロバイダに申し込むと
別途VoIPアダプタが必要ですよーってなって月額いくらかでレンタルで貸してくれたりするモノなのですが
それがRTA54iで代用できると聞けば遊ばずにはいられません。


幸いにも、私が加入しているプロバイダ(@nifty)のIP電話サービス「@niftyフォン-C」は
ユニバーサルサービス料の負担のみでIP電話番号(050-XXXX-XXXX)がもらえるようですし
早速申し込んでみました。

RTA54iをVoIP機能が付加されたファームウェアにバージョンアップ

先ほども書きましたが、RTA54iを含め、ヤマハのルータは発売後もファームウェアのバージョンアップが
行われており、バグ修正のほか機能追加が行われることもあるようです。
RTA54iのIP電話機能も、ファームウェアのバージョンアップにより追加された機能のひとつ。


手に入れたRTA54iはそのIP電話機能がないバージョンのファームウェアだったので
ヤマハのウェブサイトからファームウェアを入手。


BETA版ファームウェアと安定版ファームウェアがあるようなのですが、とりあえず安定版ファームウェアv4.05.14でトライ。
http://www.rtpro.yamaha.co.jp/RT/firmware/index.phpから入手できるようです。

・・・・そして半年後

なんとかIP電話がマトモに使えるようになりました。
RTA54i、まったくもってトンデモナイ代物でした。適当に設定したらマトモにIP電話サーバと通信できず。
原因としては、


 1.RTA54iのVoIP機能の実装がまだ完全なものではなかった。
 2.SIPの仕様として、端末がNATの内部にいるとまともに動かないらしい。
 3.RTA54iのVoIP機能が後付なためか、それなりにプロっぽい人が使うルータのメーカー(YAMAHA)のためか
  自分自身のファイアウォールVoIPパケットをブロックしていて、自分で設定を変えてあげないといけない。
 4.DNS自動取得だとDNSサーバアドレスがうまく取得できていない場合があるようだ。


(1)に関しては、GoogleでRTA54i VoIP 実装 とかで検索すると「あのサーバにはうまくRegistできなかった」
   「サーバ側にパッチをしてうまく通るようにした」とかいろんなのが出てくる。
   実際にそのVoIPサーバで確認したわけじゃないけど、RTA54iが後継機(RT57i,RT58i)に比べて至らない部分があるのは間違いない。


(2)に関しては、WAN側(上位の)ルータからポートフォワードしたとしてもパケット自体は通じるが
   中身のSIPパケットに記載されているIPアドレスが変換されないので、結果的に通信不可。
   WAN側(上位の)ルータがSIP-NATという記述に対応しているとこの問題を回避することができる。


(3)一応設定画面からVoIPの設定をした時点で自身のファイアウォール設定が変更されるが、それだとなぜかうまくいかなかった。


(4)詳しくは後述。

うまく通信できるネットワーク構成と設定方法

そんなわけで、ちょっとルータの下に置いて設定事項を埋めただけではうまくつながらなかったので
試行錯誤の末うまくいったネットワーク構成と設定方法をメモっておきます。


@niftyフォン-C以外にも、契約しているフレッツ光プレミアムの「ひかり電話」も
RTA54iで受けられるように設定できるということがわかったので、調子に乗って設定してしまいました。


ついでにサービス同士で無料通話しまくれるsipphone.comにも登録して
イーモバイルS21HTと自宅で無料通話ができるようにも仕組んでしまいました。


欲出しすぎだろ・・・どんだけだよwww

◆環境

[回線] NTT西日本 フレッツ光プレミアム
[プロバイダ] @nifty
[VoIPサーバ] @niftyフォン-C 、ひかり電話対応ルータ AD-200SE、sipphone.com(後述)
[ルータ] RT58i
[VoIPルータ] RTA54i


ちなみにRT58iはSIP-NATに対応したルータ。
これ自身でもVoIPできるんだからそれ使えばいいジャンとか言われそうだけど、電話機の位置の関係上RTA54iを使用している。

◆ネットワーク構成

きたねええええええええええええええええええええええええええ
あとで詳しく説明するので少々お待ちを。

◆RT58iの設定

TELNETで入ってadministratorを打って管理者権限に昇格後、以下のようなコマンドを発行しておく。
nat descriptor sip 6 on
nat descriptor masquerade static 1000 6 192.168.100.54 udp 5004-5060


static 1000 6 192.168.100.54は環境次第だとおもう。
たまたま私の環境ではNATディスクリプタが5まで入っていたので6としただけ。
static 1000はNATディスクリプタ1〜5の設定がたまたまそうなっていたので、なんとなく。
192.168.100.54はRTA54iのWAN側に割り振ろうと考えているアドレス。


saveも忘れずに。

◆RTA54iの設定方法

結論から言うと、この設定方法は上位ルータ(私の場合はRT58i)がSIP-NATに対応していないとだめみたいだ。
そうじゃないときは以下の手順(4)でPPPoEを使った接続にして、RTA54iから直接PPPoE接続してやらないといけないみたい。


1.リセットする(重要)
 本体底のどっかについているボタンをつまようじで押しながら電源ON→数十秒そのまま。
 もしくは、TELNETで接続→Password: ログインパスワード→administrator→Password: 管理者パスワード→cold startコマンド


以下の説明はhttp://wiki.livedoor.jp/hide_system/d/YAMAHA%20NetVolante%20RTA54iのほぼ丸パクリであり、引用元ページの説明がわかりやすいのでそちらを推奨。
(※(5)をのぞく)


2.Webブラウザで接続する。
 パソコンとRTA54iのLANポートをLANケーブルで接続して192.168.0.1をWebブラウザでアクセス。
 リセットが正常にされていれば、日付と管理者パスワードの設定画面になるので、設定。
 OKボタンを押すと「かんたん設定画面」とやらに移る。


3.左側メニューの「接続設定」より「新規登録」。
4.「CATVまたはPPPoE方式を使用しないADSL接続設定」を選択して「次へ」
5.IPアドレスは手動で設定。上位ルータにつなげるように。
 例えばIPアドレス、192.168.100.54、サブネットマスク255.255.255.0、デフォルトゲートウェイ192.168.100.1みたいな。
 DNSサーバアドレスは「IPアドレスを指定する」として上位ルータのIPアドレスとか、プロバイダ指定のDNSサーバアドレスか
 Google Public DNS(8.8.8.8)でも使う。とにかく手動でいれる。(重要)
6.「登録」ボタンをクリック。


7.左側メニューの「接続設定」より「プロバイダ接続管理」を選択。
8.プロバイダ接続の「登録の修正」を選択。
9.上のほうにある「NAT」のリンクをクリック。
10.静的IPマスカレードを2つ、以下のように設定。


[チェックを入れる] プロトコル[TCP] ポート[5060] 使用ホストIPアドレス[192.168.0.1]→登録
[チェックを入れる] プロトコル[UDP] ポート[5004-5060] 使用ホストIPアドレス[192.168.0.1]→登録
ちなみに上記の192.168.0.1とは、RTA54iのLAN側IPアドレス


11.左側メニューの「電話設定」をクリック。
12.「インターネット電話設定」「基本設定」をクリック。
13.「インターネット電話機能」を「使用する」にチェック。
14.「接続プロバイダ」に「WANポート」を選択。
15.登録をクリック。なんか再起動するとか確認のメッセージが出るけどそのまま続ける(ボタンの名前は忘れた)


で。
1〜15までをこの手順で行わないと、(15)の次の画面で2行ぐらい文字が出てRTA54iがフリーズして続行不可になる。
たぶんIP電話サーバを先に登録しちゃったとか、そういうことをするとなるような気がする。



16.無事に再起動できたら、もう一度「電話機能」「インターネット電話設定」「基本設定」で
  「インターネット電話機能」が「使用」になっているかどうかを確認。
17.IP電話サーバを登録する。


ここでの設定は、おおよそプロバイダ提供のIP電話サービス名 設定 みたいな感じでググれば出てくることが多い。
たとえば[@niftyフォン-C 設定]みたいな。


@niftyフォン-Cの場合は
登録番号1 サーバアドレス:voipXX.nifty.com sipアドレス:050電話番号@nifty.com ユーザ名XXXXXX パスワードXXXXXXX
詳しくはhttp://ipphone.nifty.com/niftyphone/c/index.htmのご利用者メニューに記載されている。SIPアドレスだけ記載されていないので、050番号@nifty.comという形で書く。


sipphone.com
登録番号2 サーバアドレス:proxyXX.sipphone.com SIPアドレス:sip番号@proxyXX.sipphone.com ユーザid:XXXX パスワード:XXXXX


AD-200SE
登録番号3 サーバアドレス:192.168.100.200(後述) SIPアドレス:3@192.168.100.200 ユーザID:0003 パスワード:XXXXXX


と設定。


18.電話設定→インターネット電話設定→基本設定→発信時のプレフィックス(識別番号)設定
  ISDN回線を8#に設定、他のIP電話サーバ1〜3(私の場合は3つ登録したので3つでる)を直接、2#、3#と設定。
  これをしないとIP電話経由で電話がかけられない。


で、たぶんつながる。


IP電話サーバ設定の接続ボタンの下に赤色でエラーメッセージが出るとき。
サーバが不明です=IP電話サーバのDNS解決に失敗している?
サーバから返事がありません=自身のファイアウォールに阻まれているか、RT58iのSIP-NAT設定が失敗?


詳しく調べたいとき。
RTA54iにTELNETで入ってadministratorで管理者に昇格してsyslog debug onと入れた後
Webブラウザに出したIP電話サーバ設定の画面から、もう一度IP電話サーバに接続するように指示。
TELNETに戻ってshow logでログを見るとなんか理由が出ているので適当に対処。

ひかり電話対応ルータ AD-200SEにSIPレジスト

ちなみにさっきから度々出てきているAD-200SEってなんぞや?っていう人に説明しておくと


NTT西日本ひかり電話で、追加番号を申込むとレンタルしてくれる、ひかり電話専用のVoIPルータ。
・ハードウェア的には追加番号用に2つのモジュラージャックがついている。
・この2つ目の電話番号を電話機じゃなくてNTTが提供しているIPテレビ電話端末で使えるようにするために
 VoIPサーバとしても動くようになっている。
・ちなみに設定すれば1つ目の電話番号もこのIP電話端末で受けるようにすることができる


=つまり、このVoIPサーバには、非公式ながらRTA54iからレジストして使うことができる。
=つまり(2)、普通の電話番号にかかってきた電話もRTA54iに接続された電話で受けることができる


・ちなみに1つの電話番号用のAD-100SEにはこのVoIPサーバ機能はついていない。
・AD-200SEのWAN側からこのVoIPサーバにレジストをかけることはできない。つまりLAN側に置く必要がある。


・でもLAN側にいろんな機器をおいた場合、AD-200SEのルータ機能を切ることができないので
 RT58iのLANポートとAD-200SEのLANポート同士をLANケーブルで接続して、LAN側アドレスを同じにする。


手順としては、RT58iのLAN側アドレスが192.168.100.1と仮定すると、


1.AD-200SEのLANポートとパソコンをLANケーブルで接続。
2.(特に最初の設定から変えていなければ)[192.168.1.1] ID[admin] パス[admin]でログイン。
3.「詳細設定」→「DHCPサーバ設定」をクリック。
4.LAN側IPアドレス/マスク長 に 192.168.100.200/24 とか入れる。
 192.168.100…は既存のLANで使っているものと同じもの。
 200はそのLANで空いているIPアドレス(AD-200SEなので200としてみた)。マスク長は特に理由がなければ24でOK。
5.DHCPサーバ機能の「使用する」のチェックを外す。
 既存のLAN同士を接続してしまうので、LANのPCがAD-200SEからDHCPを取ってしまうのを防ぐため。
6.「設定」をクリック。


このあと、LAN側IPアドレスが(この例だと)192.168.1.1→192.168.100.200に変更される。
DHCPもとれないので、この後の作業は配線を以下のように変更して行う。


[         CTUのLANポート         ]
    |              |
[RT58iのLAN2(WAN)ポート]   [AD-200SEのWANポート]


で両者がネットに出られるようにする(AD-200SEのWANポートとRT58iのLANポートでつないではいけない)


[RT58iのLAN1ポート]ー[AD-200SEのLANポート]
   |
[設定に使うPC]


これでLAN側からのリクエストしか受け付けないAD-200SEの4ポートハブを既存のLANにつないで
RT58iや、その下に繋がるRTA54iからレジストできるようにする。


つまり上の汚い図のようにしちゃう。


この状態で設定に使うPCのDHCPを改めて更新して、Webブラウザから192.168.100.200をたたくと
先ほどのパスワード入力画面が出ると思うので、さっきので入り直す。


7.「電話設定」→「内線設定」をクリック。
8.内線番号3の設定を変更する。ただし編集する前に「未登録」になっていることを確認する。
 もし、「登録済み」となっている場合は、他のIP電話機器かなにかで使っているのかもしれないので、他の「未登録」のものの
 「編集」ボタンを押す。
9.「内線設定」が出るので以下のように変更。


内線番号 [ 3 ] ←内線番号3の場合。ここはいじらない
ニックネーム [ なんでもいい ]
端末属性 [ 音声専用端末 ] (重要)
MACアドレス [] ←入力しない
ダイジェスト認証 チェックを入れる
ユーザID [ 0003 ] ←内線番号3の場合。特にいじらない。理屈がわかったらいじってもいい
パスワード [ ????? ] ←なにかランダムで入っているはずなのでメモるか好きなパスワードに変更する。


電話番号設定  [通知番号] [着信番号]
0XXXXXXXXXXXX
0XXXXXXXXXXXX


通知番号は、これから設定するRT58iやRTA54iに接続された電話機から電話をかけた時、相手にどの番号が出るかという設定。
着信番号は、どの電話番号宛にかかってきた電話をRT58iやRTA54iに接続された電話機で受けるか(電話機を鳴らすか)という設定。
ここで着信番号設定をしても、AD-200SEのモジュラージャックに接続された電話機は鳴る。


10.設定ボタンをクリック。


11.RTA54iやRT58iで、IP電話サーバの設定を開く。


登録番号[ なにか空いている番号 ] (例えばIP電話サーバが1つ既に登録されているなら2とか)
サーバアドレス [ 192.168.100.200 ] (手順4で設定したアドレス)
sipアドレス [ 0003@192.168.100.200 ] (手順9のユーザID@手順4で設定したアドレス)
ユーザID [ 0003 ] (手順9のユーザID)
パスワード [ ????? ] (手順9のパスワード)


RT58iの場合はsip-session-timerという項目があるが、とくにチェックしていない。


12.登録ボタンをクリック。
13.もちろんインターネット電話の基本設定でプレフィックスをちゃんと設定(2#とか)しないとAD-200SE経由で電話をかけられない。

sipphone.comにレジスト

sipphone.comをはじめとする、SIP番号を無料で作れるサイトで番号を2つ取得
RTA54iとスマートフォン用のソフトフォンそれぞれに設定すれば
iPhoneのfringやWindows MobileのSJphoneと外出先と自宅で無料電話ができる。
(もちろんパケット通信料が定額上限に毎月行くという前提で)


このサイトについては、今新規登録停止でアカウントを新しく取ることも出来ないので
解説はパスさせていただく(設定例はこの記事のRTA54iの設定例の中に書いてある。)



今新しくアカウントを作ろうと思えば、おそらくhttp://www.officeken.co.jp/sip_sv.htmに載っている
SipgateとかFree IP Callとかで登録すればSIP番号がもらえるはず。多分。違ってたらゴメン。

Touch Diamond(S21HT)側の設定方法もここではパス。ゴメン。