Wiresharkを使用してSIPサーバーとIP電話のデータ通信のやり取りを確認する。
Wiresharkでは、特定のプロトコルやIPアドレスに対するフィルタリングが可能です。SIPサーバーとIP電話のデータ通信のやり取りは、UDPポート5060を使用しています。WiresharkでUDPポート5060のトラフィックをフィルタリングを行うとデータ通信のやり取りが確認できます。
Wiresharkの公式サイトへアクセス:https://www.wireshark.org/download.html
インストール方法については、今回、省略します。Wiresharkを起動します。

データグラフが表示されている「Wi-Fi 2」を選択する。

すべてのポートの通信が表示されます。

赤枠部に「UDP.port == 5060 」入力するとUDPポート5060だけの通信データが表示されます。
ソフトフォンの「3cxPhone」を起動させる。

「3cxPhone」起動時に「3cxPhone」とSIPサーバ間でUDPポート5060でREGISTER(SIPサーバーにIPアドレス情報登録)のデータのやり取りが行われます。以下のとおりWiresharkでデータのやり取りが確認できます。

「分析」→「追跡」→「SIP通話」を選択すると以下のとおり内容表示されます。

赤文字は、 ソフトフォンPC(Wireshark)からSIPサーバーへ送信してデータで、青文字は、SIPサーバーからソフトフォンPC(Wireshark)に送信したデータが確認できます。
REGISTER(情報登録)のシーケンス
内線21 SIPサーバー
| |
|(1) REGISTER |
|----------------------------->|
|(2) 401 Unauthorized |
|<-----------------------------|
|(3) REGISTER PA |
|----------------------------->|
|(4) 200 OK |
|<-----------------------------|
| |
Digest認証について
SIPサーバーから以下の返答の内容を基にして、
WWW-Authenticate: Digest realm=”asterisk”,nonce=”1762091262/3c1d05961787a3e69a3d94e9a468e
21c”,opaque=”6bc8f6126c69c69b”,algorithm=MD5,qop=”auth”
↓
SIPサーバーに認証するために以下の値を作成します。
Authorization: Digest username=”21″,realm=”asterisk”,nonce=”1762091262/3c1d05961787a3e69a3d94
e9a468e21c”,uri=”sip:192.168.0.201:5060″,response=”fb86444e4cce469e38b5e9baa4975604″,cnonce
=”df1cc71527716d5c398b1a18d113982e”,nc=00000001,qop=auth,algorithm=MD5,opaque=”6bc8f6126
c69c69b”
認証に必要な項目
username=”21″ #内線番号
password=”pass” #パスワード
realm=”asterisk” #SIPサーバーから入手した値。
nonce=”1762091262/3c1d05961787a3e69a3d94e9a468e21c” #SIPサーバーから入手した値。
URI=”sip:192.168.0.201:5060″ #SIPサーバーから入手した「sip:」で始まる値。
opaque=”6bc8f6126c69c69b” #32文字以下の任意の文字列。
cnonce=”df1cc71527716d5c398b1a18d113982e” #クライアントnonce。クライアントが生成するランダムな文字列、セキュリティ強化。
qop=”auth” #(Quality of Protection)保護品質。”auth” または “auth-int”。
nc=00000001 #(Nonce Count)。Nonceが使用された回数。
method=REGISTER #SIPのリクエストのメソッド。
Digest認証公式
HA1=MD5(username:realm:password)
=MD5(21:asterisk:pass)
=f6f751f1d046605ea6654537fda271c4
HA2=MD5(method:URI)
=MD5(REGISTER:sip:192.168.0.201:5060)
=f3d19c9b88b7d341148872a28962c49e
response=MD5(HA1:nonce:nc:cnonce:qop:HA2)
=MD5(f6f751f1d046605ea6654537fda271c4:1762091262/3c1d05961787a3e69a3d94e9a468
e21c:00000001:df1cc71527716d5c398b1a18d113982e:auth:f3d19c9b88b7d341148872a28962
c49e)
=fb86444e4cce469e38b5e9baa4975604
Authorization: Digest username=”21″,realm=”asterisk”,nonce=”1762091262/3c1d05961787a3e69a3d94
e9a468e21c”,uri=”sip:192.168.0.201:5060″,response=”fb86444e4cce469e38b5e9baa4975604“,cnonce
=”df1cc71527716d5c398b1a18d113982e”,nc=00000001,qop=auth,algorithm=MD5,opaque=”6bc8f6126
c69c69b”
MD5ハッシュ関数は、任意の長さのデータを128ビット(32桁の英数字)の固定長のハッシュ値に変換する暗号学的ハッシュ関数です。以下のサイトなどで確認できます。
MD5ハッシュ変換サイトへアクセス:https://dev.digitra.net/tools/md5encode.php
今回、REGISTER(情報登録)を紹介致しましたが、ソフトフォンで着信、発信、保留、転送などを行い、データーのやり取りをWiresharkで確認を行い、SIPサーバーとソフトフォンのやり取りと同じように動作するプログラムを作れば、PCでIP電話の発信・着信が出来るようになります。受発注業務の場合、着信電話番号をPCに取り取り込みとWEBサーバーとデーターベースと組み合わせることによって、着信時に相手の着信番号からデータベースで情報抽出して画面に表示して、適切な対応が可能でクリックするだけで配送スタッフにLINEやメールで配送指示が送る電話受発注システムを作成していきます。