いろ電話研究所の研究日誌

SIP-to-SIPコール TELNYX編

2022-06-08 15:12
画像

前回の記事で、TELNYXsip:test40566@sip.telnyx.comsip:alice48782@sip.telnyx.com という 2つの SIP URI を持つ SIPユーザを作成した。

今回はこの 2人のユーザ間での通話、そして TELNYX の外部の SIP URI を持つ SIPユーザとの通話が行えることを紹介する。

MicroSIP から GS Wave へ

いま、 sip:test40566@sip.telnyx.com は Windows の MicroSIP から SIP REGISTER している。 sip:alice48782@sip.telnyx.com は Android の GS Wave から SIP REGISTER している。

まず、test40566 から alice48782 へ発信してみる。

画像

宛先欄にキーボードで、sip:~ から始まる SIP URI を打ち込んで、発信ボタンをクリックする。

画像

しかし、Invalid SIP URI calling preference D30 というエラーが返ってきて発信することができない。

このときの、MicroSIP のログを抜粋すると以下の通りとなっている。

Via: SIP/2.0/TLS 172.30.128.11:64826;rport;branch=z9hG4bKPj6983df17a3aa4df98020c3746e86e2cb;alias
Max-Forwards: 70
From: <sip:test40566@sip.telnyx.com>;tag=bce7269ade244c368a60ef77b159c6e5
To: <sip:alice48782@sip.telnyx.com>
Contact: <sip:test40566@172.30.128.11:64826;transport=TLS;ob>
Call-ID: 1021ca40809143baac8110f714ab50f9
CSeq: 28344 INVITE
Route: <sip:sip.telnyx.com;transport=tls;lr>
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: MicroSIP/3.21.1
Content-Type: application/sdp
Content-Length:   722

v=0
o=- 3863675828 3863675828 IN IP4 172.30.128.11
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4002 RTP/AVP 96 0 97 98 8 101 102 103 104
c=IN IP4 172.30.128.11
b=TIAS:64000
a=rtcp:4003 IN IP4 172.30.128.11
a=sendrecv
a=rtpmap:96 opus/48000/2
a=fmtp:96 maxplaybackrate=24000;sprop-maxcapturerate=24000;maxaveragebitrate=64000;useinbandfec=1
a=rtpmap:0 PCMU/8000
a=rtpmap:97 speex/32000
a=rtpmap:98 SILK/16000
a=fmtp:98 useinbandfec=0
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/48000
a=fmtp:101 0-16
a=rtpmap:102 telephone-event/8000
a=fmtp:102 0-16
a=rtpmap:103 telephone-event/32000
a=fmtp:103 0-16
a=rtpmap:104 telephone-event/16000
a=fmtp:104 0-16
a=ssrc:907949415 cname:31961b97571432d0

MicroSIP から TELNYX の Proxy(sip.telnyx.com)経由で sip:alice48782 を INVITE。

SIP/2.0 100 Telnyx Trying
Via: SIP/2.0/TLS 172.30.128.11:64826;rport=63189;branch=z9hG4bKPj6983df17a3aa4df98020c3746e86e2cb;alias;received=126.100.241.238
From: <sip:test40566@sip.telnyx.com>;tag=bce7269ade244c368a60ef77b159c6e5
To: <sip:alice48782@sip.telnyx.com>
Call-ID: 1021ca40809143baac8110f714ab50f9
CSeq: 28344 INVITE
Server: Telnyx SIP Proxy
Content-Length: 0



SIP/2.0 403 Invalid SIP URI calling preference D30
Via: SIP/2.0/TLS 172.30.128.11:64826;received=126.100.241.238;rport=63189;branch=z9hG4bKPj6983df17a3aa4df98020c3746e86e2cb;alias
Max-Forwards: 69
From: <sip:test40566@sip.telnyx.com>;tag=bce7269ade244c368a60ef77b159c6e5
To: <sip:alice48782@sip.telnyx.com>;tag=2e2K0DBNgF33c
Call-ID: 1021ca40809143baac8110f714ab50f9
CSeq: 28344 INVITE
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REFER, NOTIFY
Supported: path
Allow-Events: talk, hold, conference, refer
Reason: Q.850;cause=16;text="NORMAL_CLEARING"
Content-Length: 0

