SIPサーバ (partysip)

partysip は、GPL(コア部分はLGPL)のSIPサーバです。容量が小さいのが利点です (install size = 1208Kbytes)。SIP proxy と registrar の役目をします。ユーザディレクトリをローカルで持つため、他のレジストラとの協調動作はできませんが、SIPのテストには十分です。

hgw003.ddo.jp:15060 でSIPサーバをテスト運用してますので、SIPクライアントを持っている方は、試しに電話をかけてきてください。宛先は、0500031111@hgw003.ddo.jp です。 (認証テストのため休止中)

partysipのHGW用バイナリはダウンロードページにあります。バイナリを入手したら、partysipの設定から始めます。

GNU libosipをコンパイルする

パッケージを入手して、クロスコンパイルします。

% tar xvfz libosip-0.9.1.tar.gz 
% mkdir build-libosip
% cd build-libosip
% CC=ppc-linux2.4-gcc CFLAGS='-msoft-float -O2' ../libosip-0.9.1/configure --host=ppc-linux2.4 --prefix=/usr/local/ppc-linux2.4 --disable-debug
% make
# make install

HGWに転送する準備をします。シンボリックリンクをすべてコピーにします。

# 以下をビルドPCのrootで実行。
rm -rf /mnt/local
mkdir /mnt/local
mkdir /mnt/local/lib
cd /mnt/local/lib
cp /usr/local/ppc-linux2.4/lib/libfsmtl*.so* .
cp /usr/local/ppc-linux2.4/lib/libosip*.so* .

partysipをコンパイルする

パッケージを入手して、クロスコンパイルします。

% tar xvf partysip-0.5.1.tar.gz
% mkdir build-partysip
% cd build-partysip
% CC=ppc-linux2.4-gcc CFLAGS='-msoft-float -O2' CPPFLAGS=-DOLD_NAMESER ../partysip-0.5.1/configure --host=ppc-linux2.4 --prefix=/mnt/local --disable-debug
% make
# make install

HGWに転送する準備をします。シンボリックリンクをすべてコピーにします。

