2016年2月7日日曜日

raspbx で chan_mobileを使う その2

FreePBXをインストールすると、sip.conf等のファイルは自動的に作成されます。
GUIだけで操作するなら結構なことで便利(なのか?)なのですが、

適当に書いてあとは触らない よくわからないけどコピペだけで、使いたい

ってなると、情報が多くてコピー貼り付けできるほうが良いので
余計なお世話も甚だしい。
でも、起動を止めたりするのは面倒なので、
customファイルを触って設定します。




sip_general_custom.conf を 編集
sip_general_custom.conf を 編集してみます。

allowguest=no

と書いたら保存して閉じます。
カスタム用のファイルは 
ファイル名_セクション_custom.conf

となっているので、
この場合 sip.conf の general セクションに
allowguest=noを書いたのと同じ結果になるはずです。


sipの設

いくらでも参考になるサイトはあるのでちょっと捻くれたことをやってみましょう。
まぁ元ネタのあるパクリなんですけどね。
一般に流布している設定はこんな感じ。

[21]
type=friend
defaultuser=21
secret=passw0rd
canreinvite=no
host=dynamic

閉じたネットワーク上であればこれでもよいでしょう。
SIPポートを外部にだすことがいいのか、というのは、また別の話として
外部に出す場合ユーザ名が数字だけ、というのはちょっと怖い。


sip_custom.conf


[hogehoge21]
type=friend
defaultuser=hogehoge21
callerid=21<21>
secret=passw0rd
canreinvite=no
host=dynamic
context=naisen
[hogehoge22]
type=friend
defaultuser=hogehoge22
callerid=22<22>
secret=passw0rd
canreinvite=no
host=dynamic
context=naisen

まずユーザ名をhogehogeXXにしてcalleridにXXを設定します。
さらにdefaultuserを別のものにすると効果的です。
認証IDも入れないといけなくて面倒なのでしませんけどね。

しかし、このままだと、hogehogeXX@raspbxに電話をしないとかからないと。
XXで電話できるようにextentionsで書き換えを行っちゃえってことで、
まずグローバル変数にhogehogeを登録しておきます。

extensions_override_freepbx.conf

[globals]
HOGE=hogehoge



そしてextentionsでHOGEを追加します。

extensions_custom.conf

[naisen]
exten => _[23]X,1,NoOp(${CALLERID(num)})
same  =>    n,Dial(SIP/${HOGE}${EXTEN})
same  =>    n,Congestion
same  =>    n,Hangup()
include =>kaigai-ban
include =>outgoing-mobile
[kaigai-ban]
exten => _010.,1,NoOp(${CALLERID(num)})
same  =>    n,Hangup()
;softbank
exten => _0046010.,1,NoOp(${CALLERID(num)})
same  =>    n,Hangup()
;AU
exten => _005345.,1,NoOp(${CALLERID(num)})
same  =>    n,Hangup()
;DOCOMO
exten => _009130010.,1,NoOp(${CALLERID(num)})
same  =>    n,Hangup()
[outgoing-mobile]
exten => _0.,1,NoOp(${CALLERID(num)})
same  =>    n,Dial(Mobile/gratina/${EXTEN},45)
same  =>    n,Hangup()
[incoming-mobile]
exten => s,1,Dial(SIP/${HOGE}21&SIP/${HOGE}22,,tT)
exten => s,n,Hangup()



相手先に通知される番号はsip.confで
callerid=21<21>
と設定してあるので21が通知されるから問題なし。

hogehogeがばれたら全く意味はないのですが、
数字だと決め打ちしてアタックする限り突破はできないし
試行回数が増えればfail2banで弾ける確率も上がる。
hogehogeXX を hogeXhogeXのようにして${HOGE1}${EXTEN:0:1}${HOGE2}${EXTEN:1:1}
なんていうのもいいかもしれない。

ここまでたどりつかせないのが大事なんだけどね。

発信の設定は定石通りでそのまま。
海外通話を禁止するためにincludeを使って順番を強制します。

exten => _010.,1,NoOp(${CALLERID(num)})
same  =>    n,Hangup()
exten => _0.,1,NoOp(${CALLERID(num)})
same  =>    n,Dial(Mobile/gratina/${EXTEN},45)
same  =>    n,Hangup()

とフラットに書くと、ソートされて順番が入れ替わる可能性がある。。。はず。
010以外の発信方法があることにも注意ですが、気にしなくていい気もします。

これで、完成なのですが、外に持ち出す場合SIPというのはいささか不便。
また、このままなんの防御策もなしでポートを出すのも問題です。

クライアントが限定されてしまいますが、
外に出すのはIAX2を使ったほうが良いでしょう。
次はIAX2の設定をしてみよう。
以上でSIPサーバ側の設定は完了です。

0 件のコメント:

コメントを投稿