2017年4月19日 更新
以下の設定を行うことによって、意図している正規のSIPサーバからの着信のみを受付け、
さらに、着信ポートごとに着信を許可するSIPサーバを指定することもできるようになる。
○設定に際して必要になる知識
通常、SIP着信を受けるためには、上位のSIPサーバに自分(クライアント)のIPアドレスなどを伝える必要がある。
これを「レジスト」と言う。レジストは数分置きにSIP制御ソフトウェアが自動的に行う。
クライアントのIPアドレスと通信ポート番号を知った「レジスト済みサーバ」から着信がやってくる。
ところが、
「レジスト済みサーバ」ではなく、知らない相手からも着信がやってくる場合がある。
知らないサーバとは、「レジスト済みのSIPサーバ」ではない不特定の相手ことである。
ネットワークの世界ではIPアドレスさえわかれば相手先に通信可能だからだ。
意図している「レジスト済みサーバ」からのものを正規の着信とすれば、
そうではない不特定の相手からのものは、不正な着信と言えるだろう。
不正な着信を回避する対策としては、
「レジスト済みのSIPサーバ」からのSIP着信かどうかをできる限り判別して受け入れるように設定することである。
ネットワークのIPレベルで、特定のSIPサーバからのアクセスを拒絶したり、受け入れたりすることもできるが、
ここでは、「設定方法」に示すように、RT57iにおいて簡易にSIPレベルでの対策を取り上げている。
「レジスト済みのSIPサーバ」からの正規の着信の場合、
「レジスト済みのSIPサーバ」はクライアントのレジスト情報を把握しているので、
その着信SIPメッセージにはクライアントのユーザー情報が含まれている。(=電話ユーザー名)(=SIPメッセージの To:ヘッダー)
そこで着信プロセス時に、
SIPサーバからのSIPメッセージに含まれているこの「電話ユーザー名」と、
クライアントで自明なそれとを照合することで、
この着信が 「レジスト済みのSIPサーバ」からの正規のものかどうかをある程度は判断できる。
(ただ、詐称の可能性もないとは言えないので完璧な方法ではないだろう。)
○設定方法(YAMAHA RT57iの場合)
アナログポートごとに、着信時に照合する「電話ユーザー名」を設定する必要がある。
下記の
方法2がおすすめです。
(注意)設定が適切でなければ、着信が全くできなくなってしまう。
<方法1>
analog sip call mynameコマンドを使う方法
ただし、これでは、
サーバーからのSIPメッセージの「電話ユーザー名」と照合するキーを一つしか登録できないので、
複数の「レジスト済みのSIPサーバ」からの着信を受ける場合には対応できない。
アナログポートごとに「レジスト済みのSIPサーバ」が一つだけなら、この方法でよい。
(例)
アナログポート1において、正規のサーバからの通信を許可する設定する。
クライアントが正規のサーバに対して登録した「電話ユーザー名」654321 をつかって、
サーバーからのSIPメッセージの「電話ユーザー名」を照合し、合致すればその着信を許可する。
analog sip arrive permit 1 myname
analog sip call myname 1 sip:654321
> analog sip arrive permit ?
入力形式: analog sip arrive permit ポート番号 スイッチ
ポート番号 = 1-2, スイッチ = 'on', 'off' or 'myname'
説明: 指定したアナログポートのSIP着信に対する設定を行います
デフォルト値: on
> analog sip call myname ?
入力形式: analog sip call myname ポート番号 ユーザ名
ポート番号 = 1-2
説明: 指定したアナログポートのSIP発信の際に使用される自己SIPアドレス
を設定します
デフォルト値: sip:rt57i
<方法2>
analog sip arrive myaddressコマンドを使う方法
SIPメッセージの「電話ユーザー名」と照合できるキーを複数、列挙できるので、
「電話ユーザー名」の異なる「レジスト済みのSIPサーバ」が複数ある場合でも対応できる。
(例)
アナログポート1において、正規のサーバからの通信を許可する設定する。
クライアントが正規のサーバに対して登録した「電話ユーザー名」をつかって、
サーバーからのSIPメッセージの「電話ユーザー名」を照合し、合致すればその着信を許可する。
また、クライアントが正規のサーバに対して登録した「電話ユーザー名」を次のように複数設定する。
一つ目、654321
二つ目、765432
三つ目、876543
analog sip arrive permit 1 myname
analog sip arrive myaddress 1 1 sip:654321
analog sip arrive myaddress 1 2 sip:765432
analog sip arrive myaddress 1 3 sip:876543
> analog sip arrive permit ?
入力形式: analog sip arrive permit ポート番号 スイッチ
ポート番号 = 1-2, スイッチ = 'on', 'off' or 'myname'
説明: 指定したアナログポートのSIP着信に対する設定を行います
デフォルト値: on
> analog sip arrive myaddress ?
入力形式: analog sip arrive myaddress ポート番号 登録番号 ユーザ名( SIPア
ドレス )
ポート番号 = 1-2
説明: 指定したアナログポートのSIP着信の際に使用される自己SIPアドレス
を設定します
■RTA55iの場合は、次のように指定することができた。
例えば、TELポート1への着信を制御してみる。
予め次のようにして、SIPサーバ「192.30.25.25」にレジストを行っている。
sip server 1 192.30.25.25 register udp sip:01_group01@SIPSERVER 01_group01 PASSWARD
そして、次のようにして、先ず着信しないようにする。
(mynameで定義した"nooneknowsthis"に一致するTo:ヘッダーを持つSIPメッセージなら受け取る。)
analog sip use arrive 1 myname
analog sip use call 1 off
analog sip call myname 1 sip:nooneknowsthis
試しに、この段階で着信させてみると、次のようにログを確認できた。
[SIP] SIP Call from [sip:070xxxxxxxx@192.30.25.25] to [sip:01_group01@192.168.50.50] rejected.
発信元電話番号「070xxxxxxxx」がSIPサーバ「192.30.25.25」を経て、
ヤマハルーター「192.168.50.50」にユーザー名「01_group01」で着信してきたが、条件に不一致なので拒否されている。
(”nooneknowsthis”に一致するTo:ヘッダーを持つSIPメッセージのみ受け取ることになっている。)
レジスト先のSIPサーバからの着信時には、To:ヘッダーに、sip:01_group01@192.168.50.50 が含まれているので、これの着信を許可する。
次のように設定を追加する。@以下のアドレスも含みいれる必要がある。
analog sip arrive myaddress 1 11 sip:01_group01@192.168.50.50
複数のサーバにレジストしているなら、増やすこともできる。
analog sip arrive myaddress 1 11 sip:01_group01@192.168.50.50
analog sip arrive myaddress 1 12 sip:myid123@192.168.168.168
analog sip arrive myaddress 1 13 sip:home@172.16.16.16
TELポート1に指定した3つのSIPサーバからのみ着信が来るようになる。
TELポート2でも、特定のSIPサーバからの着信を受け付けるように設定すると、
SIPサーバに応じて着信させるTELポートを分けることができる。
(参考)
・RTシリーズのインターネット電話機能に関するFAQ
無言電話がかかってくる / 不正なSIPパケットを受信する
<
http://www.rtpro.yamaha.co.jp/RT/FAQ/VoIP/troublevoip-ans.html > 2012年10月14日
・不正なSIPパケット受信による無言電話現象の多発について
<
http://www.rtpro.yamaha.co.jp/RT/FAQ/Security/sip_trouble.html > 2012年10月14日