Asterisk13のインストール

変更点   このバージョンの1つ前からchan_sipがpjsipに置き換わっています、
従って、Asteriskをインストールする前に、PJSIPもインストールします。

下準備   始める前にいろいろ準備します。

yum groupinstall –y "Development Tools"

yum install -y gcc-c++ make gnutls-devel kernel-devel libxml2-devel ncurses-devel subversion doxygen texinfo 
yum install -y curl-devel net-snmp-devel neon-devel uuid-devel libuuid-devel sqlite-devel sqlite git bison 
yum install -y git-core speex-devel gsm-devel

jansson(C言語用のjsonパーサ)も入れます

※32ビットシステムの場合
cd /usr/src/
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf –iv
./configure
make
make install


※64ビットシステムの場合
cd /usr/src/
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf –iv
./configure --libdir=/usr/lib64
make
make install

SRTP(64ビット)   SRTPをビルドしてインストールします。

cd /usr/src/
wget http://srtp.sourceforge.net/srtp-1.4.2.tgz
tar zxvf srtp-1.4.2.tgz
cd srtp
autoconf
./configure --enable-pic --libdir=/usr/lib64
make
make install
cd ..

PJSIP(64ビット)   PJSIPをビルドしてインストールします。

cd /usr/src/
git clone https://github.com/asterisk/pjproject pjproject
cd pjproject
./configure --libdir=/usr/lib64 --prefix=/usr --enable-shared 
             --disable-sound --disable-resample --disable-video --disable-opencore-amr 
             --with-external-speex --with-external-srtp --with-external-gsm 
make dep && make && make install
cd ..

Asteriskの入手   以下のコマンドでAsteriskの最新版を入手&展開します。

cd /usr/src/
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar xfz asterisk-13-current.tar.gz

コンパイル&インストール   コンパイル&インストール方法です。

※32ビットシステムの場合
cd asterisk-13.2.0
./bootstrap.sh
./configure 

※64ビットシステムの場合
cd asterisk-13.2.0
./bootstrap.sh
./configure --libdir=/usr/lib64

※chan_sipを使用する場合
cd asterisk-13.2.0
yum install -y openssl-devel
./bootstrap.sh
./configure --with-crypto --with-ssl --with-srtp --prefix=$PREFIX --libdir=/usr/lib64

configreコマンド実行時に以下のエラーが出たら・・・
configure: error: C++ preprocessor "/lib/cpp" fails sanity check

次のようにしてC++を導入ます。
yum -y install gcc-c++

configreコマンド実行時に以下のエラーが出たら・・・
configure: error: *** termcap support not found (on modern systems,
this typically means the ncurses development package is missing)


次のようにしてncurses-develを導入ます。
yum -y install ncurses-devel

configreコマンド実行時に--disable-xmldocオプションを付けて./configureしなおせという
言う旨のメッセージが表示されたら、指示に従ってください。


configreコマンド実行時に以下のエラーが出たら・・・
configure: WARNING: *** Asterisk now uses SQLite3 for the internal Asterisk database.
configure: WARNING: *** Please install the SQLite3 development package.

次のようにしてSQLiteを導入ます。
yum -y install sqlite, sqlite-devel

すべて問題なく .configure コマンドが完了したら、以下のコマンドを実行します。

make && make install
make samples
make config
make samples
chkconfig asterisk on

make configのときに以下のエラーが出たら・・・
We could not install init scripts for your distribution.

特にAmazonEC2へAsteriskを入れるときなどにこのエラーが出ますので、 次のようにします。
touch /etc/redhat-release

Asteriskの起動と停止   以下のようにしてAsteriskを起動します。

service asterisk start

実行時に以下のエラーが出たら・・・
/usr/sbin/asterisk: error while loading shared libraries:
libasteriskssl.so.1: cannot open shared object file: No such file or directory


次のようにします。
ldconfig

以下のようにしてAsteriskに接続します

asterisk -r

実行時に以下のエラーが出たら・・・
asterisk: error while loading shared libraries: libjansson.so.4: cannot open shared object file: No such file or directory

ldconfigでlibjansson.so.4をリンクできない場合はまずこのコマンドを実行します。
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local.conf

そして次のようにします。
ldconfig

以下のようにしてAsteriskを停止します。

service asterisk stop

ファイヤーウォールの設定   /etc/systconfig/iptablesに以下のエントリを追加します。


-A MY-Firewall-Settings -m state --state NEW -m udp -p udp --dport 5060 -j ACCEPT
-A MY-Firewall-Settings -m state --state NEW -m udp -p udp --dport 10000:20000 -j ACCEPT


トラブルシューティング   SIPフォンにつながった後音声が流れずにすぐ切れる場合

実行時に以下のエラーが出たら・・・
Retransmission timeout reached on transmission xxx@xxx.xxx.xxx.xxx:5060 for seqno 102 (Critical Response) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32000ms with no response
Hanging up call xxx@xxx.xxx.xxx.xx:5060 - no reply to our critical packet (see https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions).

NATの問題です。
externaddr = <グローバルIP>
localnet=192.168.0.0/255.255.0.0