AsteriskWin32からAD-200SEにレジストさせる方法

で、AsteriskからAD-200SEにレジストさせるためにパッチはいるの、いらないの?」で幕を引こうと思ったんだが、やはり胸糞悪いので、WinSharkまで引っ張り出してパケットキャプチャをして原因を究明した。

結論からいうと、Asterisk 1.2.26.2 ベースのAsteriskWin32 0.66b でもAD-200SEにレジストできる。が、Asteriskの小さなバグがあり、これを回避するように設定する必要がある。それさえできれば(確かに)パッチは必要ない

AsteriskWin32側から他のSIPサーバにレジストすることに関して、sip.confには以下のようなコメントがある。

; Asterisk can register as a SIP user agent to a SIP proxy (provider)
; Format for the register statement is:
;       register => user[:secret[:authuser]]@host[:port][/extension]
;
; If no extension is given, the ‘s’ extension is used. The extension needs to
; be defined in extensions.conf to be able to accept calls from this SIP proxy
; (provider).
;
; host is either a host name defined in DNS or the name of a section defined
; below.

太字部に従えば、以下のように設定できるはずである:

register => 7:パスワード@ad200se/201

[ad200se]
type=friend
host=AD-200SEのIPアドレス

ここで7はAD-200SEの内線番号、201はAsterisk内でこの「線」を指すために使用する内線番号である。コメントにあるように内線201番についてはextensions.confで別途設定する必要がある。

しかしこれではうまくいかない。この設定でAsteriskWin32にレジストさせようとすると、以下のようなパケットのやりとりをAD-200SEとやっている:

REGISTER sip:ad200se SIP/2.0
Via: SIP/2.0/UDP <AsteriskWin32が走っているPCのIPアドレス>:5060;branch=z9hG4bK1fdb6554;rport
From: <sip:7@<AD-200SEのIPアドレス>>;tag=as56d424cc
To: <sip:7@<AD-200SEのIPアドレス>>
Call-ID: 0b2f98883cd9673724fe5c0f402dcc90@<AsteriskWin32が走っているPCのIPアドレス>
CSeq: 110 REGISTER
User-Agent: Asterisk PBX
Max-Forwards: 70
Expires: 3600
Contact: <sip:201@<AsteriskWin32が走っているPCのIPアドレス>>
Event: registration
Content-Length: 0

SIP/2.0 503 Service Unavailable
From:<sip:7@<AD-200SEのIPアドレス>>;tag=as56d424cc
To:<sip:7@<AD-200SEのIPアドレス>>;tag=583F0025DC15F5C90007230E
Call-ID:0b2f98883cd9673724fe5c0f402dcc90@<AsteriskWin32が走っているPCのIPアドレス>
CSeq:110 REGISTER
Via:SIP/2.0/UDP <AsteriskWin32が走っているPCのIPアドレス>:5060;branch=z9hG4bK1fdb6554;rport
Content-Length:0

長い引用だが、本質的なのは一行目。ここには"ad200se"のようなAsterisk内部のセクション名ではなく、実IPアドレスが来る必要がある。

そうわかってしまえば、回避方法は簡単で、以下のように設定すればよい。192.168.x.x は実際のIPアドレスに読み替えていただきたい。

register => 7:パスワード@192.168.x.x/201

[192.168.x.x]

よく分からないまま設定をいじっている間一度はレジストに成功した、と書いたが、これは最初は簡易指定のつもりでIPアドレスを直接register文に書き込んでいたからだろう。その後、Asteriskの流儀にしたがって、名前を当ててセクションを別途立てたがためにレジストできなくなったということのようだ。よもやそれが理由だとは思いも至らなかったがために、長時間苦悩する結果になってしまった。結局、session timerは全く関係なかったようだ。

パッと眺めた感じだと、RT-200NE用のパッチでもこの問題は解消すると思われる。なので、同じAD-200SEユーザでも、Asteriskにこのパッチを当てていれば、最初の設定方法で問題なくレジストできているようである。

広告
カテゴリー: Computers and Internet パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中