TELNYX から MicroSIP へのレスポンス。403 Invalid SIP URI calling preference D30 を返して終了。

TELNYX の Inbound 設定

実は、TELNYX で発行する SIPユーザは、デフォルトでは他者からの通話を一切受け取らない設定になっている。

着信を受けるためには、TELNYX Portal に入って設定を変更する。

画像

SIP Connections で着信を受けたいアカウントの BASIC OPTIONS をクリック。

画像

INBOUND タブをクリック。

画像

Receive SIP URI Calls が Disabled(無効) になっているので、From anyone(誰からでも受ける) に変更する。

Only from my Connections は内線のみ(=同じ TELNYXアカウントで発行した SIPユーザ同士だけ)受け取る設定になる。

Save All Changes ボタンをクリックして設定を保存する。

画像

あらためて、MicroSIP から sip:alice48782@sip.telnyx.com に発信してみる。

画像

スマホの GS Wave に着信するので、Answer をクリックすると通話することができる。test40566 を名乗る人物からの通話であることがわかる。これは後述するように自称であって、本当にその SIP URI を使っているユーザかどうかはわからない。

このときの、MicroSIP のログを抜粋すると以下の通りとなっている。

INVITE sip:alice48782@sip.telnyx.com;transport=tls SIP/2.0
Via: SIP/2.0/TLS 172.30.128.11:64826;rport;branch=z9hG4bKPjab74142c5bd546688d9bdad7527f4992;alias
Max-Forwards: 70
From: <sip:test40566@sip.telnyx.com>;tag=aeebbad8a58144489fb8eb76207c78b4
To: <sip:alice48782@sip.telnyx.com>
Contact: <sip:test40566@172.30.128.11:64826;transport=TLS;ob>
Call-ID: fce69dc91846459aaed0aa57a10d7933
CSeq: 3861 INVITE
Route: <sip:sip.telnyx.com;transport=tls;lr>
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: MicroSIP/3.21.1
Content-Type: application/sdp
Content-Length:   722

v=0
o=- 3863683140 3863683140 IN IP4 172.30.128.11
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4006 RTP/AVP 96 0 97 98 8 101 102 103 104
c=IN IP4 172.30.128.11
b=TIAS:64000
a=rtcp:4007 IN IP4 172.30.128.11
a=sendrecv
a=rtpmap:96 opus/48000/2
a=fmtp:96 maxplaybackrate=24000;sprop-maxcapturerate=24000;maxaveragebitrate=64000;useinbandfec=1
a=rtpmap:0 PCMU/8000
a=rtpmap:97 speex/32000
a=rtpmap:98 SILK/16000
a=fmtp:98 useinbandfec=0
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/48000
a=fmtp:101 0-16
a=rtpmap:102 telephone-event/8000
a=fmtp:102 0-16
a=rtpmap:103 telephone-event/32000
a=fmtp:103 0-16
a=rtpmap:104 telephone-event/16000
a=fmtp:104 0-16
a=ssrc:454494029 cname:0af65b41137b6f29

MicroSIP の sip:test40566 から sip:alice48782 を INVITE。ヴォコーダーとして、Opus 48k、PCMU 8K、Speex 32K、SILK 16K、PCMA 8K を提示。

SIP/2.0 100 Telnyx Trying
Via: SIP/2.0/TLS 172.30.128.11:64826;rport=63189;branch=z9hG4bKPjab74142c5bd546688d9bdad7527f4992;alias;received=126.100.241.238
From: <sip:test40566@sip.telnyx.com>;tag=aeebbad8a58144489fb8eb76207c78b4
To: <sip:alice48782@sip.telnyx.com>
Call-ID: fce69dc91846459aaed0aa57a10d7933
CSeq: 3861 INVITE
Server: Telnyx SIP Proxy
Content-Length: 0



