2007年8月28日火曜日

家庭内PBX level2 - その13 - 他のSIPサーバへの発信

世に多くのSIPサーバがあれども、
イントラネット内で閉じていたり
キャリアのネットワーク内で閉じていたりと、
横のつながりが皆無なんですよね、SIPって。
さらに技術的に痛いのは、NAT越えの難しさだったりします。
SIPが策定され始めたころは
電話網を置き換えるかとも思われましたが、
いろいろな思惑や内包された制限により、
それが単なる幻想であると思うようになりました。
これは私がSIPではなく、
jabberによる電話網の置き換えを支持する理由の1つです。

それでもSIPをなんとかしようと思っている方も結構いらっしゃって、
SIP IX のようなサーバ相互接続も盛んになっています。
本当はこんなことをしなくても DNS と SIP URI で
しっかり連携できるはずなんですけどねえ、理想的に言えば。

さて、Asterisk でもきっとできるはずと思い試行錯誤した結果、
しっかり動作しましたのでここに書き残しておきます。
なお、Adminsparadise 1.1 ベースのAsteriskサーバを2台と
DNSサーバを1台使って試験しました。
今回は発呼側の設定です。

設定ファイル /etc/asterisk/sip.conf の [general] セッションに
srvlookup=yes
を追加します。
これでSIP電話機(ソフトフォン)から"1000"のような内線番号ではなく、
"2000@sample.com" のような SIP URI で
相手先サーバへの発呼が可能となります。

と思ったのですが、Asterisk と電話機のどちらが悪いのかわかりませんが、
SIP URI では発呼できません。
しょうがないので番号計画に取り込んでしまいます。
設定ファイル /etc/asterisk/extensions.conf の [from-internal] セッションに
exten => _80001.,1,Dial(SIP/${EXTEN:5}@sample.com)
exten => _80001.,2,Macro(outisbusy,)
のような2行を追加します。
これは、8発信でサーバ局番0001を指定したとき
sample.com のSIPサーバに接続することを意味し、
例えば、"800012000"をダイヤルすると
SIP URI で"2000@sample.com"に発呼することになります。

もし、他のドメイン宛てについても登録したければ、
先の2行のサーバ局番とドメイン名を変更して追加すればよいでしょう。
ただこの方法ですと接続先の数だけ設定を追加する必要があり、
ローカルでしか意味を成さないサーバ局番をドメイン名と無関係に定義し、
エンドユーザにアナウンスする必要があります。
また、新たな接続先を登録するのもスマートとはいえません。
やはり、ここで示した方法を応用して SIP IX に
アドレス解決を振ったほうがいいのかもしれませんね。
今回はあくまでも実験ですのでここまでで修了とします。

0 件のコメント:

コメントを投稿