以前の記事で、Twilio に接続する使い方を紹介した、米国ボストンGrandstream社の SIP電話機、GXP1625(PoE非対応版の GXP1620 も設定は同じ) で今度は NTTコミュニケーションズの 050 IP電話サービス、050 plus に接続する設定方法を紹介する。
なお、050 plus は公式には公式アプリからの使用しかサポートしていないが、公式アプリは汎用SIPクライアントアプリをカスタムしたもので、内部的には SIP を使っているため、SIP情報さえ手に入れられれば汎用の SIP電話機から使うことができる。
なお、SIP情報の入手も比較的簡単で、セットアップ用の URL に https でリクエストを送ると返されるレスポンスの XML を見ることで、必要な情報を得ることができる。
GXP1625 は廉価グレードIP電話機で、SIP 2回線を収容できる。価格的には GRP2613 よりちょっと安いくらいで、液晶は白黒。
この機種も PoE に対応しているので、PoEハブに接続すると配線はスッキリする。リテールパッケイジには ACアダプタも付属していたので、PoEハブが用意できない環境では ACアダプタで利用することもできる。PoE に非対応なのが兄弟機の GXP1620 でその他の機能は GXP1625 と同じ。
まずは、050 plus の SIP情報の取り方だが、これはいろんなサイトで紹介されているので詳細は割愛する。
以前は curlコマンド一発で取れたのだが、最近はチェックが厳しくなっているみたいでブラウザから POSTリクエストを送って取得したほうがはやい。
curl の User-Agent を狙い撃ちで弾いているようなので、テキトーな User-Agent を設定することで取得することができる。
curlコマンドは、
% curl \
-X POST \
--header "User-Agent: hoge" \
--data 'ifVer=7.0&apVer=2.0.4&buildOS=IOS&buildVer=5.1&buildModel=Android&earlyStFlg=0&no050=(050電話番号)&pw050=(パスワード)' \
https://start.050plus.com/sFMCWeb/other/InitSet.aspx \
>050plus-0503690xxxx.xml
このコマンドを実行するとアカウント情報が、050plus-0503690xxxx.xml に保存される。
xmllintコマンドで中身を見ると、
% xmllint --format 050plus-0503690xxxx.xml
<?xml version="1.0"?>
<replyInfo>
<resultInfo>
<resCd>N0000</resCd>
<resMsg>正常に終了しました</resMsg>
<errCd/>
</resultInfo>
<resultEarlySt>
<sipID>ThisIsSIPID</sipID>
<sipPwd>ThisIsSIPPassword</sipPwd>
<tranGwInfo>
<tranGwAd>kar-f2fcp.050plus.com</tranGwAd>
<payTranGwPNm>443</payTranGwPNm>
<freeTranGwPNm>5075</freeTranGwPNm>
<nicNm>fmc3690xxxx</nicNm>
<pingTm>600</pingTm>
<pongTm>120</pongTm>
</tranGwInfo>
<ticketInfo>
<ticketEx/>
</ticketInfo>
<chargPlan>02</chargPlan>
<frdCd>301TSQ49</frdCd>
<rNo050>0503690xxxx</rNo050>
<rDistingId>xxxxxxxxx</rDistingId>
</resultEarlySt>
</replyInfo>
必要な情報は、tranGwAd と payTranGwPNm(SIP Outproxyサーバ、ポート番号)、nicNm(SIP Username)、sipID(SIP Auth Name)、sipPwd(SIP Password)なのでこれをメモする。
nicNm は、fmc + (電話番号から先頭の 050 を除いたもの)になっているはずだ。sipID と sipPwd は英数字のランダムな文字列が使われている。
Grandstream GXP1625 が起動したら(3分くらい掛かるので気長に待つ)、次画面というボタンを押してまたしばらく待つ(1分くらい掛かるので気長に待つ)と、IPアドレスが表示される。
表示された IPアドレスにブラウザからアクセスすると、管理画面が開く。アクセスできないときは、ブラウザの URL欄が https になっていないか確認する。
デフォルトのパスワードは、ID、パスワードとも admin になっている。
パスワードをデフォルトのものから、複雑なものに変更しておく。
管理画面にログイン直後の様子。まだアカウントが設定されていないので SIP登録が NO になっている。
アカウント、アカウント1、一般設定 へ進む。
必要事項を入力していく。アカウント有効を YES にする。
アカウント名は表示の識別用なのでなんでもよい。(ここでは 050 plus とした)
SIPサーバは 050plus.com で固定。(イオンモバイルの場合は 050sdk.com)
アウトバウンドプロキシはたまに仕様変更で変わることもあるが、最近は kar-f2fcp.050plus.com:443 で固定されている。以前は、kar-f2fcp.050plus.com:5061 や kar2-f2fcp.050plus.com:443 が使われていたこともあった。
なお 050 plus の SIP を使った設定方法を紹介するほぼすべての記事で、SIPサーバ(SIP Domain)として、この kar-f2fcp.050plus.com:443 を紹介しているが、実は 050plus.com や 050sdk.com で動作する。
SIPユーザID に nicNm、認証ID に sipID、認証パスワードに sipPwd を入力する。
余談だが外部との疎通性はない(SIPサーバで弾かれている)ものの、内部的に使っている SIP URI は、
sip:fmc3690xxxx@050plus.com:443;transport=tls
または
sip:fmc3690xxxx@050sdk.com:443;transport=tls
を使っていることになる。
せめて着信のみでもこの SIP URI宛にルーティングしてくれるとうれしいです、NTT Com さん。
アカウント、アカウント1、SIP設定、基本設定 に進む。
登録期限を 10、登録有効期限を 5 にする。ここでの単位は分になっている。
SIP情報を取得したときの、pingTm と pongTm がここの設定に相当するが、pingTm/pongTm は秒単位なので、600秒=10分、120秒=2分と換算して欲しい。
OPTIONSキープアライブを有効にするを YES にする。
ローカルポートを 20,000~65,500 くらいの適当な大きな数字(例えば、65412 など)にする。
なお 050 plus の SIP を使った設定方法を紹介するほぼすべての記事で、ローカルSIPポートとして、5075 を入力するように書かれていることがあるが、このポートは外部へ接続できればなんでもよい(そもそもルータの NAPT で他のポート番号に変換されてしまう)。さらに言えばこの設定は外部から接続されるときにも使われる情報だが、ルータで静的マスカレードを設定しているなど特殊な環境下以外の LAN の NAPT配下に置かれた電話機に直接、Outbound Proxy以外の外部から SIP INVITE が来ることはない(総当たり攻撃の spam を除けば)のであまり意味を持たない。
強いて言えば、グローバルIPv4アドレスを持つような回線(OCNモバイルONE など)を使ったスマホアプリに設定する際に、TCP/IP 5060 などの spam に狙われやすいポートを開けていると外部から狙われるので、推測されにくい適当な番号を使っておいたほうが良いだろう。スマホアプリの場合、すでに他のアプリで先に TCP/IP 5060ポートを使われていることもあるため、TCP/IP 5060ポートが使えないこともある。
SIP設定情報で降ってくる 5075 というポート番号は、(たぶん)テスト用アカウントで使うための設定で、本登録したアカウントでは使用する必要はない。
余談終わり。
SIP転送(これは誤訳で、正しくは SIPトランスポート)を TLS/TCP に変更する。
TLS使用する際の SIP URIスキームは、sip にする。
保存して適用 をクリックする。
状態、アカウント状態で確認すると SIP登録が YES になって、SIP REGISTER できていることが確認できる。
アカウント、アカウント1、音声設定 に進む。
選択項1~7 はヴォコーダーの設定で、050plus は 2022年6月現在、G.729a しか使えないのですべての項目を G.729A/B にする。
SRTPモードは、有効および強制、にする。
ジッター・バッファ長は 100ms にする。通話中に途切れるようなことがあれば、少しづつ伸ばしていく。光ファイバなどの固定回線であれば、100ms もあれば十分なはずだ。
保存して適用 をクリックする。
デフォルトのままでも、NAPT配下にあればほぼ無いと思うが NAT を使っている場合などは外部から総当りで攻撃してくる SIP spam で接続されてしまう可能性がある。
アカウント、アカウント1(またはアカウント2)、SIP設定、セキュリティ設定 に進む。
受信INVITE の SIPユーザID を確認する、を YES にすると、アカウント1 で設定した SIPユーザID 宛のパケット以外は破棄する。
プロキシから受信する SIP のみを許可します、を YES にすると、アウトバウンドプロキシで設定したサーバからのパケット以外は破棄する。
以上の設定で、GXP1625 から発着信できるようになっているはずだ。まずは携帯電話宛に発信してみる。
発信中の様子。
少し見づらいが、050-3690-xxxx の 050plus の番号から掛かってきていることがわかる。
通話も特に問題ない。音が遠いといったことはないものの、やはりコーデックが G.729a なので、大昔の国際電話で話をしているように音質が悪い。
今度は携帯電話(にインストールした、Lala Callアプリ)から GXP1625 で設定した 050plus の番号に発信してみる。
050-71xx-xxxx の LaLa Call の番号から掛かってきていることがわかる。
Lala Call はユーザが使用するコーデックを公表していないが使用する回線のビットレートと音質的に G.729系を使っていると思われる。Lala Call を運用するオプテージと 050plus を運用する NTTコミュニケーションズは相互接続していないので、汎用の PSTN網を介して接続していると思われるため、
Lala Callユーザ <==(G.729a)==> OPTAGE メディア変換
<==(アナログ or PCMU)==>
NTT Com メディア変換 <==(G.729a)==> 050plusユーザ
といった経路で、2段のメディア変換を行って通話していると思われる。
このあたりは、他社とは一切相互接続しないという NTTコミュニケーションズの方針のため、せっかく通話する両者でコーデックが一致していても、無駄なメディア変換を挟むことになる。(クライアントの相性といった互換性に起因するトラブルを防げるので、メディア変換を行ったとしてもトータルでは運用コストが安いのかもしれない)
050plus を固定電話として使いたいという需要がどれほどあるかわからないものの、設定さえ入れ込んでしまえば、本体を持っていってインターネットにつながった LANに接続するだけで使えるので、仮設の事業所等で共有の連絡用電話機として使うといったことができる。
コーデックに G.729a を使用しているため音質はとても悪いが、反面、回線のビットレートは送話、受話とも 20kbps 程度確保できればよく、通話では両者が同時に話すことはないのでピークでも 40kbps を消費することはなく、128kbps程度に制限されている遅い MVNO回線で使うことができる。
イオンモバイルで提供される 050電話も、内部的には 050plus を使っている(NTT Com の OEM提供)ので、SIP情報の抜き出し方法がわかれば、この記事で紹介したやり方で固定電話機で使えるかもしれない。
追記:
イオンモバイルでは 050番号を使うための SIP情報は、ユーザがわざわざ抜き出す必要はなく、イオンモバイルから提供されるらしい。
追記終わり。
群馬インターネットの 050IP電話アプリ、Town モバイルの 050 byTown Mobile も基盤は 050 plus の OEM版、050 VoIP SDK を使用しているので同じように設定して使えるはずだ。
イオンモバイルを契約すると無料で提供される 050番号は、SIPサーバのアドレスが 050sdk.com になるようで(SIP Outbound Proxy は kar2-f2fcp.050sdk.com:443)、あとは同じように設定できるらしい。
<050>plus を直接契約すると、利用料が 330円/月(税込み)で別途通話料が必要になるが、イオンモバイルの場合はデータ回線1GB契約なら 1,606円(回線528円 + 050契約1,078円)/月(税込み)で通話料込み(定額ではあるものの、1通話5時間まで、1ヶ月で合計50時間までの制限あり)のため、月の通話時間が合計435分を超える(または 145回を超える)通話を行う人であれば、イオンモバイルで契約したほうが安くなる。(なお、SIP による通話は契約したイオンモバイルの回線を使う必要はないため、フレッツ光ネクストなどで契約している ISP の回線から使うことは問題ない)050>
テスト用番号050-3778-9900 に掛けることでこちらの音声をフィードバックしてくれるので音質などを確かめることができる。(遅延は確かめられない)
本記事は note にて以前より公開していたものを加筆修正したものです。
ODN IP | 050 plus | イオン050 | ひかり電話 | SMARTalk | ippi | その他 | ||
---|---|---|---|---|---|---|---|---|
GS Wave | アプリ | note | 050 plus | イオン050 | 執筆予定 | 執筆予定 | ippi | TELNYX |
MizuDroid | アプリ | ODN IP | 050 plus | イオン050 | 執筆予定 | SMARTalk | ||
MicroSIP | PCソフト | ODN IP | 050 plus | 執筆予定 | 執筆予定 | ippi | TELNYX | |
YAMAHA NVR510 |
FXS ATA | ODN IP | 設定不可※1 | 設定不可※1 | ひかり電話 | SMARTalk | ||
GS HT802 | FXS ATA | ODN IP | 050 plus | イオン050 | ひかり電話 | |||
GS GXP1625 | SIP電話機 | note | 050 plus | 執筆予定 | ひかり電話 IPv6 |
SMARTalk | ippi | |
GS GRP2613 | SIP電話機 | note | イオン050 | |||||
GS WP820 | Wi-Fi電話機 | note | 050 plus | イオン050 | ||||
Poly Edge B30 |
SIP電話機 | 執筆中 | 050 plus | イオン050 | ひかり電話 | |||
Poly VVX250 |
SIP電話機 | ODN IP | 050 plus | 執筆予定 | ひかり電話 | SMARTalk | ippi | |
その他 | Acrobits Softphone Sipnetic Calls |
Acrobits Softphone Sipnetic (設定不可※2) |
Sipnetic Acrobits Softphone |
※1 : TLS が使えない。ポート番号を 5060以外に変えられない。SRTP が使えない。G.729aコーデックが使えない。
※2 : G.729aコーデックが使えない。