🀄️

Vonage SIP Trunking と PSIP(Programmable SIP)の基本的な使い方(前半)

2024/10/31に公開

はじめに

こんにちは。KDDI ウェブコミュニケーションズの若林です。

Vonage(ボネージ)の SIP Trunking と Programmable SIP を使うことで、既存または新規の IP 電話システムや端末を短時間かつ低コストで Vonage に収容・連携することができます。この記事では、 Vonage で実現できる SIP に関連した機能について簡単にご紹介していきます。

本記事の対象となる読者

  • Vonage のアカウントを持っている方
  • Vonage 開発スタートガイドを確認済みの方
  • インターネット通信や IP ネットワークの基礎的な理解のある方
  • Vonage の SIP 接続を使って色々試してみたい方
  • 自社の IP-PBX などと Vonage を繋いでみたい方

事前準備

本記事では IP-PBX の用意は不要です。Vonage 環境さえあれば読み進めていくことができます。

SIP の接続検証・動作確認を行う場合はご自身でグローバル IPアドレスが割り当ててある IP-PBX に相当する設備を準備する必要があるため、必要に応じてご用意ください(この記事では紹介しません)。

Vonage とは

Vonage_logo

Vonage は、米国ニュージャージー州に本社を置くCPaaS(Communication Platform as a Service)企業です。
もともとは VoIP(Voice over IP)企業としてスタートしましたが、いくつかの企業買収を行うことで、コミュニケーションサービス全般をサポートできる企業に発展しました。現在はスウェーデンの大手通信機器会社エリクソンの傘下に入っています。

SIP とは

SIP (Session Initiation Protocol) の略で、RFC 3261 で標準化されている通信プロトコルになります。

主に IP 電話の通信制御(通話の開始や切断など)の標準プロトコルとして、ソフトウェアベースの電話アプリ、ハードウェアベースの IP 電話機、 IP-PBX や電話機能を持った IoT 機器で広く一般的に使用されています。

Vonage SIP 関連機能の種類について

Vonage には下記の通り SIP 関連機能が 3 つあり、それぞれ周辺機能との関連性に差異がありますのでわかりやすく表にまとめています。

  • SIP Trunking
  • PSIP
  • BYOC
SIP Trunking PSIP BYOC
SIP Domain 設定 必須 必須 必須
ACL 設定 必須 必須 必須
Vonage アプリケーションとの関連付け できない 必須 必須
Vonage 電話番号との関連付け 必須 可能(必須ではない) 可能(必須ではない)
Vonage NCCO との直接連携 できない 必須 必須
REGISTER 認証および INVITE 認証(受信時) 可能 可能 可能
まとめ Vonage 電話番号をベースに独自に用意した SIP 環境とダイレクトに繋ぐことができます。 PSIP(Programmable SIP) の通り、 Vonage NCCO によって Vonage 機能とフルに連携可能です。 BYOC(Bring Your Own Carrier) のその名の通り、利用者独自の通信キャリアを使用することができる機能になります。

この記事のシナリオ

この後の記事では、大まかに以下の内容に沿って設定方法などを解説していきます。記事のボリュームが多いため、前半・後半に分けて掲載します。

  • 今回の内容(前半)

    1. Vonage SIP の利用構成
    2. Vonage SIP の仕様
    3. Vonage SIP Trunking の作成と認証設定
    4. Vonage SIP Trunking の発信と着信の設定
    5. Vonage SIP Trunking への電話番号の関連付け
  • 次回の内容(後半)

    1. Vonage アプリケショーンの作成と設定
    2. IP-PBX 代用環境のための PSIP 作成と設定
    3. IP-PBX 代用環境と SIP Trunk の動作確認
    4. PSIP の設定と動作について
    5. BYOC の設定と動作について

Vonage における SIP の利用イメージ

Vonage SIP の利用イメージがわかるようにパターンごとに図を掲載します。上記の表と合わせてご確認ください。

SIP Trunking のケース

