SIPのアーミーナイフ
sipsak (SIP swiss army knife)というLinuxターミナルで動くCLIツールが有ります。 アーミーナイフと唄っている通り沢山のオプションが有って、SIPに関するテストを行えます。 CentOS6まではEPELレポジトリに有ったので簡単にyumでインストール出来たのですが、7ではなぜか消えてしまいました。 それでソースからコンパイルしてインストールする必要が有ります。 Linuxターミナルで動作するSIPデバッグツールはこちら↓
インストール
CentOS7へのインストール例です。
sudo yum install gcc autoconf automake openssl
gcc, autoconf, automake, opensslをインストールします。
guthubからソースをダウンロードします。https://github.com/nils-ohlmeier/sipsak
ZIPを解答してサーバーにアップロードします。 ディレクトリはどこでも構いません。
cd sipsak-main
ls
AUTHORS ChangeLog NEWS TODO indent.pro sipsak.1 tests
COPYING Makefile.am README configure.ac m4 src
autoreconf --install
./configure
make
make install
インストールします。
which sipsak
/usr/local/bin/sipsak
動かしてみる
OPTIONSパケット送信
sipsakの一番基本の使い方はOPTIONSの送信です。※送信先はダミーのsip.comに変えてあります。
sipsak -vv -s sip:1000@sip.com
using A record: sip.com
.
message received:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 127.0.0.1:49687;received=49.96.xxx.yyy;branch=z9hG4bK.741fc070;rport=63205;alias
From: sip:sipsak@127.0.0.1:49687;tag=3af63f35
To: sip:1000@sip.com;tag=946f.dfd06b0e080bc040e716d6a598403516
Call-ID: 989216565@127.0.0.1
CSeq: 1 OPTIONS
Accept: */*
Accept-Language: en
Server: voip service
Content-Length: 0
.
** reply received after 45.268 ms **
SIP/2.0 200 OK
final received
SIP/2.0 200 OKと出ているのでSIPサーバーから応答が有った事が分かります。 ただしSIPサーバーによっては、無関係のIPからのOPTIONSには応答しない場合も有ります。
6つのモード
●default mode A SIP message is sent to destination in sip-uri and reply status is displayed. The request is either taken from filename or generated as a new OPTIONS message. SIPメッセージがsip-uriで宛先に送信され、応答ステータスが表示されます。 リクエストはファイル名から取得されるか、新しいOPTIONSメッセージとして生成されます。
●traceroute mode (-T) This mode is useful for learning request’s path. It operates similarly to IP- layer utility traceroute(8). このモードは、リクエストのパスを学習するのに役立ちます。 IP層ユーティリティtracerouteと同様に動作します。
●message mode (-M) Sends a short message (similar to SMS from the mobile phones) to a given target. With the option -B the content of the MESSAGE can be set. Useful might be the options -c and -O in this mode. 特定のターゲットにショートメッセージ(携帯電話からのSMSと同様)を送信します。
●usrloc mode (-U) Stress mode for SIP registrar. sipsak keeps registering to a SIP server at high pace. Additionally the registrar can be stressed with the -I or the -M option. If -I and -M are omitted sipsak can be used to register any given contact (with the -C option) for an account at a registrar and to query the current bindings for an account at a registrar. SIPレジストラのストレスモード。 sipsakはSIPサーバーへの登録を継続します。
●randtrash mode (-R) Parser torture mode. sipsak keeps sending randomly corrupted messages to torture a SIP server’s parser. sipsakはランダムに破損したメッセージを送り続けます。
●flood mode (-F) Stress mode for SIP servers. sipsak keeps sending requests to a SIP server at high pace. SIPサーバーのストレスモード。 sipsakはSIPサーバーにリクエストを送信し続けます。
サンプル
sipsak -vv -s sip:nobody@foo.bar
.
displays received replies.
OPTIONS送信の返信を表示します。
sipsak -T -s sip:nobody@foo.bar
.
traces SIP path to nobody.
tracerouteを表示します。
sipsak -U -C sip:me@home -x 3600 -a password -s sip:myself@company
.
inserts forwarding from work to home for one hour.
転送設定
sipsak -f bye.sip -g ‘!FTAG!345.af23!TTAG!1208.12!’ -s sip:myproxy
.
reads the file bye.sip, replaces $FTAG$ with 345.af23 and $TTAG$ with 1208.12 and
finally send this message to myproxy
ファイルを読み込んでリクエストを置換
オプション
sipsak -h
sipsak 0.9.9-pre by Nils Ohlmeier
Copyright (C) 2002-2004 FhG Fokus
Copyright (C) 2004-2022 Nils Ohlmeier
report bugs to github@ohlmeier.org
.
shoot : sipsak [-f FILE] [-L] -s SIPURI
trace : sipsak -T -s SIPURI
usrloc : sipsak -U [-I|M] [-b NUMBER] [-e NUMBER] [-x NUMBER] [-z NUMBER] -s SIPURI
usrloc : sipsak -I|M [-b NUMBER] [-e NUMBER] -s SIPURI
usrloc : sipsak -U [-C SIPURI] [-x NUMBER] -s SIPURI
message: sipsak -M [-B STRING] [-O STRING] [-c SIPURI] -s SIPURI
flood : sipsak -F [-e NUMBER] -s SIPURI
random : sipsak -R [-t NUMBER] -s SIPURI
.
additional parameter in every mode:
[-a PASSWORD] [-d] [-i] [-H HOSTNAME] [-l PORT] [-m NUMBER] [-n] [-N]
[-r PORT] [-v] [-V] [-w]
.
-h displays this help message
-V prints version string only
-f FILE the file which contains the SIP message to send use -- for standard input
-L de-activate CR (\r) insertion in files
-s SIPURI the destination server URI in form sip:[user@]servername[:port]
-T activates the traceroute mode
-U activates the usrloc mode
-I simulates a successful calls with itself
-M sends messages to itself
-C SIPURI use the given URI as Contact in REGISTER
-b NUMBER the starting number appendix to the user name (default: 0)
-e NUMBER the ending number of the appendix to the user name
-o NUMBER sleep number ms before sending next request
-x NUMBER the expires header field value (default: 15)
-z NUMBER activates randomly removing of user bindings
-F activates the flood mode
-R activates the random mode (dangerous)
-t NUMBER the maximum number of trashed character in random mode
(default: request length)
-l PORT the local port to use (default: any)
-r PORT the remote port to use (default: 5060)
-p HOSTNAME request target (outbound proxy)
-H HOSTNAME overwrites the local hostname in all headers
-m NUMBER the value for the max-forwards header field
-n use FQDN instead of IP in the Via-Line
-i deactivate the insertion of a Via-Line
-a PASSWORD password for authentication
(if omitted password=””)
-u STRING Authentication username
-d ignore redirects
-v each v produces more verbosity (max. 3)
-w extract IP from the warning in reply
-g STRING replacement for a special mark in the message
-G activates replacement of variables
-N returns exit codes Nagios compliant
-q STRING search for a RegExp in replies and return error on failure
-W NUMBER return Nagios warning if retrans > number
-B STRING send a message with string as body
-O STRING Content-Disposition value
-P NUMBER Number of processes to start
-A NUMBER number of test runs and print just timings
-S use same port for receiving and sending
-c SIPURI use the given URI as From in MESSAGE
-D NUMBER timeout multiplier for INVITE transactions on non-reliable transports (default: 64)
-Z NUMBER timeout T1 in ms (default: 500)
-E STRING specify transport to be used
-j STRING adds additional headers to the request
-J STRING HA1 hash for authentication instead of password
-k STRING specify local ip address to be used
-K NUMBER log exit message to syslog with given log level
リンク