Asterisk + 玄箱 + NetBSD

ろいろ試してみましたが...

 
NetBSDだとZaptelのコンパイルが通りません。zaptel自体がかなりハードウェアに密接しているようで、pkgsrcのままではどうにもコンパイルが通らない...
 
Asteriskの方は、若干のMakefileの修正で通りました、(具体的には一部コンパイルのCPUの選択がうまく行かないようで、gsm codecのコンパイルで落ちます。codecs/gsm/Makefile内のCPUの選択部分でppc64をpowerpcに変更して逃げました。)
 
ところで、過去にExchangeとの連携を目指してSIP-TCPへの対応をしていたのですが、これがかなりsipのチャネルドライバにパッチを激しく当てるので、ちょっとバージョン違いじゃ一筋縄では行かないかな?と思い、当時のバージョンのAsteriskを引っ張ってくることにしました。しかし、これまたpkgsrc側で用意されているパッチの一部修正が必要だったのですが、今度はNetBSDはネットから引っ張ってくるファイルのチェックサムを確認している模様。パッチファイルは修正できたのですがチェックサムで引っ掛かり落ちます。(泣 正しいチェックサムに書き換えてしまえば良いのでしょうが、うまくいきません。2・3時間悩んだ挙句 調べていて解ったのはパッチファイルのBSDのヘッダーを除いた部分のチェックサムが必要な様子でした。このチェックサムを取得するコマンドをメモしておきます。
sed -e '/$NetBSD.*/d' ../patches/patch-ad | sha1
 
これで何とか、以前に近い状態を玄箱に持ってこれたのですが・・・ さてZaptelどうしましょう? 色々調べているとzaptel無しでも動作するがMeetMeとトランクが出来なくなると書いてあったので、放置予定だったのですが・・・(悔しいけど無くても困らなさそうだし)
今度は保留音が鳴らなくなった!どうやら保留音(デフォルトはMP3)のMP3の再生にZaptelが必要な様子。とは言え音声応答とかはちゃんと聞こえる所から考えてmp3使わなきゃ良いんじゃ?と思い試してみることにしました。先ずは適当なソフトでMP3の着信音をWAVファイルに変換(8kHz-16bit-Mono)これを適当なフォルダに放り込んで、musiconhold.confを書き換えて(mode=files)やると保留音もちゃんと鳴るようになりました。(gsmでも鳴りましたが音悪すぎたのでWAVにしました)
 
 
さてお次は...
外部のIP電話サービスともつないでみようと思っているのですが、ネット上でよく見るSIP関連のポートをDMZに放り出してと言うのはちょっと怖くて簡単には出来ません。(万が一内線が乗っ取られた事を考えると怖いです)
まずは、基本的なAsteriskの実行ユーザーの変更を実施しました。(FreeBSDなら勝手にやってくれるのになぁー。)(これまたNetBSなのでディレクトリ構造が違うので面倒でしたが、asterisk.confを見ながら必要なファイルのあるディレクトリのオーナーをchown -R user:groupで変えていきます。runファイルは/var/run/asteriskに移動しasterisk.confもそれに合わせます。)
具体的な実行ユーザーの変更が、NetBSDについていた起動スクリプトでは設定出来ませんでした。(方法あるんでしょうけどよく解ってません。) 少し調べるとこれまたasterisk.confで指定出来るようです。[options]のコンテキストをつくりrunuser=xxxx   rungroup=xxxxと指定してやればOKでした。
また自宅の物ですので、やはり一番怖いのはシステムダウンよりも回線の乗っ取りでしょうから、Extension.confを弄ってダイヤルのログが解りやすく残るようにしました。(system()のファンクション結構使えそう)最悪乗っ取りが解ればシステム落とせば良い話ですし。
後は、SIPの登録元の限定をどうしていくかですが、このあたりは後日に持ち越して実験してみます。
 
 
その他
 FreeBSD上でのセッションタイマーとbindaddrのパッチの報告  とりあえずパッチは当ててコンパイル通るようになりました。(IP関係のオプションを無理やり書き換えて) ただ、動作するかは不明です。機会があれば実験してみたいとおもいます。