PSTN (公衆交換電話網)への発着信が Vonage SIP Trunking を介して透過的に実行されます。

SIP Trunking イメージ図

SIP Trunking Image

PSIP のケース

Vonage PSIP を中心に、 Vonage PSIP (関連付けてあるアプリケーション)へのリクエストに対する NCCO によって、「自動音声応答」「電話転送」といった Vonage アプケーションで実現できることが利用可能で、 SIP Trunking と比べると様々な動きを実現することができます。

PSIP のイメージ図

PSIP Image

BYOC のケース

Vonage 的には PSIP と全く同じですが利用イメージが異なり、 SIP 接続に特化した利用イメージになります。利用者側で SIP 接続に対応している電話番号サービス提供キャリアと別途契約のうえ、下図のように直接繋ぐことによって利用者独自の電話番号を扱うことができます。

念のため補足しますと、 BYOC の名の通り電話番号サービス提供キャリアとの接続確認・接続検証は利用者ご自身で確認をいただくことになります。最低限必要な設定はこの後ご紹介していきます。

BYOC のイメージ図

BYOC Image

Vonage SIP 仕様について

Vonage SIP の基礎的な技術仕様についてまとめます。

Vonage SIP エンドポイント

Vonage SIP が利用できるエンドポイントは大きく分けて以下 3 つがあり、それぞれが更に細分化されています。日本で利用する場合は APAC のsip-ap.vonage.comを利用すれば良いです。そうすると、シンガポールとシドニーを含んだ接続情報になります。

  • <Domain>.sip-ap.vonage.com ( APAC - アジア太平洋地域)
    • <Domain>.sip-ap-3.vonage.com (シンガポール)
      • シンガポール Proxy1: <Domain>.sip-eu-3-1.vonage.com
      • シンガポール Proxy2: <Domain>.sip-eu-3-2.vonage.com
    • <Domain>.sip-ap-4.vonage.com (シドニー)
      • シドニー Proxy1: <Domain>.sip-eu-4-1.vonage.com
      • シドニー Proxy2: <Domain>.sip-eu-4-2.vonage.com
  • <Domain>.sip-us.vonage.com ( AMER - アメリカ大陸地域)
    • <Domain>.sip-us-3.vonage.com (バージニア)
      • バージニア Proxy1: <Domain>.sip-us-3-1.vonage.com
      • バージニア Proxy2: <Domain>.sip-us-3-2.vonage.com
    • <Domain>.sip-us-4.vonage.com (オレゴン)
      • オレゴン Proxy1: <Domain>.sip-us-4-1.vonage.com
      • オレゴン Proxy2: <Domain>.sip-us-4-2.vonage.com
  • <Domain>.sip-eu.vonage.com ( EMEA - ヨーロッパ、中東、アフリカ地域)
    • <Domain>.sip-eu-3.vonage.com (ダブリン)
      • ダブリン Proxy1: <Domain>.sip-us-3-1.vonage.com
      • ダブリン Proxy1: <Domain>.sip-us-3-2.vonage.com
    • <Domain>.sip-eu-4.vonage.com (フランクフルト)
      • フランクフルト Proxy1: <Domain>.sip-eu-4-1.vonage.com
      • フランクフルト Proxy2: <Domain>.sip-eu-4-2.vonage.com

認証について

SIP Trunk(PSIP) は作成した認証リストで SIP のリクエスト元に認証を要求して、認証することができます。更に、アクセス制御リスト( ACL )を設定して、特定の SIP インフラからのみの接続を許可することができます。

電話番号について

Vonage を介して外線電話に繋ぐ場合、発信元および宛先電話番号は E.164 形式である必要があります。

  • 発信元番号が050xxxxyyyyの場合は8150xxxxyyyy
  • 宛先電話番号が03xxxxyyyyの場合は813xxxxyyyy

音声コーデックについて