# 以下をビルドPCのrootで実行。
cd /mnt/local
rm -rf include
mv lib lib.bak
mkdir lib
mkdir lib/partysip
cp lib.bak/*.so* lib
cp lib.bak/partysip/*.so* lib/partysip
rm -rf lib.bak

できあがったソフトウェアをHGWに転送します。

% tar cvfPz partysip-0.5.1-binary-ppc-linux2.4.tar.gz /mnt/local
--- tar.gz ファイルを FTP などで HGW に転送 ---
beta2# tar xvfPz partysip-0.5.1-binary-ppc-linux2.4.tar.gz

partysipの設定

HGW で、/mnt/local/etc/partysip/partysip.conf を編集します。変更する行は、以下の通りです。サーバの待ち受けポート番号は、5060 にしたいところですが、HGWのSIPクライアントが5060で待ち受けしているので、サーバのほうは 15060 にします。5061はpartysipがUDP送信専用ポートとして使うので、待ち受けポートとしては使えません。サーバのIPアドレスは、LAN側で待ち受けるならLAN側のIPアドレス、WAN側で待ち受けるならWAN側のIPアドレスにしますが、とりあえずLAN側でテストしましょう。

serverip    = 192.168.0.1
servername = beta2
serverport_udp = 15060

serverrealm = hgw003.ddo.jp

共有ライブラリを見付けられるように、LD_LIBRARY_PATH を設定します。root の ‾/.profile を編集して次の1行を追加します。再起動した時にも有効にする方法は、設定方法を見てください。

LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/local/lib

LD_LIBRARY_PATH を有効にするには、次のコマンドを実行します。

beta2# . ‾/.profile

LAN側でのテスト

とりあえずLAN側でテストします。

partysip をトレースモードで起動します。

beta2# /mnt/local/bin/partysip -i -d 6

HGWにもう1枚ログオンして、sipクライアントを起動します。

beta2# killall sip-br0
beta2# killall sip-ppp0
beta2# killall sip-eth0
beta2# sip-br0 -r 0500031111@beta2:15060

HGWにもう1枚ログオンして、rmsdevを再起動します。

beta2# /etc/rc.d/scripts/rmsdev stop
beta2# /etc/rc.d/scripts/rmsdev start

Windows XP で、Windows Messenger (V4.6) を起動します。オプション−アカウントに下のように設定します。

Windows Messengerでサインインします。

Windows Messenger で、音声チャットを選択し、宛先(電子メールアドレス)に、0500031111 を指定します。HGWのSIPクライアントに着信します。

HGWのSIPクライアントから、0500032222 に発信すると、Windows Messenger に着信します。

Trouble shooting

現象:
Windows MessengerからHGWのSIPクライアントへ着信はするが、音声が聞こえない。
HGWのSIPクライアントから発信してもWindows Messengerへ着信しない。
対処:
sip-br0 を起動してから、/etc/rc.d/scripts/rmsdev を再起動(stop, start)します。

WAN側での運用

WAN側にSIPサーバを公開して、運用します。

パケットフィルタの設定

1024番以降の着信UDPパケットを全て受け入れるようにするため、IPv4フィルタ設定に追加します。

partysipの自動起動

/mnt/local/etc/partysip/partysip.conf を編集して、servername をWAN側のホスト名に変更します。

servername  = hgw003.ddo.jp

/mnt/local/bin/sipd を作成します。

/etc/rc.d/scripts/voip を作成します。

実行属性にします。

# chmod +x /etc/rc.d/scripts/voip

/etc/ppp/ip-up の最後に下の2行を追加します。

/mnt/local/bin/sipd start
/etc/rc.d/scripts/voip start

/etc/ppp/ip-down の最後に下の2行を追加します。

/etc/rc.d/scripts/voip stop
/mnt/local/bin/sipd stop

/etc/rc.d/rc3 を編集して、voip と rmsdev を起動しないようにします(ip-upで起動されるため)。

今すぐ起動します。ログは/var/log/partysipに書き出されます。

# /mnt/local/bin/sipd start
# /etc/rc.d/scripts/voip start

/etc/sysconfig/crontab に、下の1行を追加します。(1時間に1回、REGISTERし直す必要があるため。通話中でも毎時33分になると切断されてしまいます。)

33 * * * * /etc/rc.d/scripts/voip restart
crontab を有効にします。
# crontab /etc/sysconfig/crontab
HGW起動時に毎回有効にするためには、/etc/rc.d/scripts/crond のstart()関数に、以下の記述しておきます。
start()
{
        if [ -x /usr/sbin/crond ]; then
                /usr/sbin/crond
                crontab $CONF
        fi
}

テスト

(0500031111@hgw003.ddo.jpは、Digest認証テストのため休止中です。)

SIPクライアントをお持ちの方は、以下の情報を設定してください。Windows Messenger と HGWのSIPクライアントの具体的な設定方法は、後で説明します。

設定ができたら、SIPクライアントから、0500031111@hgw003.ddo.jp に電話をかけてください。うまくいけばうちの留守番電話が応答します。

Windows Messenger から電話をかける

Windows Messenger (V4.6) を起動し、以下のように設定します。

Windows Messengerでサインインします。

Windows Messenger で、音声チャットを選択し、宛先(電子メールアドレス)に、0500031111 を指定します。うまくいけばうちの留守番電話が応答します。

HGWのSIPクライアントから電話をかける

クライアントのテストをするだけなら、自分でSIPサーバを用意する必要はありません。
以下のようにVoIP設定します。

今すぐ起動します。

# /etc/rc.d/scripts/rmsdev stop
# /etc/rc.d/scripts/voip stop
# /etc/rc.d/scripts/voip start
# /etc/rc.d/scripts/rmsdev start

電話機から、0500031111# とダイヤルします。うまくいけばうちの留守番電話が応答します。

留守番電話をリモート再生するには

留守番電話に録音されたメッセージを聞くことができます。

  1. 応答メッセージが流れている間に*を押す。
  2. 「暗証番号をどうぞ」と聞こえたら、1234を押す。
  3. 「リモートをどうぞ」と聞こえたら、#を押す。再生が始まる。
  4. 再生中に、7を押すと巻き戻し、9を押すと早送りができる。再度#を押すと再生に戻る。
  5. 再生中に停止するには、0を押す。すべてのメッセージを消去するには、00を押す。
  6. 電話を切る。

ホームに戻る

Valid HTML 4.01!