2007年8月29日水曜日

家庭内PBX level2 - その14 - 他のSIPサーバからの着信

では前回の発信側に続き、今回は着信側SIPサーバ(Asterisk)の
設定についてお話します。

と、その前にDNSサーバを設定しておかなければなりません。
たとえば、"1000@asterisk.sample.com" のように、
sample.comドメインのasteriskサーバを指定した上でSIPドメインを指定するなら、
sample.comのDNSサーバにasteriskのAレコードを登録するだけでいいでしょう。
しかし、一般には"1000@sample.com"のように
ホスト名なしのドメイン名だけで運用したい場合がほとんどでしょう。
この場合はSRVレコードの登録が必要になってきます。
DNSサーバにbindを利用しているならそのホスト設定ファイル
(例えば"/var/bind/named.hosts")に以下のようにレコードを追加します。
sample.com. IN NAPTR 0 0 "s" "SIP+D2U" "" _sip._udp.sample.com.
sample.com. IN NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.sample.com.
sample.com. IN NAPTR 0 0 "s" "SIP+D2S" "" _sip._sctp.sample.com.
sample.com. IN NAPTR 0 0 "s" "SIPS+D2U" "" _sips._udp.sample.com.
sample.com. IN NAPTR 0 0 "s" "SIPS+D2T" "" _sips._tcp.sample.com.
sample.com. IN NAPTR 0 0 "s" "SIPS+D2S" "" _sips._sctp.sample.com.
_sip._udp.sample.com. IN SRV 0 0 5060 sip.sample.com.
_sip._tcp.sample.com. IN SRV 0 0 5060 sip.sample.com.
_sip._sctp.sample.com. IN SRV 0 0 5060 sip.sample.com.
_sips._udp.sample.com. IN SRV 0 0 6060 sips.sample.com.
_sips._tcp.sample.com. IN SRV 0 0 6060 sips.sample.com.
_sips._sctp.sample.com. IN SRV 0 0 6060 sips.sample.com.
sip.sample.com. IN CNAME asterisk.sample.com.
sips.sample.com. IN CNAME asterisk.sample.com.

では、Asteriskの設定です。
設定ファイル /etc/asterisk/extensions_additional.conf の [globals] セクションに
ALLOW_SIP_ANON = no
があるのでこれを
ALLOW_SIP_ANON = yes
に変更します。
このままでもSIPによる外線着信を受けられますが、
PSTN外線と同じ扱いになってしまい
せっかくの内線番号指定の意味がありません。
そこで、設定ファイル /etc/asterisk/extensions.conf の
[from-sip-external] セクションにある
exten => _.,1,NoOp(Received incoming SIP connection from unknown peer to ${EXTEN})
exten => _.,n,Set(DID=${IF($["${EXTEN:1:2}"=""]?s:${EXTEN})})
exten => _.,n,Goto(s,1)
の3行をコメントアウトし、代わりに
exten => _1XXX,1,Dial(SIP/${EXTEN})
exten => _1XXX,2,Hangup
exten => _2XXX,1,Dial(IAX2/${EXTEN})
exten => _2XXX,2,Hangup
のような番号計画に沿った転送先を指定します。
これで、ダイヤルインが可能となります。
まあ、このあたりは好みと運用方針次第で。

0 件のコメント:

コメントを投稿