SIP/2.0 180 Ringing
Via: SIP/2.0/TLS 172.30.128.11:64826;received=126.100.241.238;rport=63189;branch=z9hG4bKPjab74142c5bd546688d9bdad7527f4992;alias
Record-Route: <sip:10.255.0.1;transport=tcp;r2=on;lr;ftag=aeebbad8a58144489fb8eb76207c78b4>
Record-Route: <sip:192.76.120.10:5061;transport=tls;r2=on;lr;ftag=aeebbad8a58144489fb8eb76207c78b4>
From: <sip:test40566@sip.telnyx.com>;tag=aeebbad8a58144489fb8eb76207c78b4
To: <sip:alice48782@sip.telnyx.com>;tag=B3yUpttSv129S
Call-ID: fce69dc91846459aaed0aa57a10d7933
CSeq: 3861 INVITE
Contact: <sip:alice48782@10.13.6.4:5070;transport=tcp>
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REFER, NOTIFY
Supported: path
Allow-Events: talk, hold, conference, refer
Content-Length: 0



SIP/2.0 200 OK
Via: SIP/2.0/TLS 172.30.128.11:64826;received=126.100.241.238;rport=63189;branch=z9hG4bKPjab74142c5bd546688d9bdad7527f4992;alias
Record-Route: <sip:10.255.0.1;transport=tcp;r2=on;lr;ftag=aeebbad8a58144489fb8eb76207c78b4>
Record-Route: <sip:192.76.120.10:5061;transport=tls;r2=on;lr;ftag=aeebbad8a58144489fb8eb76207c78b4>
From: <sip:test40566@sip.telnyx.com>;tag=aeebbad8a58144489fb8eb76207c78b4
To: <sip:alice48782@sip.telnyx.com>;tag=B3yUpttSv129S
Call-ID: fce69dc91846459aaed0aa57a10d7933
CSeq: 3861 INVITE
Contact: <sip:alice48782@10.13.6.4:5070;transport=tcp>
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REFER, NOTIFY
Supported: path
Allow-Events: talk, hold, conference, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 311

v=0
o=FreeSWITCH 1654642855 1654642856 IN IP4 64.16.228.11
s=FreeSWITCH
c=IN IP4 64.16.228.11
t=0 0
m=audio 19100 RTP/AVP 96 101
a=rtpmap:96 opus/48000/2
a=fmtp:96 useinbandfec=1
a=rtpmap:101 telephone-event/48000
a=fmtp:101 0-15
a=sendrecv
a=ptime:20
a=mid:audio
a=rtcp:19101 IN IP4 64.16.228.11

TELNYX からレスポンス。Ringing(相手を呼び出した)した後、応答(3861 INVITE に対して 200 OK)。

ヴォコーダーは Opus 48K がマッチしたのでこれを使って SDP を開通。

MicroSIP は通話終了後に、回線品質の結果をログに残すのでそこも抜粋しておく。

 [DISCONNCTD] To: <sip:alice48782@sip.telnyx.com>;tag=B3yUpttSv129S
   Call time: 00h:00m:11s, 1st res in 1094 ms, conn in 14972ms
   #0  audio opus @24kHz, sendrecv, peer=64.16.228.11:19100
      EC stat: WebRTC delay metric: median=4, std=84, frac of poor delay=0.38
      SRTP status: Not active Crypto-suite: 
      RX pt=96, last update:00h:00m:00.714s ago
         total 459pkt 44.0KB (62.4KB +IP hdr) @avg=31.7Kbps/44.9Kbps
         pkt loss=0 (0.0%), discrd=0 (0.0%), dup=0 (0.0%), reord=0 (0.0%)
               (msec)    min     avg     max     last    dev
         loss period:   0.000   0.000   0.000   0.000   0.000
         jitter     :   1.208  19.387  20.041  20.000   2.321
      TX pt=96, ptime=20, last update:00h:00m:03.142s ago
         total 556pkt 29.1KB (51.3KB +IP hdr) @avg=20.9Kbps/36.9Kbps
         pkt loss=2 (0.4%), dup=0 (0.0%), reorder=0 (0.0%)
               (msec)    min     avg     max     last    dev 
         loss period:  40.000  40.000  40.000  40.000   0.000
         jitter     :   0.666   3.896   7.125   0.666   3.229
      RTT msec      : 352.000 361.500 371.000 352.000   9.500

RX が受信側、TX が送信側。RTT が 352~371msec と大きいのは SDP用の EBCルータがシカゴにある TELNYX(AS63440)に置かれているためと思われる。

GS Wave から MicroSIP へ

次に逆もやってみる。予め TELNYX Portal の test40566 の INBOUND の Receive SIP URI CallsFrom anyone(誰からでも受ける) に変更しておく。

画像

