AsteriskでLinphone間の通話をサポートするには、いろいろな設定が必要になるので以下メモ。
まずはAWSのセキュリティグループ。詳細な情報は以下にも載っているが、今回はLinphoneがSIPで利用する5060(デフォルト)、RTP(/etc/asterisk/rtp.confで記述される範囲、デフォルトは10000~20000)を開ける。TCPを使うなら、5061も開けたほうがよさそう。TLSはまだ試していないので、またの機会に。
次はAWSのファイアウォール。これは上記の設定とも関係するが、自分は以下のページを参考に設定。要は、上記のAWSの設定であけたポートに対する解放作業を行えばOK。
http://www.voip-info.org/wiki/view/Asterisk+firewall+rules
http://www.voip-info.jp/index.php/Asterisk_FUSION
次はAsteriskの設定ファイル。/etc/asterisk/の下にある、sip.conf, extensions.conf, rtp.confをいじる。
sip.conf:
[general]
context=default ;extensions.confで参照するタグ
transport=udp
port=5060
bindaddr=0.0.0.0
language=ja
disallow=all
videosupport=yes
allow=speex
allow=vp8
textsupport=yes
localnet=XXX.XXX.XXX.XXX/255.255.255.0 ;AWSのローカルIP
externip=XXX.XXX.XXX.XXX ;AWSのグローバルIP
;Instant messageに必要
accept_outofcall_message=yes
outofcall_message_context=message ;extensions.confで参照するタグ
auth_message_requests=yes
[test01]
type=friend
host=dynamic
defaultuser=test01
secret=ほげほげ ;要変更
qualify=no ;linphoneがクライアントだと必須
canreinvite=yes ;Asteriskが通信を管理するため
nat=force_rport,comedia ;nat使ってなければコメントアウト
disallow=all
allow=speex
allow=vp8
textsupport=yes
[test02]
type=friend
host=dynamic
defaultuser=test02
secret=ほげほげ ;要変更
qualify=no ;linphoneがクライアントだと必須
canreinvite=yes ;Asteriskが通信を管理するため
nat=force_rport,comedia ;nat使ってなければコメントアウト
disallow=all
allow=speex
allow=vp8
textsupport=yes
extensions.conf:
[default]
exten => test01,1,Dial(SIP/test01,30)
exten => test01,n,Hangup()
exten => test02,1,Dial(SIP/test01,30)
exten => test02,n,Hangup()
[message]
exten => test01,1,MessageSend(sip:${EXTEN},”${CALLERID(name)}”${MESSAGE(from)})
exten => test02,1,MessageSend(sip:${EXTEN},”${CALLERID(name)}”${MESSAGE(from)})
rtp.conf:ユーザが少ないなら開けるポートは少なくして良さそう
[general]
rtpstart=10000
rtpend=20000
次はLinphoneの設定。GUI版Linphoneをtest01、CUI版Linphonecをtest02とする。
GUI版Linphoneの注意事項:
・SIPのIdentityはsip:test01@AWSのIP
・SIPプロキシは<sip:test01@AWSのIP;transport=udp>
・転送はUDP
・Routeはsip:AWSのIP
・SIP/UDPポートは5060を指定
CUI版Linphonecの注意事項(.linphonercの設定):
UDPで接続している場合は、TLSの設定を明示的に切る
・verify_server_certs=0
・verify_server_cn=0
Proxyの設定
・reg_proxy=sip:AWSのIP
・reg_identity=<sip:test02@AWSのIP;transport=udp>
上記の設定で、接続できる…はず。トラブったときの対処やメモなどはまた後日。