Vonage は以下の音声コーデックに対応しています。

  • PCMA(G711a)
  • PCMU(G711u)
  • iLBC
  • g729(Annex B と Annex D はサポートしていません)
  • g722
  • Speex16

Vonage が使用するポートについて

Vonage の全ての機能は以下の IP アドレス範囲になります。

  • 216.147.0.0/18
  • 168.100.64.0/18

ポート範囲について

タイプ ポート
HTTP Callbacks(WebHooks) TCP ports 80 or 443
WebSockets TCP ports 443
SIP UDP on port 5060
TCP on port 5060
TLS on port 5061
RTP/Media UDP ports 10000 - 50000

DTMF について

Vonage は RFC 4733 (旧 RFC 2833 )のアウト(オブ)バンド DTMF に対応しています。

ヘルスチェック

OPTIONS メソッドにより、SIP Trunk のヘルスチェックを行います。

TLS

Vonage はセキュアな SIP 通信に TLS を使います。 Vonage は証明書の検証を行いませんので、 IP-PBX 等に自己署名証明書を利用することができます。 TLS はバージョン 1.2 を許可しているため、古いバージョンは接続できません。

RTP

Vonage は音声等のメディア通信には RTP を使います。暗号化接続時は SRTP を使用します。 Vonage が対応する SRTP の暗号スイートはAES_CM_128_HMAC_SHA1_80です。

セッションタイマー

Vonage はセッションタイマー( RFC 4028 )に対応しています。

補足情報

関連する公式ドキュメントは以下の通りです。

Vonage SIP の設定について

では実際に SIP の設定を行ってみましょう。

SIP メニューの選択

Vonage ダッシュボード画面にて、左メニューの「機能と管理」の中の「 SIP 」を選択します。

SIP Menu

SIP Trunks メニューの確認

「 SIP 」メニューを選択すると、設定一覧画面が表示されます。この画面では、

  • 現在設定されている SIP Trunk の設定が一覧表示され、確認することができます
  • SIP Trunk の設定を追加することができます
  • SIP Trunk 設定を編集・削除することができます

すでに設定がある場合は下図のように一覧が表示されますが、設定がない場合は一覧表示がありませんので早速「+ Create New 」から新規追加してみましょう。

SIP Trunks Menu

SIP Trunk の作成

「+ Create New 」ボタンを押したら下記画面が表示されます。画面に従って「 Domain Name 」に作成したい SIP ドメインを記入して「 Create 」ボタンを押します。

Create New SIP Trunk

SIP Trunk の確認

入力した SIP Domain が Vonage に数多ある SIP Domain のなかで誰にも使用されていなければ、入力した SIP Domain が作成されて下記画面が表示されます。

確認のために、「 Edit trunk 」ボタンを押してみましょう。

SIP Trunk Edit

SIP Trunk のタイプについて

作成した SIP Trunk にはタイプが下記の通り 2 種類あります。

  • Trunk (デフォルト)
  • Application ( PSIP )

上述の表を思い出して欲しいのですが利用したいシーンに応じて、ここでタイプを選択して使用することになります。今回はこのまま SIP Trunk で進めていくので設定は変更しません。「 Cancel 」ボタンを押してください。

Edit SIP Trunk

SIP Trunk の有効化準備

さて、ここまでで SIP Trunk の準備が一旦整いました。実際に利用するためにはインターネット上の有害なアクセスから保護するために「 Add Authentication 」ボタンを押して認証設定を追加します。

Add Authentication

認証設定および ACL の追加

下図の通り、 Vonage が接続を許可する認証設定と ACL 設定を追加してください。

  • 認証設定には「 User Key 」と「 Secret 」情報を記載します。特に「 Secret 」は 12 文字以上 64 文字以内で、少なくとも数字 1 桁、大文字と小文字を 1 桁含む必要があります。
  • ACL は IP アドレスを記載します。「 Range 」指定できますので、範囲で指定したい場合は適宜指定してください。下図の記載例では10.20.30.40/32を意味しますので、10.20.30.40からだけのアクセスを許可することになります。