宛先欄にキーボードから、test40566@sip.telnyx.com と入力して Dial をタップ。GS Wave では SIP URI の先頭の SIPスキーマを表す sip: は自動で付与されるので省略する。

画像

呼び出す。

画像

alice40782 を名乗る人から着信。

画像

通話開始。

このときの、GS Wave の SIPログから抜粋。

INVITE sip:test40566@sip.telnyx.com SIP/2.0
Via: SIP/2.0/TLS 172.30.128.24:38278;branch=z9hG4bK780796238;rport;alias
Route: <sip:sip.telnyx.com:5061;lr>
From: <sip:alice48782@sip.telnyx.com:5061>;tag=1391995298
To: <sip:test40566@sip.telnyx.com>
Call-ID: 804354783-57715-2@BHC.DA.BCI.CE
CSeq: 11 INVITE
Contact: <sip:alice48782@172.30.128.24:38278;transport=tls>
Proxy-Authorization: Digest username="alice48782", realm="sip.telnyx.com", nonce="f8f97acb-89f6-42fd-907b-3aa5463fb1c4", uri="sip:test40566@sip.telnyx.com", response="a076878fc965f93a3929bb067d3fb3d4", algorithm=MD5, cnonce="11978798", opaque="a2590950-24f1-4ded-954f-02a64eb9e611/10.13.2.4", qop=auth, nc=00000001
Max-Forwards: 70
User-Agent: Grandstream Wave 1.0.3.34
Privacy: none
P-Preferred-Identity: <sip:alice48782@sip.telnyx.com:5061>
Supported: replaces, path, timer, eventlist
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER, UPDATE, MESSAGE
Content-Type: application/sdp
Accept: application/sdp, application/dtmf-relay
Content-Length:   310

v=0
o=alice48782 8000 8000 IN IP4 172.30.128.24
s=SIP Call
c=IN IP4 172.30.128.24
t=0 0
m=audio 48474 RTP/AVP 123 0 8 101
a=sendrecv
a=rtcp:48475 IN IP4 172.30.128.24
a=rtpmap:123 opus/48000/2
a=ptime:20
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

sip:test40566@sip.telnyx.com を INVITE。

ヴォコーダーは Opus 48K、PCMU 8K、PCMA 8K を提案。

SIP/2.0 100 Telnyx Trying
Via: SIP/2.0/TLS 172.30.128.24:38278;branch=z9hG4bK780796238;rport=63435;alias;received=126.100.241.238
From: <sip:alice48782@sip.telnyx.com:5061>;tag=1391995298
To: <sip:test40566@sip.telnyx.com>
Call-ID: 804354783-57715-2@BHC.DA.BCI.CE
CSeq: 11 INVITE
Server: Telnyx SIP Proxy
Content-Length: 0



SIP/2.0 180 Ringing
Via: SIP/2.0/TLS 172.30.128.24:38278;received=126.100.241.238;branch=z9hG4bK780796238;rport=63435;alias
Record-Route: <sip:10.255.0.1;transport=tcp;r2=on;lr;ftag=1391995298>
Record-Route: <sip:192.76.120.10:5061;transport=tls;r2=on;lr;ftag=1391995298>
From: <sip:alice48782@sip.telnyx.com:5061>;tag=1391995298
To: <sip:test40566@sip.telnyx.com>;tag=ySvS75r8mQ5FS
Call-ID: 804354783-57715-2@BHC.DA.BCI.CE
CSeq: 11 INVITE
Contact: <sip:test40566@10.13.2.4:5070;transport=tcp>
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REFER, NOTIFY
Supported: path
Allow-Events: talk, hold, conference, refer
Content-Length: 0
X-Telnyx-Session-ID: b1a1e594-e6e4-11ec-bc2e-02420a0da969
X-Telnyx-Leg-ID: b1a1dfae-e6e4-11ec-97b5-02420a0da969



SIP/2.0 200 OK
Via: SIP/2.0/TLS 172.30.128.24:38278;received=126.100.241.238;branch=z9hG4bK780796238;rport=63435;alias
Record-Route: <sip:10.255.0.1;transport=tcp;r2=on;lr;ftag=1391995298>
Record-Route: <sip:192.76.120.10:5061;transport=tls;r2=on;lr;ftag=1391995298>
From: <sip:alice48782@sip.telnyx.com:5061>;tag=1391995298
To: <sip:test40566@sip.telnyx.com>;tag=ySvS75r8mQ5FS
Call-ID: 804354783-57715-2@BHC.DA.BCI.CE
CSeq: 11 INVITE
Contact: <sip:test40566@10.13.2.4:5070;transport=tcp>
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REFER, NOTIFY
Supported: path
Allow-Events: talk, hold, conference, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 336

