050plusをAsteriskに収容した

050plusをAsteriskに収容した。
というのも050plusのコーデックは重いのか途切れ途切れになることがおおく、ソフトバンク回線では遅延も酷い。
GSMコーデックを使えば軽くなるはずだが、050plusはGSMコーデックには対応していない。
そう言う理由があってのこと。

とりあえず今の所うまく動いているっぽい。
まぁ自分用の備忘録として詳細を書いておく。なので、真似をしないでください。何か起きても責任取れません。
最悪、ハッキングされて海外に発信されて、数百万円請求される可能性があるので…。

地味にlibsrtpを入れずにAsteriskをコンパイルしていたので、ちゃんとSRTPが使えなかった。
以下を実行して、再コンパイル。

apt-get install libsrtp-dev

次にはまったのは、着信時にこんなメッセージが出てくるところ。

Sending fake auth rejection for device

で、色々ググってみると、このエラーはどうも050plusのサーバーがDNSラウンドロビンを組んでるのが原因のようだ。
最初にレジストしたレジストサーバーのIPと、再レジストしたときのIPが違っているのにもかかわらず、Astersikは最初のIPしか覚えていなくて、新しいIPからINVITEが来ても、おかしな奴からINVITEが来たぞという。

某所ではallowguest=yesとする解決法が紹介されていたが、それは怖い。
しかも、ダイヤルプランが否応なくsip.confのglobalで指定したcontext(defaultなど)で受けてしまうことになるので、番号毎にContextを作っている現状は不便。

そこで、これに関しては、レジスト先に050plusのホスト名(FQDN)を書くのではなく、IPアドレスを直接書くことで解決した。今の所解決しているというのが正確だろうか。tlsdontverifyserver=yesを指定しておく必要がある。

以下にsip.confの一部を抜粋しておく。

[general]
maxexpirey=3600
defaultexpirey=3600
context=default

(略)

;TLS setting
tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1 ;none of the others seem to work with Blink as the client
tlsdontverifyserver=yes ; TLSのサーバーのCommonNameの検証を無効にする(危険!)

register => tls://fmcXXXXX:パスワード:認証ユーザー名@60.37.58.XXX:5061

(略)


[050plus]
type=friend
secret=パスワード
port=5061
defaultuser=認証ユーザー名
fromuser=fmcXXXXX
host=60.37.58.XXX
fromdomain=050plus.com
context=050plus-in
insecure=invite,port
dtmfmode=inband
canreinvite=no
disallow=all
allow=ulaw
callgroup=1
transport=tls
nat=route
encryption=yes

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です