Asterisk WSL

ニーズがあるかどうかわかりませんが。WindowsでAsteriskを動かす方法。
注意:この記事の内容はWindows 10 April 2018 Update以降で動作を確認しています。以前のWSLではLinux上のプログラムがlistenできなかったので正しく動作しません。

目次

基本条件

Windows 10のWindows Subsystem for Linux(WSL)を使用します。
まずこのあたりを参考にWindowsにUbuntuをインストールしてください。

https://docs.microsoft.com/ja-jp/windows/wsl/install-win10

このページではUbuntuを前提にセットアップを行います。
作業は基本的にWSLのbash上でsudo -sしてから行います。

パッケージの追加

apt-get install gcc g++
apt-get install make
apt-get install ncurses-dev
apt-get install sqlite
apt-get install libsqlite3-dev
apt-get install uuid-dev
apt-get install libjansson-dev
apt-get install libxml2-dev

Asteriskをコンパイルするのに最低限これらのパッケージが必要です。

Asteriskのコンパイルとインストール

ごく普通に

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar zxvf asterisk-13-current.tar.gz
cd asterisk-13.21.1
./configure
make
make install
make samples

で、Asteriskのインストールができます。make samplesやった後の設定ファイルはじゃまくさいので

cd /etc/asterisk
rm *
wget https://voip-info.jp/downloads/asterisk/conf/conf-sample-13_0627.tar.gz
tar zxvf conf-sample-13_0627.tar.gz

をやっておくとAsterisk_13_サンプル設定ファイルファイルが使えます(セキュリティには注意。デフォルトでインターネット上に放置しないように)。
PJSIP付きでコンパイルしたい場合には13.8.0以降ならば

./configure --with-pjproject-bundled

を実行してからmakeしてください。

Windowsファイアウォールの設定

Windows Defenderの設定を開きます(CortanaにWindows defとか入力すると見つけるのが早い)。
WSL001.png
左のメニューの詳細設定をクリック
WSL002.png
左の受信の規則をクリック
WSL003.png
右の新しい規則をクリック
WSL004.png
新しい規則でポートを指定
WSL005.png
ここではAsterisk標準で説明します。UDP5060を指定
WSL006.png
接続を許可するを指定
WSL007.png
プロファイルにプライベートとドメインを指定。
注意:この部分は使用しているネットワーク環境に応じて設定してください。
WSL008.png
適当な名前を付けて保存します。Asterisk-SIPなど。
同様にしてRTPも新しい規則として登録します。
WSL009.png
サンプル設定ファイル標準ならUDP10000-20000を開けておきます。

注:サンプル設定ファイルでPJSIPも使いたい場合には5070/UDPを開けるのも忘れないように。

Asteriskの起動と停止

bash上からフォアグラウンド起動するなら

asterisk -vvvc

で起動するとフォアグラウンド起動します。
バックグラウンド起動したければ普通に

asterisk

を実行すると裏に回るので、CLIに入りたい場合にはasterisk -vvvcrで入ります。
ただし、裏に回した状態でbashからexitしてもWindows上のプロセスとして残るので注意してください。
WSL010.png
まあデーモンになるので、この方が便利といえば便利なのですが。
Asteriskのmake時にmake configをやっておけば/etc/init.d/asterisk startも効きます。

ソフトフォンとACL調整

Asteriskを動かしているWindows機上で同時にソフトフォンを使おうとすると、サンプル設定ファイルを使用してる場合にはAsteriskのACLで弾かれます。sip.confの以下の箇所を調整してください。

;ACL
;安全措置のため192.168系以外は受け付けない
;他のネットワークを使用している場合にはここを変更すること
deny=0.0.0.0/0
permit=192.168.0.0/255.255.0.0
permit=127.0.0.0/255.0.0.0           <--この行を追加する

1行追加したらCLIでsip reloadして有効化してください。
同一マシン上のWindows上のソフトフォンから使用する場合、Asteriskサーバとして127.0.0.1(localhost)を指定すれば内線として使用できます。