v=0
o=FreeSWITCH 1654644487 1654644488 IN IP4 64.16.228.7
s=FreeSWITCH
c=IN IP4 64.16.228.7
t=0 0
m=audio 18574 RTP/AVP 123 101
a=rtpmap:123 opus/48000/2
a=fmtp:123 useinbandfec=1; minptime=10; maxptime=40
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
a=ptime:20
a=mid:audio
a=rtcp:18575 IN IP4 64.16.228.7

TELNYX からレスポンス。Opus 48K がマッチしたので SDP 開通。

外部サービスの SIP URI から着信

test40566 と alice48782 間の通話は SIP を使っているとは言え、仕組み的にはまだ内線の状態のままだ。

SIP URI を使った、VoIP to VoIPコールの真髄、SIP URI だけあれば世界中の SIPユーザと相互に無料で通話できるというメリットが享受できていない。

今度は、TELNYX 以外のサービスから SIP URI で発信してみる。TELNYX以外の SIP URI を発行してくれるサービスとして、OnSIP があるので OnSIP のユーザとの通話を試してみる。

OnSIP は 2004年創業のニューヨーク企業、Junction Networks社が提供する無料の SIPプロバイダーで TELNYX のように SIP URI を使った通話が使えるサービスを提供している。OnSIP のサインアップはすこし難しいので機会があれば別の記事で紹介する。

画像

詳細は割愛するが、OnSIP で sip:test@sqm.onsip.com というユーザを作成した。

これを、MicroSIP に登録する。

画像

SIPサーバが OnSIP で表示される DomainSIPプロキシOutbound Proxy、ユーザ名が Username、ドメインが Domain、ログインが Auth Username、パスワードがパスワードになる。

sip:alice48782@sip.telnyx.com に発信してみる。

画像

sip:test@sqm.onsip.com を名乗るユーザから着信がある。もちろん、通話もできる。

TELNYX から外部サービスの SIP URI へ発信

着信がうまくいったので、今度は TELNYX の SIPユーザから、外部サービスの SIP URI(今回は OnSIPユーザ)宛に発信してみる。

画像

GS Wave から、sip:test@sqm.onsip.com へ発信してみると、、、

画像

403 Forbidden となって発信できない。

TELNYX の SIP URI は着信のみ

状況を整理すると、OnSIP の sip:test@sqm.onsip.com から TELNYX の sip:alice48782@sip.telnyx.com へ発信すると通話できた。しかし、その逆はエラーになってできなかった。

これはなにが起きているかというと、実は TELNYX が提供する SIP URI は外部からの着信は受けられるものの、発信は TELNYXユーザ宛に限られている。つまり、着信専用SIP URI として動作するようになっている。

このとき、発信できないというのはどういうことかというと、SIP を使った VoIP to VoIPコールは基本は P2P による通信なので、相手の端末を直接呼び出すが、SIPプロバイダーの便利なサービス(NAT超えやメディア変換、通話録音など)をいろいろ使いたいため、SIP Proxy を介して通話するように設定している。

どこかへ発信するときも、SIPプロバイダーが提供する SIP Proxy 宛に発信を依頼するが、TELNYX が提供する SIP Proxy は外部の SIP URI 宛の発信を制限するように設定されている。

これは、あくまで TELNYX の SIP Proxy の制限なので、SIP Proxy を使わないで直接P2P で通話してしまえばこの制限はなくなる。(ただし通話録音など、TELNYX が提供するサービスは使えない)

VoIP to VoIPコールで使う発信元の SIP URI というのはあくまで自称であって、本当にその SIP URI を持っているかどうかを調べる仕組みはない。このあたりは電子メイルアドレスと同じで、匿名ユーザからの発信もいくらでもできる状況にある。