Edit Authentication

SIP Trunk 発信準備完了

ACL および認証設定が完了すると下記画面が表示され、発信準備が完了したことが案内されます。

Enabled Outbound

SIP Trunk 着信設定

続いて、 Vonage に着信があった時の着信先を設定していきます。 Add URI メニューに以下の項目をそれぞれ設定していき、設定できたら「+」ボタンを押して設定を追加します。

  • Priority(優先度を 0-100 の間で指定できます。 0 が最も優先度が高く、 URI を複数設定する場合は同じ優先度が指定できません。)
  • URI ( Vonage SIP Trunk への着信を、実際に着信させたい IP-PBX といった設備の宛先を記載します。記載方法は以下を参照ください。)
    • <user>@<domain>.<host>:<port>
    • <domain>.<host>:<port>
    • <user>@<ip>:<port>
    • <ip>:<port>
  • Timeout (ミリセカンド単位指定で最大 20 秒まで指定可能です。指定しない場合はデフォルト値である 5 秒が設定されます。)
  • TLS/SRTP ( IP-PBX といった着信先への暗号化接続の有無です。必要に応じて設定してください。)

Enabled Inbound

SIP Trunk への発信要求時の暗号化接続について

上記の設定で SIP Trunk の着信先への暗号化指定は GUI 上で設定することができました。 SIP Trunk への発信要求時の暗号化接続については、デフォルトの場合、リクエスト元が暗号化接続を要求すれば暗号化接続できますし、暗号化接続を要求しなければ暗号化なしで接続することができます。つまり設定不要なのですが少しわかりにくいと思いますので実際の設定値を cURL による PSIP API の実行例と合わせて紹介していきます。

cURL 実行例
curl -u <APIKEY>:<APISECRET> https://api.nexmo.com/v1/psip/kwc-hogehoge
cURL 実行結果
{
    "acl": [
        "***.***.***.***/32"
    ],
    "description": "",
    "digest_auth": true,
    "domain_type": "trunk",
    "name": "kwc-hogehoge",
    "owner": "********",
    "srtp": "optional",
    "tls": "optional"
}
発信要求時に参照される暗号化パラメータ

cURL の実行結果を見てお気付きかと思いますが、"srtp": "optional""tls": "optional"が暗号化に関連した設定値になります。指定可能な値と意味は以下のとおりです。

srtp と tls に指定できる値 意味
always 常に暗号化接続します。
never 暗号化接続しません。
optional リクエストに応じて暗号化接続と暗号化しない接続が可能(デフォルト)。

電話番号の関連付け

ここまでで SIP Trunk の設定は完了しましたが、あともう一息です。最後に SIP Trunk に電話番号を割り当てます。電話番号は事前に取得しておく必要がありますので、まだ取得していない場合はVonageで電話番号を取得する方法をご参照のうえ取得してください。

電話番号を取得済みであれば、画面最下部の Link numbers メニューに割り当て可能な番号一覧が表示されますので、割り当てたい番号を選んで「 Link 」ボタンを押してください。

Link Phone Number

SIP Trunk の発信・着信の準備完了

おめでとうございます。これで Vonage SIP Trunk による電話発信と電話着信が可能になりました。関連付けた電話番号に電話をかけてみてください。通話がうまくいかない場合は Vonage の音声ログを確認したり、独自に準備した IP-PBX 側で通信パケットを取得して Wireshark といったソフトで確認してみてください。
Ready to receive calls

おわりに

前半の内容はこれで終わりです。今回は SIP Trunking を中心とした内容でしたが、後半の記事は Vonage PSIP を中心とした内容になります。後半の記事もご参照ください。

さらに後半で IP-PBX を Vonage PSIP で代用して動作確認する内容も解説していきますので、 IP-PBX をお持ちでなかったり準備できない方はこのまま後半の記事も読み進めてください。

参考

KWCPLUS

Discussion