しかし、これは発信する側からすれば SIPプロバイダーの制限などにしばられず、好きなルートから自身の SIP URI を使って発信できるということでもある。(電子メイルアドレスは発信元詐称spam があまりに増えすぎたため、SPF や DKIM などの、発信元が自身であることを主張できる仕組みが導入されてきた)

P2Pコールによる発信

それでは、GS Wave の設定をちょっと変えて、P2P で通話してみる。

画像

変更するのは 4箇所。

まず、SIP Serversip.telnyx.com:5061 から sip.telnyx.com にポート番号を消す。

Transmission Protocol を TLS から UDP に変更する。

Outbound Proxy を sip.telnyx.com から空欄にする。

そして、DNS Mode を A Record から SRV に変更する。

この設定を適用して、発信してみる。 なお、STUN は別の項目(Advanced Settings)内で stun.l.google.com:19302 を指定してある。

画像

この設定で MicroSIP に設定した sip:test@sqm.onsip.com へ発信してみると、、、

画像

着信して通話もできる。なお蛇足だが、MicroSIP側も NAT超えには STUN を設定してある。

これで、TELNYX を使う時は着信は TELNYX の SIP Proxy経由で、発信時には P2P で直接発信してやることで、外部の SIP URI を持ったユーザと通話できることがわかった。

(おまけ)SRVレコードとは

最後に、設定変更の DNS Mode で設定した、SRVレコードとはなんだったのかをカンタンに説明しておく。

インターネットでは通信相手のホスト名(FQDN)から IPアドレスを調べるため、DNS という索引のような仕組みを使っている。

DNS では汎用で使う IPv4アドレスを求めるための仕組み、Aレコード(Address Record)の他に、各サービス用に使う特殊なレコードがある。

例えば、電子メイルの配送では MXレコード(Mail eXchange Record)という項目を使う。

今後、さまざまなサービスが増え続ける中で特殊なレコードが増え続けると煩雑になるため、MXレコードのような歴史的な理由で存在するサービスを除いて、今後新たに出てくるサービスでは SRVレコード(サービスレコード、と呼ぶ。SeRVice Record)を使う、というコンセンサスがある。なお、これは必須ではなくいままでと同じく Aレコードを使い続けてもよい。

SIP の場合は、一般的に、UDP/IP の 5060ポートを待ち受けに使うので、これを SRVレコードに登録する。

フォーマットは、

_sip._udp.[FQDN].   [TTL]   [CLASS]   SRV   [priority]  [weight]  [port]  [FQDN].

になっている。例えば、先程の例で使った OnSIP のユーザに発行される SIP Domain の場合は、

% drill SRV _sip._udp.sqm.onsip.com.
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 31545
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; _sip._udp.sqm.onsip.com.     IN      SRV

;; ANSWER SECTION:
_sip._udp.sqm.onsip.com.        86400   IN      SRV     0 0 5060 sip.onsip.com.

このようなレコードが登録されている。Priority、weight が 0 0 になっているが、これはホストが 1台しかないためだ。(複数台あるときの優先度の設定のため)

TELNYX の場合は、

% drill SRV _sip._udp.sip.telnyx.com.
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 9460
;; flags: qr rd ra ; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; _sip._udp.sip.telnyx.com.    IN      SRV

;; ANSWER SECTION:
_sip._udp.sip.telnyx.com.       10800   IN      SRV     2 1 5060 sip-anycast2.telnyx.com.
_sip._udp.sip.telnyx.com.       10800   IN      SRV     1 1 5060 sip-anycast1.telnyx.com.

こちらはバックアップのホストも存在するようで、priority の異なる 2行のレスポンスが返された。

SRVレコードで返される FQDN の IPアドレス = Aレコードで返される IPアドレスの場合、GS Wave の DNS Settings はどちらでも動作するのだが、OnSIP の場合は、ここが異なる IPアドレスになっているため、SRVレコードから正しくひいていかないと、ただしいホストを探すことができない。(spam防止の為?)

蛇足の蛇足だが、Twilio では外部SIP URI に発信するとき(TwiML Bin で言うところの Dial -> SIPタグで指定する SIP Endpoint など)、SRVレコードを使わず、Aレコードを使ってホストを特定しようとする。

このため、Twilio から OnSIP のユーザに対して発信しようとしてもエラーになって通話することはできない。


COPYRIGHT (C) いろ電話研究所
This HTML file generated by pug.